#include <tvu_maths.h>
Inheritance diagram for CTMaths::
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 () | |
CTPoint3D& | Move (TPOINT3D &pt) |
CTPoint3D& | Rotate (TPOINT3D &pt) |
CTPoint3D& | Expand (TPOINT3D &pt) |
CTPoint3D& | RotateMove (TPOINT3D &pt) |
CTPoint3D& | Project (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 | |
CTObject* | While (CTList pParams) |
CTObject* | Sin (CTList pParams) |
CTObject* | Cos (CTList pParams) |
CTObject* | Tang (CTList pParams) |
CTObject* | Cotang (CTList pParams) |
CTObject* | Qrt (CTList pParams) |
CTObject* | Sqrt (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... |
|
Constructor/destructor.
|
|
Mathematical caculations.
00062 { return (x1-r <= x2) && (x2 <= x1+r); } |
|
A point is inside a polygon.
|
|
Apply all of previous oprerators.
|
|
Angle calculation.
00080 { return r*180./PI; } |
|
Segment calculation.
|
|
ax^2 + bx + c = 0.
|
|
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.
|
|
a1x + b1y + c1 = 0 a2x + b2y + c2 = 0.
|
|
Angle with the face (X, Y): -PI/2. -> PI/2.,.
00111 : -PI/2. -> PI/2., 00112 { return asin(z/Vect3DNorm(x, y, z)); } |
|
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); } |
|
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); } |
|
Angle with the face (Y, Z): -PI/2. -> PI/2.,.
00113 : -PI/2. -> PI/2., 00114 { return asin(x/Vect3DNorm(x, y, z)); } |
|
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); } |
|
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); } |
|
Angle with the face (Z, X): -PI/2. -> PI/2.,.
00115 : -PI/2. -> PI/2., 00116 { return asin(y/Vect3DNorm(x, y, z)); } |
|
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); } |
|
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); } |
|
3D vector calculation.
00097 { return x*x + y*y + z*z; } |
|
Relative angle of v2 with v1.
00091 { return VectAngleY(x2, y2) - VectAngleY(x1, y1); } |
|
Relative angle with X: 0 -> 2PI.
00088 : 0 -> 2PI 00089 { return VectAngleY(y, -x); } |
|
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); } |
|
Angle with Y.
00093 { *nx = x + distance*sin(Angle); *ny = y + distance*cos(Angle); } |
|
2D vector calculation.
00084 { return x*x + y*y; } |
|
PI, PI/2, PI/4, 2PI, 3PI, 4PI.
|
|
PI, PI/2, PI/4, 2PI, 3PI, 4PI.
|
|
PI, PI/2, PI/4, 2PI, 3PI, 4PI.
|
|
PI, PI/2, PI/4, 2PI, 3PI, 4PI.
|
|
PI, PI/2, PI/4, 2PI, 3PI, 4PI.
|
|
PI, PI/2, PI/4, 2PI, 3PI, 4PI.
|
|
PI, PI/2, PI/4, 2PI, 3PI, 4PI.
|
|
Temp: Alpha, Beta, Gamma.
|
|
Temp: Alpha, Beta, Gamma.
|
|
Temp: Alpha, Beta, Gamma.
|
|
Private data.
|
|
Buffer.
|
|
Temp: Alpha, Beta, Gamma.
|
|
Temp: Alpha, Beta, Gamma.
|
|
Temp: Alpha, Beta, Gamma.
|