Main Page   Class Hierarchy   Data Structures   File List   Data Fields   Globals  

CTMaths Class Reference

For mathematical calculation. More...

#include <tvu_maths.h>

Inheritance diagram for CTMaths::

CTObject

Public Types

enum  {
  INTERSEC_NONE = 0x00, INTERSEC_YES = 0x77, INTERSEC_WELL = 0x11, INTERSEC_L1 = 0x01,
  INTERSEC_L1_1 = 0x02, INTERSEC_L1_2 = 0x04, INTERSEC_L2 = 0x10, INTERSEC_L2_1 = 0x20,
  INTERSEC_L2_2 = 0x40
}

Public Methods

 CTMaths ()
 Constructor/destructor. More...

 ~CTMaths ()
CTPoint3DMove (TPOINT3D &pt)
CTPoint3DRotate (TPOINT3D &pt)
CTPoint3DExpand (TPOINT3D &pt)
CTPoint3DRotateMove (TPOINT3D &pt)
CTPoint3DProject (TPOINT3D &pt)
void PrepareMove (CTPoint3D &Coordinate)
 Apply all of previous oprerators. More...

void PrepareRotate (CTAngles &Angles)
void PrepareExpand (CTSize3D &Size)
void PrepareProject (CTPoint3D &Coordinate, CTAngles &Angles, CTSize3D &Size)
void CreateTransformMatrix (TLPSTR lpMatrix, TBOOL bTo=TTRUE)

Static Public Methods

TBOOL Equal (TINT x1, TINT x2, TINT r=0)
 Mathematical caculations. More...

TBOOL Equal (double x1, double x2, double r=EPSILON)
TBOOL NotEqual (double x1, double x2, double r=EPSILON)
TBOOL Zero (double x, double r=EPSILON)
TBOOL NotZero (double x, double r=EPSILON)
TBOOL InInterval (double x, double x1, double x2)
TBOOL NotInInterval (double x, double x1, double x2)
TINT SolveEquation (double a, double b, double *x, TBOOL TestOnly=TFALSE)
 Equation and equations system solving Return the number of solutions: -1 ~ uncountable TestOnly: On/Off that only pour verify if the equation has atleast one solution ax + b = 0. More...

TINT SolveEquation (double a, double b, double c, double *x, TBOOL TestOnly=TFALSE)
 ax^2 + bx + c = 0. More...

TINT SolveEquations (double a1, double b1, double c1, double a2, double b2, double c2, double *x, double *y, TBOOL TestOnly=TFALSE)
 a1x + b1y + c1 = 0 a2x + b2y + c2 = 0. More...

double R2D (double r)
 Angle calculation. More...

double D2R (double d)
double ValidAngle (double a)
double VectNormSquare (double x, double y)
 2D vector calculation. More...

double VectNorm (double x, double y)
double VectAngleY (double x, double y)
 Relative angle with Y: 0. -> 2PI. More...

double VectAngleX (double x, double y)
 Relative angle with X: 0 -> 2PI. More...

double VectAngleVect (double x1, double y1, double x2, double y2)
 Relative angle of v2 with v1. More...

void VectGetNextPoint (double x, double y, double Angle, double distance, double *nx, double *ny)
 Angle with Y. More...

void VectGetNextPoint (double xVect, double yVect, double x, double y, double distance, double *nx, double *ny)
double Vect3DNormSquare (double x, double y, double z)
 3D vector calculation. More...

double Vect3DNorm (double x, double y, double z)
double Vect3DAngleZ_Y (double x, double y, double z)
 Relative angle with Z in the face (Y, Z): 0. -> 2PI ==> Rotate around X. More...

double Vect3DAngleY_Z (double x, double y, double z)
 Relative angle with Y in the face (Y, Z): 0. -> 2PI ==> Rotate around X. More...

double Vect3DAngleZ_X (double x, double y, double z)
 Relative angle with Z in the face (X, Z): 0. -> 2PI ==> Rotate around Y. More...

double Vect3DAngleX_Z (double x, double y, double z)
 Relative angle with X in the face (X, Z): 0. -> 2PI ==> Rotate around Y. More...

double Vect3DAngleY_X (double x, double y, double z)
 Relative angle with Y in the face (X, Y): 0. -> 2PI ==> Rotate around Z. More...

double Vect3DAngleX_Y (double x, double y, double z)
 Relative angle with X in the face (X, Y): 0. -> 2PI ==> Rotate around Z. More...

double Vect3DAngleXY (double x, double y, double z)
 Angle with the face (X, Y): -PI/2. -> PI/2.,. More...

double Vect3DAngleYZ (double x, double y, double z)
 Angle with the face (Y, Z): -PI/2. -> PI/2.,. More...

double Vect3DAngleZX (double x, double y, double z)
 Angle with the face (Z, X): -PI/2. -> PI/2.,. More...

void Vect3DGetNextPoint (double xVect, double yVect, double zVect, double x, double y, double z, double distance, double *nx, double *ny, double *nz)
TBOOL SegmentIntersection (double x1, double y1, double x2, double y2, double x3, double y3, double x4, double y4, double *x, double *y)
 Segment calculation. More...

TBOOL SegmentIntersectionValid (double x1, double y1, double x2, double y2, double x3, double y3, double x4, double y4, double *x, double *y)
TINT SegmentRelation (double x1, double y1, double x2, double y2, double x3, double y3, double x4, double y4, double *x, double *y)
TBOOL IsPointInsidePolygon (CTList pPolygon, double px, double py, double pz)
 A point is inside a polygon. More...

TVOID RegisterCodedFunctions ()

Static Public Attributes

double PI
 PI, PI/2, PI/4, 2PI, 3PI, 4PI. More...

double PI_2
 PI, PI/2, PI/4, 2PI, 3PI, 4PI. More...

double PI_4
 PI, PI/2, PI/4, 2PI, 3PI, 4PI. More...

double PIx2
 PI, PI/2, PI/4, 2PI, 3PI, 4PI. More...

double PIx3
 PI, PI/2, PI/4, 2PI, 3PI, 4PI. More...

double PIx4
 PI, PI/2, PI/4, 2PI, 3PI, 4PI. More...

double EPSILON
 PI, PI/2, PI/4, 2PI, 3PI, 4PI. More...

CTMaths Default

Static Protected Methods

CTObjectWhile (CTList pParams)
CTObjectSin (CTList pParams)
CTObjectCos (CTList pParams)
CTObjectTang (CTList pParams)
CTObjectCotang (CTList pParams)
CTObjectQrt (CTList pParams)
CTObjectSqrt (CTList pParams)

Protected Attributes

CTPoint3D m_Position
 Private data. More...

CTAngles m_Angles
CTSize3D m_Size
double sin_a
 Temp: Alpha, Beta, Gamma. More...

double cos_a
 Temp: Alpha, Beta, Gamma. More...

double sin_b
 Temp: Alpha, Beta, Gamma. More...

double cos_b
 Temp: Alpha, Beta, Gamma. More...

double sin_g
 Temp: Alpha, Beta, Gamma. More...

double cos_g
 Temp: Alpha, Beta, Gamma. More...

double xX
double yX
double zX
double xY
double yY
double zY
double xZ
double yZ
double zZ
CTPoint3D m_TempPoint
 Buffer. More...


Detailed Description

For mathematical calculation.


Constructor & Destructor Documentation

CTMaths::CTMaths ( )
 

Constructor/destructor.


Member Function Documentation

TBOOL CTMaths::Equal ( TINT x1,
TINT x2,
TINT r = 0 ) [inline, static]
 

Mathematical caculations.

00062 { return (x1-r <= x2) && (x2 <= x1+r); }

TBOOL CTMaths::IsPointInsidePolygon ( CTList pPolygon,
double px,
double py,
double pz ) [static]
 

A point is inside a polygon.

void CTMaths::PrepareMove ( CTPoint3D & Coordinate )
 

Apply all of previous oprerators.

double CTMaths::R2D ( double r ) [inline, static]
 

Angle calculation.

00080 { return r*180./PI; }

TBOOL CTMaths::SegmentIntersection ( double x1,
double y1,
double x2,
double y2,
double x3,
double y3,
double x4,
double y4,
double * x,
double * y ) [static]
 

Segment calculation.

TINT CTMaths::SolveEquation ( double a,
double b,
double c,
double * x,
TBOOL TestOnly = TFALSE ) [static]
 

ax^2 + bx + c = 0.

TINT CTMaths::SolveEquation ( double a,
double b,
double * x,
TBOOL TestOnly = TFALSE ) [static]
 

Equation and equations system solving Return the number of solutions: -1 ~ uncountable TestOnly: On/Off that only pour verify if the equation has atleast one solution ax + b = 0.

TINT CTMaths::SolveEquations ( double a1,
double b1,
double c1,
double a2,
double b2,
double c2,
double * x,
double * y,
TBOOL TestOnly = TFALSE ) [static]
 

a1x + b1y + c1 = 0 a2x + b2y + c2 = 0.

double CTMaths::Vect3DAngleXY ( double x,
double y,
double z ) [inline, static]
 

Angle with the face (X, Y): -PI/2. -> PI/2.,.

00111                                                                                                          : -PI/2. -> PI/2., 
00112                     { return asin(z/Vect3DNorm(x, y, z)); }

double CTMaths::Vect3DAngleX_Y ( double x,
double y,
double z ) [inline, static]
 

Relative angle with X in the face (X, Y): 0. -> 2PI ==> Rotate around Z.

00109                                                                                                                        : 0. -> 2PI ==> Rotate around Z
00110                     { return VectAngleX(x, y); }

double CTMaths::Vect3DAngleX_Z ( double x,
double y,
double z ) [inline, static]
 

Relative angle with X in the face (X, Z): 0. -> 2PI ==> Rotate around Y.

00105                                                                                                                        : 0. -> 2PI ==> Rotate around Y
00106                     { return VectAngleX(x, z); }

double CTMaths::Vect3DAngleYZ ( double x,
double y,
double z ) [inline, static]
 

Angle with the face (Y, Z): -PI/2. -> PI/2.,.

00113                                                                                                          : -PI/2. -> PI/2., 
00114                     { return asin(x/Vect3DNorm(x, y, z)); }

double CTMaths::Vect3DAngleY_X ( double x,
double y,
double z ) [inline, static]
 

Relative angle with Y in the face (X, Y): 0. -> 2PI ==> Rotate around Z.

00107                                                                                                                        : 0. -> 2PI ==> Rotate around Z
00108                     { return VectAngleY(x, y); }

double CTMaths::Vect3DAngleY_Z ( double x,
double y,
double z ) [inline, static]
 

Relative angle with Y in the face (Y, Z): 0. -> 2PI ==> Rotate around X.

00101                                                                                                                        : 0. -> 2PI ==> Rotate around X
00102                     { return VectAngleX(y, z); }

double CTMaths::Vect3DAngleZX ( double x,
double y,
double z ) [inline, static]
 

Angle with the face (Z, X): -PI/2. -> PI/2.,.

00115                                                                                                          : -PI/2. -> PI/2., 
00116                     { return asin(y/Vect3DNorm(x, y, z)); }

double CTMaths::Vect3DAngleZ_X ( double x,
double y,
double z ) [inline, static]
 

Relative angle with Z in the face (X, Z): 0. -> 2PI ==> Rotate around Y.

00103                                                                                                                        : 0. -> 2PI ==> Rotate around Y
00104                     { return VectAngleY(x, z); }

double CTMaths::Vect3DAngleZ_Y ( double x,
double y,
double z ) [inline, static]
 

Relative angle with Z in the face (Y, Z): 0. -> 2PI ==> Rotate around X.

00099                                                                                                                        : 0. -> 2PI ==> Rotate around X
00100                     { return VectAngleY(y, z); }

double CTMaths::Vect3DNormSquare ( double x,
double y,
double z ) [inline, static]
 

3D vector calculation.

00097 { return x*x + y*y + z*z; }

double CTMaths::VectAngleVect ( double x1,
double y1,
double x2,
double y2 ) [inline, static]
 

Relative angle of v2 with v1.

00091                     { return VectAngleY(x2, y2) - VectAngleY(x1, y1); }

double CTMaths::VectAngleX ( double x,
double y ) [inline, static]
 

Relative angle with X: 0 -> 2PI.

00088                                                                                       : 0 -> 2PI
00089                     { return VectAngleY(y, -x); }

double CTMaths::VectAngleY ( double x,
double y ) [inline, static]
 

Relative angle with Y: 0. -> 2PI.

00086                                                                                       : 0. -> 2PI
00087                     { double a = asin(x/VectNorm(x, y)); return (y >= 0.) ? ((a >= 0.) ? a : (2*PI+a)) : (PI-a); }

void CTMaths::VectGetNextPoint ( double x,
double y,
double Angle,
double distance,
double * nx,
double * ny ) [inline, static]
 

Angle with Y.

00093                     { *nx = x + distance*sin(Angle); *ny = y + distance*cos(Angle); }

double CTMaths::VectNormSquare ( double x,
double y ) [inline, static]
 

2D vector calculation.

00084 { return x*x + y*y; }


Field Documentation

double CTMaths::EPSILON [static]
 

PI, PI/2, PI/4, 2PI, 3PI, 4PI.

double CTMaths::PI [static]
 

PI, PI/2, PI/4, 2PI, 3PI, 4PI.

double CTMaths::PI_2 [static]
 

PI, PI/2, PI/4, 2PI, 3PI, 4PI.

double CTMaths::PI_4 [static]
 

PI, PI/2, PI/4, 2PI, 3PI, 4PI.

double CTMaths::PIx2 [static]
 

PI, PI/2, PI/4, 2PI, 3PI, 4PI.

double CTMaths::PIx3 [static]
 

PI, PI/2, PI/4, 2PI, 3PI, 4PI.

double CTMaths::PIx4 [static]
 

PI, PI/2, PI/4, 2PI, 3PI, 4PI.

double CTMaths::cos_a [protected]
 

Temp: Alpha, Beta, Gamma.

double CTMaths::cos_b [protected]
 

Temp: Alpha, Beta, Gamma.

double CTMaths::cos_g [protected]
 

Temp: Alpha, Beta, Gamma.

CTPoint3D CTMaths::m_Position [protected]
 

Private data.

CTPoint3D CTMaths::m_TempPoint [protected]
 

Buffer.

double CTMaths::sin_a [protected]
 

Temp: Alpha, Beta, Gamma.

double CTMaths::sin_b [protected]
 

Temp: Alpha, Beta, Gamma.

double CTMaths::sin_g [protected]
 

Temp: Alpha, Beta, Gamma.


The documentation for this class was generated from the following file:
Generated at Wed Aug 6 15:59:00 2003 for TVU's libraries for video surveillance: by doxygen1.2.8.1 written by Dimitri van Heesch, © 1997-2001