Tesseract  3.02
tesseract-ocr/classify/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.

                                            {
  B->a = A->a;
  B->b = A->b;
  B->c = A->c;
  B->d = A->d;
  B->tx = A->tx;
  B->ty = A->ty;
}
void InitMatrix ( MATRIX_2D M)

---------------------------------------------------------------------------- Include Files and Type Defines ---------------------------------------------------------------------------- ---------------------------------------------------------------------------- Public Code ----------------------------------------------------------------------------

Definition at line 28 of file xform2d.cpp.

                              {
  M->a = 1;
  M->b = 0;
  M->c = 0;
  M->d = 1;
  M->tx = 0;
  M->ty = 0;
}
FLOAT32 MapDx ( MATRIX_2D M,
FLOAT32  DX,
FLOAT32  DY 
)

Definition at line 75 of file xform2d.cpp.

                                                    {
  return M->a * DX + M->c * DY;
}
FLOAT32 MapDy ( MATRIX_2D M,
FLOAT32  DX,
FLOAT32  DY 
)

Definition at line 79 of file xform2d.cpp.

                                                    {
  return M->b * DX + M->d * DY;
}
void MapPoint ( MATRIX_2D M,
const FPOINT A,
FPOINT B 
)

Definition at line 70 of file xform2d.cpp.

                                                        {
  B->x = MapX(M, A.x, A.y);
  B->y = MapY(M, A.x, A.y);
}
FLOAT32 MapX ( MATRIX_2D M,
FLOAT32  X,
FLOAT32  Y 
)

Definition at line 62 of file xform2d.cpp.

                                                 {
  return M->a * (X) + (M)->c * (Y) + (M)->tx;
}
FLOAT32 MapY ( MATRIX_2D M,
FLOAT32  X,
FLOAT32  Y 
)

Definition at line 66 of file xform2d.cpp.

                                                 {
  return M->b * X + M->d * Y + M->ty;
}
void MirrorMatrixInX ( MATRIX_2D M)

Definition at line 58 of file xform2d.cpp.

{ScaleMatrix(M, -1, 1);}
void MirrorMatrixInXY ( MATRIX_2D M)

Definition at line 60 of file xform2d.cpp.

{ScaleMatrix(M, -1, -1);}
void MirrorMatrixInY ( MATRIX_2D M)

Definition at line 59 of file xform2d.cpp.

{ScaleMatrix(M, 1, -1);}
void RotateMatrix ( MATRIX_2D_PTR  Matrix,
FLOAT32  Angle 
)

Definition at line 85 of file xform2d.cpp.

                                                       {
/*
 ** Parameters:
 **   Matrix    transformation matrix to rotate
 **   Angle   angle to rotate matrix
 ** Globals: none
 ** Operation:
 **   Rotate the coordinate system (as specified by Matrix) about
 **   its origin by Angle radians.  In matrix notation the
 **   effect is as follows:
 **
 **     Matrix = R X Matrix
 **
 **   where R is the following matrix
 **
 **     cos Angle sin Angle 0
 **     -sin Angle  cos Angle 0
 **     0   0   1
 ** Return: none
 ** Exceptions: none
 ** History: 7/27/89, DSJ, Create.
 */
  FLOAT32 Cos, Sin;
  FLOAT32 NewA, NewB;

  Cos = cos ((double) Angle);
  Sin = sin ((double) Angle);

  NewA = Matrix->a * Cos + Matrix->c * Sin;
  NewB = Matrix->b * Cos + Matrix->d * Sin;
  Matrix->c = Matrix->a * -Sin + Matrix->c * Cos;
  Matrix->d = Matrix->b * -Sin + Matrix->d * Cos;
  Matrix->a = NewA;
  Matrix->b = NewB;

}                                /* RotateMatrix */
void ScaleMatrix ( MATRIX_2D M,
FLOAT32  X,
FLOAT32  Y 
)

Definition at line 51 of file xform2d.cpp.

                                                     {
  M->a *= X;
  M->b *= X;
  M->c *= Y;
  M->d *= Y;
}
void TranslateMatrix ( MATRIX_2D M,
FLOAT32  X,
FLOAT32  Y 
)

Definition at line 46 of file xform2d.cpp.

                                                         {
  M->tx += M->a * X + M->c * Y;
  M->ty += M->b * X + M->d * Y;
}