Tesseract  3.02
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
xform2d.cpp File Reference
#include "xform2d.h"
#include <math.h>

Go to the source code of this file.

Functions

void InitMatrix (MATRIX_2D *M)
 
void CopyMatrix (MATRIX_2D *A, MATRIX_2D *B)
 
void TranslateMatrix (MATRIX_2D *M, FLOAT32 X, FLOAT32 Y)
 
void ScaleMatrix (MATRIX_2D *M, FLOAT32 X, FLOAT32 Y)
 
void MirrorMatrixInX (MATRIX_2D *M)
 
void MirrorMatrixInY (MATRIX_2D *M)
 
void MirrorMatrixInXY (MATRIX_2D *M)
 
FLOAT32 MapX (MATRIX_2D *M, FLOAT32 X, FLOAT32 Y)
 
FLOAT32 MapY (MATRIX_2D *M, FLOAT32 X, FLOAT32 Y)
 
void MapPoint (MATRIX_2D *M, const FPOINT &A, FPOINT *B)
 
FLOAT32 MapDx (MATRIX_2D *M, FLOAT32 DX, FLOAT32 DY)
 
FLOAT32 MapDy (MATRIX_2D *M, FLOAT32 DX, FLOAT32 DY)
 
void RotateMatrix (MATRIX_2D_PTR Matrix, FLOAT32 Angle)
 

Function Documentation

void CopyMatrix ( MATRIX_2D A,
MATRIX_2D B 
)

Definition at line 37 of file xform2d.cpp.

37  {
38  B->a = A->a;
39  B->b = A->b;
40  B->c = A->c;
41  B->d = A->d;
42  B->tx = A->tx;
43  B->ty = A->ty;
44 }
FLOAT32 tx
Definition: xform2d.h:28
FLOAT32 b
Definition: xform2d.h:28
FLOAT32 c
Definition: xform2d.h:28
FLOAT32 a
Definition: xform2d.h:28
FLOAT32 ty
Definition: xform2d.h:28
FLOAT32 d
Definition: xform2d.h:28
void InitMatrix ( MATRIX_2D M)

Include Files and Type Defines

Public Code

Definition at line 28 of file xform2d.cpp.

28  {
29  M->a = 1;
30  M->b = 0;
31  M->c = 0;
32  M->d = 1;
33  M->tx = 0;
34  M->ty = 0;
35 }
FLOAT32 tx
Definition: xform2d.h:28
FLOAT32 b
Definition: xform2d.h:28
FLOAT32 c
Definition: xform2d.h:28
FLOAT32 a
Definition: xform2d.h:28
FLOAT32 ty
Definition: xform2d.h:28
FLOAT32 d
Definition: xform2d.h:28
FLOAT32 MapDx ( MATRIX_2D M,
FLOAT32  DX,
FLOAT32  DY 
)

Definition at line 75 of file xform2d.cpp.

75  {
76  return M->a * DX + M->c * DY;
77 }
FLOAT32 c
Definition: xform2d.h:28
FLOAT32 a
Definition: xform2d.h:28
FLOAT32 MapDy ( MATRIX_2D M,
FLOAT32  DX,
FLOAT32  DY 
)

Definition at line 79 of file xform2d.cpp.

79  {
80  return M->b * DX + M->d * DY;
81 }
FLOAT32 b
Definition: xform2d.h:28
FLOAT32 d
Definition: xform2d.h:28
void MapPoint ( MATRIX_2D M,
const FPOINT A,
FPOINT B 
)

Definition at line 70 of file xform2d.cpp.

70  {
71  B->x = MapX(M, A.x, A.y);
72  B->y = MapY(M, A.x, A.y);
73 }
FLOAT32 x
Definition: fpoint.h:31
FLOAT32 MapX(MATRIX_2D *M, FLOAT32 X, FLOAT32 Y)
Definition: xform2d.cpp:62
FLOAT32 MapY(MATRIX_2D *M, FLOAT32 X, FLOAT32 Y)
Definition: xform2d.cpp:66
FLOAT32 y
Definition: fpoint.h:31
FLOAT32 MapX ( MATRIX_2D M,
FLOAT32  X,
FLOAT32  Y 
)

Definition at line 62 of file xform2d.cpp.

62  {
63  return M->a * (X) + (M)->c * (Y) + (M)->tx;
64 }
FLOAT32 a
Definition: xform2d.h:28
FLOAT32 MapY ( MATRIX_2D M,
FLOAT32  X,
FLOAT32  Y 
)

Definition at line 66 of file xform2d.cpp.

66  {
67  return M->b * X + M->d * Y + M->ty;
68 }
FLOAT32 b
Definition: xform2d.h:28
FLOAT32 ty
Definition: xform2d.h:28
FLOAT32 d
Definition: xform2d.h:28
void MirrorMatrixInX ( MATRIX_2D M)

Definition at line 58 of file xform2d.cpp.

58 {ScaleMatrix(M, -1, 1);}
void ScaleMatrix(MATRIX_2D *M, FLOAT32 X, FLOAT32 Y)
Definition: xform2d.cpp:51
void MirrorMatrixInXY ( MATRIX_2D M)

Definition at line 60 of file xform2d.cpp.

60 {ScaleMatrix(M, -1, -1);}
void ScaleMatrix(MATRIX_2D *M, FLOAT32 X, FLOAT32 Y)
Definition: xform2d.cpp:51
void MirrorMatrixInY ( MATRIX_2D M)

Definition at line 59 of file xform2d.cpp.

59 {ScaleMatrix(M, 1, -1);}
void ScaleMatrix(MATRIX_2D *M, FLOAT32 X, FLOAT32 Y)
Definition: xform2d.cpp:51
void RotateMatrix ( MATRIX_2D_PTR  Matrix,
FLOAT32  Angle 
)

Definition at line 85 of file xform2d.cpp.

85  {
86 /*
87  ** Parameters:
88  ** Matrix transformation matrix to rotate
89  ** Angle angle to rotate matrix
90  ** Globals: none
91  ** Operation:
92  ** Rotate the coordinate system (as specified by Matrix) about
93  ** its origin by Angle radians. In matrix notation the
94  ** effect is as follows:
95  **
96  ** Matrix = R X Matrix
97  **
98  ** where R is the following matrix
99  **
100  ** cos Angle sin Angle 0
101  ** -sin Angle cos Angle 0
102  ** 0 0 1
103  ** Return: none
104  ** Exceptions: none
105  ** History: 7/27/89, DSJ, Create.
106  */
107  FLOAT32 Cos, Sin;
108  FLOAT32 NewA, NewB;
109 
110  Cos = cos ((double) Angle);
111  Sin = sin ((double) Angle);
112 
113  NewA = Matrix->a * Cos + Matrix->c * Sin;
114  NewB = Matrix->b * Cos + Matrix->d * Sin;
115  Matrix->c = Matrix->a * -Sin + Matrix->c * Cos;
116  Matrix->d = Matrix->b * -Sin + Matrix->d * Cos;
117  Matrix->a = NewA;
118  Matrix->b = NewB;
119 
120 } /* RotateMatrix */
FLOAT32 b
Definition: xform2d.h:28
float FLOAT32
Definition: host.h:111
FLOAT32 c
Definition: xform2d.h:28
FLOAT32 a
Definition: xform2d.h:28
FLOAT32 d
Definition: xform2d.h:28
void ScaleMatrix ( MATRIX_2D M,
FLOAT32  X,
FLOAT32  Y 
)

Definition at line 51 of file xform2d.cpp.

51  {
52  M->a *= X;
53  M->b *= X;
54  M->c *= Y;
55  M->d *= Y;
56 }
FLOAT32 b
Definition: xform2d.h:28
FLOAT32 c
Definition: xform2d.h:28
FLOAT32 a
Definition: xform2d.h:28
FLOAT32 d
Definition: xform2d.h:28
void TranslateMatrix ( MATRIX_2D M,
FLOAT32  X,
FLOAT32  Y 
)

Definition at line 46 of file xform2d.cpp.

46  {
47  M->tx += M->a * X + M->c * Y;
48  M->ty += M->b * X + M->d * Y;
49 }
FLOAT32 tx
Definition: xform2d.h:28
FLOAT32 b
Definition: xform2d.h:28
FLOAT32 c
Definition: xform2d.h:28
FLOAT32 a
Definition: xform2d.h:28
FLOAT32 ty
Definition: xform2d.h:28
FLOAT32 d
Definition: xform2d.h:28