Gateware Libraries  6.3.A
Beta Build
GMatrix.h
1 #ifndef GMATRIX_H
2 #define GMATRIX_H
3 
14 #include "../G_Core/GSingleThreaded.h"
16 #include "GMathDefines.h"
17 
19 namespace GW
20 {
22  namespace MATH
23  {
25  static const GUUIID GMatrixUUIID =
26  {
27  0x3cca5fd9, 0x63aa, 0x48c1,{ 0x8c, 0x67, 0x36, 0xc6, 0x86, 0x9a, 0x6a, 0xff }
28  };
29 
31 
35  {
36  public:
37  //float Matrix
38 
40 
49  virtual GReturn AddMatrixF(GMATRIXF _matrix1, GMATRIXF _matrix2, GMATRIXF& _outMatrix) = 0;
50 
52 
61  virtual GReturn SubtractMatrixF(GMATRIXF _matrix1, GMATRIXF _matrix2, GMATRIXF& _outMatrix) = 0;
62 
64 
73  virtual GReturn MultiplyMatrixF(GMATRIXF _matrix1, GMATRIXF _matrix2, GMATRIXF& _outMatrix) = 0;
74 
76 
87  virtual GReturn VectorXMatrixF(GMATRIXF _matrix, GVECTORF _vector, GVECTORF& _outVector) = 0;
88 
90 
98  virtual GReturn ConvertQuaternionF(GQUATERNIONF _quaternion, GMATRIXF& _outMatrix) = 0;
99 
101 
110  virtual GReturn MultiplyNumF(GMATRIXF _matrix, float _scalar, GMATRIXF& _outMatrix) = 0;
111 
113 
121  virtual GReturn DeterminantF(GMATRIXF _matrix, float& _outValue) = 0;
122 
124 
132  virtual GReturn TransposeF(GMATRIXF _matrix, GMATRIXF& _outMatrix) = 0;
133 
135 
144  virtual GReturn InverseF(GMATRIXF _matrix, GMATRIXF& _outMatrix) = 0;
145 
147 
154  virtual GReturn IdentityF(GMATRIXF& _outMatrix) = 0;
155 
157 
167  virtual GReturn GetRotationF(GMATRIXF _matrix, GQUATERNIONF& _outQuaternion) = 0;
168 
170 
179  virtual GReturn GetTranslationF(GMATRIXF _matrix, GVECTORF& _outMatrix) = 0;
180 
182 
191  virtual GReturn GetScaleF(GMATRIXF _matrix, GVECTORF& _outMatrix) = 0;
192 
194 
205  virtual GReturn RotationXF(GMATRIXF _matrix, float _radian, GMATRIXF& _outMatrix) = 0;
206 
208 
219  virtual GReturn RotationYF(GMATRIXF _matrix, float _radian, GMATRIXF& _outMatrix) = 0;
220 
222 
233  virtual GReturn RotationZF(GMATRIXF _matrix, float _radian, GMATRIXF& _outMatrix) = 0;
234 
236 
248  virtual GReturn RotationYawPitchRollF(float _yaw, float _pitch, float _roll, GMATRIXF& _outMatrix) = 0;
249 
251 
262  virtual GReturn RotationByVectorF(GVECTORF _vector, float _radian, GMATRIXF& _outMatrix) = 0;
263 
265 
276  virtual GReturn TranslatelocalF(GMATRIXF _matrix, GVECTORF _vector, GMATRIXF& _outMatrix) = 0;
277 
279 
289  virtual GReturn ScalingF(GMATRIXF _matrix, GVECTORF _vector, GMATRIXF& _outMatirx) = 0;
290 
292 
303  virtual GReturn LerpF(GMATRIXF _matrix1, GMATRIXF _matrix2, float _ratio, GMATRIXF& _outMatrix) = 0;
304 
306 
318  virtual GReturn ProjectionLHF(float _fovY, float _aspect, float _zn, float _zf, GMATRIXF& _outMatrix) = 0;
319 
321 
332  virtual GReturn LookAtLHF(GVECTORF _eye, GVECTORF _at, GVECTORF _up, GMATRIXF& _outMatrix) = 0;
333 
334 
335  //double Matrix
336 
338 
347  virtual GReturn AddMatrixD(GMATRIXD _matrix1, GMATRIXD _matrix2, GMATRIXD& _outMatrix) = 0;
348 
350 
359  virtual GReturn SubtractMatrixD(GMATRIXD _matrix1, GMATRIXD _matrix2, GMATRIXD& _outMatrix) = 0;
360 
362 
371  virtual GReturn MultiplyMatrixD(GMATRIXD _matrix1, GMATRIXD _matrix2, GMATRIXD& _outMatrix) = 0;
372 
373 
375 
386  virtual GReturn VectorXMatrixD(GMATRIXD _matrix, GVECTORD _vector, GVECTORD& _outVector) = 0;
387 
389 
397  virtual GReturn ConvertQuaternionD(GQUATERNIOND _quaternion, GMATRIXD& _outMatrix) = 0;
398 
400 
409  virtual GReturn MultiplyNumD(GMATRIXD _matrix, double _scalar, GMATRIXD& _outMatrix) = 0;
410 
412 
420  virtual GReturn DeterminantD(GMATRIXD _matrix, double& _outValue) = 0;
421 
423 
431  virtual GReturn TransposeD(GMATRIXD _matrix, GMATRIXD& _outMatrix) = 0;
432 
434 
443  virtual GReturn InverseD(GMATRIXD _matrix, GMATRIXD& _outMatrix) = 0;
444 
446 
453  virtual GReturn IdentityD(GMATRIXD& _outMatrix) = 0;
454 
456 
466  virtual GReturn GetRotationD(GMATRIXD _matrix, GQUATERNIOND& _outQuaternion) = 0;
467 
469 
478  virtual GReturn GetTranslationD(GMATRIXD _matrix, GVECTORD& _outMatrix) = 0;
479 
481 
490  virtual GReturn GetScaleD(GMATRIXD _matrix, GVECTORD& _outMatrix) = 0;
491 
493 
504  virtual GReturn RotationXD(GMATRIXD _matrix, double _radian, GMATRIXD& _outMatrix) = 0;
505 
507 
518  virtual GReturn RotationYD(GMATRIXD _matrix, double _radian, GMATRIXD& _outMatrix) = 0;
519 
521 
532  virtual GReturn RotationZD(GMATRIXD _matrix, double _radian, GMATRIXD& _outMatrix) = 0;
533 
535 
547  virtual GReturn RotationYawPitchRollD(double _yaw, double _pitch, double _roll, GMATRIXD& _outMatrix) = 0;
548 
550 
560  virtual GReturn RotationByVectorD(GVECTORD _vector, double _radian, GMATRIXD& _outMatrix) = 0;
561 
563 
575  virtual GReturn TranslatelocalD(GMATRIXD _matrix, GVECTORD _vector, GMATRIXD& _outMatrix) = 0;
576 
578 
588  virtual GReturn ScalingD(GMATRIXD _matrix, GVECTORD _vector, GMATRIXD& _outMatrix) = 0;
589 
591 
602  virtual GReturn LerpD(GMATRIXD _matrix1, GMATRIXD _matrix2, double _ratio, GMATRIXD& _outMatrix) = 0;
603 
605 
616  virtual GReturn ProjectionLHD(double _fovY, double _aspect, double _zn, double _zf, GMATRIXD& _outMatrix) = 0;
617 
619 
630  virtual GReturn LookAtLHD(GVECTORD _eye, GVECTORD _at, GVECTORD _up, GMATRIXD& _outMatrix) = 0;
631 
632  };
633 
635 
644  GATEWARE_EXPORT_IMPLICIT GReturn CreateGMatrix(GMatrix** _outMatrix);
645  };
646 }
647 
648 
649 #endif
virtual GReturn LookAtLHD(GVECTORD _eye, GVECTORD _at, GVECTORD _up, GMATRIXD &_outMatrix)=0
Builds a left-handed view matrix.
To hold all math structs and variables.
Definition: GMathDefines.h:68
Matrix with 4 double vectors which represent for each row.
Definition: GMathDefines.h:116
Quaternion with 4 double elements.
Definition: GMathDefines.h:148
virtual GReturn RotationZF(GMATRIXF _matrix, float _radian, GMATRIXF &_outMatrix)=0
Roatate the specified matrix around the z-axis by multiplying a left-handed rotation matrix...
virtual GReturn RotationYD(GMATRIXD _matrix, double _radian, GMATRIXD &_outMatrix)=0
Roatate the specified matrix around the y-axis by multiplying a left-handed rotation matrix...
virtual GReturn TranslatelocalF(GMATRIXF _matrix, GVECTORF _vector, GMATRIXF &_outMatrix)=0
Translate the matrix by the specified vector.
virtual GReturn GetRotationF(GMATRIXF _matrix, GQUATERNIONF &_outQuaternion)=0
Get the quaternion which represents the roataion of the specified matrix.
virtual GReturn LerpF(GMATRIXF _matrix1, GMATRIXF _matrix2, float _ratio, GMATRIXF &_outMatrix)=0
Linearly interpolates between two matrices.
virtual GReturn MultiplyMatrixF(GMATRIXF _matrix1, GMATRIXF _matrix2, GMATRIXF &_outMatrix)=0
Multiply two specified matirxs.
virtual GReturn InverseF(GMATRIXF _matrix, GMATRIXF &_outMatrix)=0
Inverse the specified matirx.
virtual GReturn ConvertQuaternionF(GQUATERNIONF _quaternion, GMATRIXF &_outMatrix)=0
Convert the specified quaternion to a matrix.
virtual GReturn DeterminantD(GMATRIXD _matrix, double &_outValue)=0
Calculate the determinant of the specified matirx.
virtual GReturn GetScaleF(GMATRIXF _matrix, GVECTORF &_outMatrix)=0
Get the scaling matrix from the specified matrix.
virtual GReturn GetTranslationD(GMATRIXD _matrix, GVECTORD &_outMatrix)=0
Get the translation matrix from the specified matrix.
virtual GReturn InverseD(GMATRIXD _matrix, GMATRIXD &_outMatrix)=0
Inverse the specified matirx.
virtual GReturn VectorXMatrixD(GMATRIXD _matrix, GVECTORD _vector, GVECTORD &_outVector)=0
Multiply the specified matrix by the specified vector.
virtual GReturn SubtractMatrixF(GMATRIXF _matrix1, GMATRIXF _matrix2, GMATRIXF &_outMatrix)=0
Subtract two specified matirxs.
virtual GReturn TransposeF(GMATRIXF _matrix, GMATRIXF &_outMatrix)=0
Transpose the specified matirx.
virtual GReturn GetScaleD(GMATRIXD _matrix, GVECTORD &_outMatrix)=0
Get the scaling matrix from the specified matrix.
virtual GReturn ConvertQuaternionD(GQUATERNIOND _quaternion, GMATRIXD &_outMatrix)=0
Convert the specified quaternion to a matrix.
GReturn
Listing of common error codes returned by Gateware functions.
Definition: GDefines.h:53
virtual GReturn MultiplyNumF(GMATRIXF _matrix, float _scalar, GMATRIXF &_outMatrix)=0
Scale the matrix.
virtual GReturn AddMatrixF(GMATRIXF _matrix1, GMATRIXF _matrix2, GMATRIXF &_outMatrix)=0
Add two specified matirxs.
virtual GReturn LookAtLHF(GVECTORF _eye, GVECTORF _at, GVECTORF _up, GMATRIXF &_outMatrix)=0
Builds a left-handed view matrix.
Quaternion with 4 float elements.
Definition: GMathDefines.h:132
virtual GReturn AddMatrixD(GMATRIXD _matrix1, GMATRIXD _matrix2, GMATRIXD &_outMatrix)=0
Add two specified matirxs.
virtual GReturn VectorXMatrixF(GMATRIXF _matrix, GVECTORF _vector, GVECTORF &_outVector)=0
Multiply the specified matrix by the specified vector.
virtual GReturn ScalingF(GMATRIXF _matrix, GVECTORF _vector, GMATRIXF &_outMatirx)=0
Scale the matrix by the specified vector.
virtual GReturn RotationByVectorD(GVECTORD _vector, double _radian, GMATRIXD &_outMatrix)=0
Builds a rotation matrix based on specified vector and an angle in radian.
virtual GReturn TranslatelocalD(GMATRIXD _matrix, GVECTORD _vector, GMATRIXD &_outMatrix)=0
Translate the matrix by the specified vector.
virtual GReturn DeterminantF(GMATRIXF _matrix, float &_outValue)=0
Calculate the determinant of the specified matirx.
virtual GReturn RotationXD(GMATRIXD _matrix, double _radian, GMATRIXD &_outMatrix)=0
Roatate the specified matrix around the x-axis by multiplying a left-handed rotation matrix...
virtual GReturn IdentityD(GMATRIXD &_outMatrix)=0
Identity the specified matrix.
Vector with 4 double elements.
Definition: GMathDefines.h:84
virtual GReturn LerpD(GMATRIXD _matrix1, GMATRIXD _matrix2, double _ratio, GMATRIXD &_outMatrix)=0
Linearly interpolates between two matrices.
virtual GReturn GetTranslationF(GMATRIXF _matrix, GVECTORF &_outMatrix)=0
Get the translation matrix from the specified matrix.
Matrix with 4 float vectors which represent for each row.
Definition: GMathDefines.h:99
virtual GReturn ProjectionLHF(float _fovY, float _aspect, float _zn, float _zf, GMATRIXF &_outMatrix)=0
Builds a left-handed perspective matrix.
virtual GReturn MultiplyMatrixD(GMATRIXD _matrix1, GMATRIXD _matrix2, GMATRIXD &_outMatrix)=0
Multiply two specified matirxs.
virtual GReturn RotationByVectorF(GVECTORF _vector, float _radian, GMATRIXF &_outMatrix)=0
Builds a rotation matrix based on specified vector and an angle in radian.
virtual GReturn RotationYawPitchRollF(float _yaw, float _pitch, float _roll, GMATRIXF &_outMatrix)=0
Builds a matrix based on specified yaw, pitch, and roll angles in radian.
The core namespace to which all Gateware interfaces/structures/defines must belong.
Definition: GAudio.h:20
virtual GReturn RotationYF(GMATRIXF _matrix, float _radian, GMATRIXF &_outMatrix)=0
Roatate the specified matrix around the y-axis by multiplying a left-handed rotation matrix...
virtual GReturn RotationYawPitchRollD(double _yaw, double _pitch, double _roll, GMATRIXD &_outMatrix)=0
Builds a matrix based on specified yaw, pitch, and roll angles in radian.
This interface is only used to label and query interfaces which are not designed internally to suppor...
Definition: GSingleThreaded.h:31
virtual GReturn ScalingD(GMATRIXD _matrix, GVECTORD _vector, GMATRIXD &_outMatrix)=0
Scale the matrix by the specified vector.
GATEWARE_EXPORT_IMPLICIT GReturn CreateGMatrix(GMatrix **_outMatrix)
end GMatrix class
virtual GReturn IdentityF(GMATRIXF &_outMatrix)=0
Identity the specified matrix.
virtual GReturn MultiplyNumD(GMATRIXD _matrix, double _scalar, GMATRIXD &_outMatrix)=0
Scale the matrix.
Matrix functions.
Definition: GMatrix.h:34
virtual GReturn TransposeD(GMATRIXD _matrix, GMATRIXD &_outMatrix)=0
Transpose the specified matirx.
virtual GReturn SubtractMatrixD(GMATRIXD _matrix1, GMATRIXD _matrix2, GMATRIXD &_outMatrix)=0
Subtract two specified matirxs.
virtual GReturn GetRotationD(GMATRIXD _matrix, GQUATERNIOND &_outQuaternion)=0
Get the quaternion which represents the roataion of the specified matrix.
virtual GReturn ProjectionLHD(double _fovY, double _aspect, double _zn, double _zf, GMATRIXD &_outMatrix)=0
Builds a left-handed perspective matrix.
virtual GReturn RotationZD(GMATRIXD _matrix, double _radian, GMATRIXD &_outMatrix)=0
Roatate the specified matrix around the z-axis by multiplying a left-handed rotation matrix...
virtual GReturn RotationXF(GMATRIXF _matrix, float _radian, GMATRIXF &_outMatrix)=0
Roatate the specified matrix around the x-axis by multiplying a left-handed rotation matrix...