Gateware Libraries  R6.5A
Beta Build
GQuaternion.h
1 #ifndef GQUATERNION_H
2 #define GQUATERNION_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 GQuaternionUUIID =
26  {
27  0x50aab369, 0xedfd, 0x4d04,{ 0x95, 0x3b, 0x7c, 0xdf, 0x71, 0x62, 0xbd, 0xc0 }
28  };
29 
31 
35  {
36  // All Gateware API interfaces contain no variables & are pure virtual.
37  public:
38  //float quaternion
39 
41 
50  virtual GReturn AddQuaternionF(GQUATERNIONF _quaternion1, GQUATERNIONF _quaternion2, GQUATERNIONF& _outQuaternion) = 0;
51 
53 
62  virtual GReturn SubtractQuaternionF(GQUATERNIONF _quaternion1, GQUATERNIONF _quaternion2, GQUATERNIONF& _outQuaternion) = 0;
63 
65 
74  virtual GReturn MultiplyQuaternionF(GQUATERNIONF _quaternion1, GQUATERNIONF _quaternion2, GQUATERNIONF& _outQuaternion) = 0;
75 
77 
86  virtual GReturn ScaleF(GQUATERNIONF _quaternion, float _scalar, GQUATERNIONF& _outQuaternion) = 0;
87 
89 
98  virtual GReturn SetByVectorAngleF(GVECTORF _vector, float _radian, GQUATERNIONF& _outQuaternion) = 0;
99 
101 
111  virtual GReturn SetByMatrixF(GMATRIXF _matrix, GQUATERNIONF& _outQuaternion) = 0;
112 
114 
123  virtual GReturn DotF(GQUATERNIONF _quaternion1, GQUATERNIONF _quaternion2, float& _outValue) = 0;
124 
126 
135  virtual GReturn CrossF(GQUATERNIONF _quaternion1, GQUATERNIONF _quaternion2, GVECTORF& _outVector) = 0;
136 
138 
146  virtual GReturn ConjugateF(GQUATERNIONF _quaternion, GQUATERNIONF& _outQuaternion) = 0;
147 
149 
158  virtual GReturn InverseF(GQUATERNIONF _quaternion, GQUATERNIONF& _outQuaternion) = 0;
159 
161 
170  virtual GReturn MagnitudeF(GQUATERNIONF _quaternion, float& _outMagnitude) = 0;
171 
173 
182  virtual GReturn NormalizeF(GQUATERNIONF _quaternion, GQUATERNIONF& _outQuaternion) = 0;
183 
185 
192  virtual GReturn IdentityF(GQUATERNIONF& _outQuaternion) = 0;
193 
195 
206  virtual GReturn LerpF(GQUATERNIONF _quaternion1, GQUATERNIONF _quaternion2, float _ratio, GQUATERNIONF& _outQuaternion) = 0;
207 
209 
221  virtual GReturn SlerpF(GQUATERNIONF _quaternion1, GQUATERNIONF _quaternion2, float _ratio, GQUATERNIONF& _outQuaternion) = 0;
222 
223 
224 
225  //double quaternion
226 
228 
237  virtual GReturn AddQuaternionD(GQUATERNIOND _quaternion1, GQUATERNIOND _quaternion2, GQUATERNIOND& _outQuaternion) = 0;
238 
240 
249  virtual GReturn SubtractQuaternionD(GQUATERNIOND _quaternion1, GQUATERNIOND _quaternion2, GQUATERNIOND& _outQuaternion) = 0;
250 
252 
261  virtual GReturn MultiplyQuaternionD(GQUATERNIOND _quaternion1, GQUATERNIOND _quaternion2, GQUATERNIOND& _outQuaternion) = 0;
262 
264 
273  virtual GReturn ScaleD(GQUATERNIOND _quaternion, double _scalar, GQUATERNIOND& _outQuaternion) = 0;
274 
276 
285  virtual GReturn SetByVectorAngleD(GVECTORD _vector, double _radain, GQUATERNIOND& _outQuaternion) = 0;
286 
288 
298  virtual GReturn SetByMatrixD(GMATRIXD _matrix, GQUATERNIOND& _outQuaternion) = 0;
299 
301 
310  virtual GReturn DotD(GQUATERNIOND _quaternion1, GQUATERNIOND _quaternion2, double& _outQuaternion) = 0;
311 
313 
322  virtual GReturn CrossD(GQUATERNIOND _quaternion1, GQUATERNIOND _quaternion2, GVECTORD& _outVector) = 0;
323 
325 
333  virtual GReturn ConjugateD(GQUATERNIOND _quaternion, GQUATERNIOND& _outQuaternion) = 0;
334 
336 
345  virtual GReturn InverseD(GQUATERNIOND _quaternion, GQUATERNIOND& _outQuaternion) = 0;
346 
348 
357  virtual GReturn MagnitudeD(GQUATERNIOND _quaternion, double& _outMagnitude) = 0;
358 
360 
369  virtual GReturn NormalizeD(GQUATERNIOND _quaternion, GQUATERNIOND& _outQuaternion) = 0;
370 
372 
379  virtual GReturn IdentityD(GQUATERNIOND& _outQuaternion) = 0;
380 
382 
393  virtual GReturn LerpD(GQUATERNIOND _quaternion1, GQUATERNIOND _quaternion2, float _ratio, GQUATERNIOND& _outQuaternion) = 0;
394 
396 
408  virtual GReturn SlerpD(GQUATERNIOND _quaternion1, GQUATERNIOND _quaternion2, double _ratio, GQUATERNIOND& _outQuaternion) = 0;
409 
410 
411 
412 
413  };
414 
415 
417 
426  GATEWARE_EXPORT_IMPLICIT GReturn CreateGQuaternion(GQuaternion** _outQuaternion);
427 
428  };
429 }
430 
431 
432 #endif
virtual GReturn LerpF(GQUATERNIONF _quaternion1, GQUATERNIONF _quaternion2, float _ratio, GQUATERNIONF &_outQuaternion)=0
Linear interpolate between two specified quaternions.
virtual GReturn ScaleF(GQUATERNIONF _quaternion, float _scalar, GQUATERNIONF &_outQuaternion)=0
Scale the quaternion.
virtual GReturn ConjugateD(GQUATERNIOND _quaternion, GQUATERNIOND &_outQuaternion)=0
Conjugate the specified quaternion.
virtual GReturn ScaleD(GQUATERNIOND _quaternion, double _scalar, GQUATERNIOND &_outQuaternion)=0
Scale the quaternion.
virtual GReturn MultiplyQuaternionF(GQUATERNIONF _quaternion1, GQUATERNIONF _quaternion2, GQUATERNIONF &_outQuaternion)=0
Multiply two quaternions.
virtual GReturn CrossF(GQUATERNIONF _quaternion1, GQUATERNIONF _quaternion2, GVECTORF &_outVector)=0
Calculates the cross product of the two specified quaternions.
virtual GReturn InverseD(GQUATERNIOND _quaternion, GQUATERNIOND &_outQuaternion)=0
Inverse the specified quaternion.
GATEWARE_EXPORT_IMPLICIT GReturn CreateGQuaternion(GQuaternion **_outQuaternion)
end GQuaternion class
virtual GReturn DotD(GQUATERNIOND _quaternion1, GQUATERNIOND _quaternion2, double &_outQuaternion)=0
Calculates the dot product of the two specified quaternions.
virtual GReturn ConjugateF(GQUATERNIONF _quaternion, GQUATERNIONF &_outQuaternion)=0
Conjugate the specified quaternion.
virtual GReturn AddQuaternionD(GQUATERNIOND _quaternion1, GQUATERNIOND _quaternion2, GQUATERNIOND &_outQuaternion)=0
Add two quaternions.
Vector with 4 double elements.
Definition: GMathDefines.h:84
Quaternion with 4 float elements.
Definition: GMathDefines.h:132
virtual GReturn SlerpD(GQUATERNIOND _quaternion1, GQUATERNIOND _quaternion2, double _ratio, GQUATERNIOND &_outQuaternion)=0
Spherical linear interpolates between two specified quaternions.
virtual GReturn SubtractQuaternionD(GQUATERNIOND _quaternion1, GQUATERNIOND _quaternion2, GQUATERNIOND &_outQuaternion)=0
Subtract two quaternions.
Matrix with 4 double vectors which represent for each row.
Definition: GMathDefines.h:116
virtual GReturn IdentityD(GQUATERNIOND &_outQuaternion)=0
Identity the specified quaternion.
virtual GReturn MagnitudeF(GQUATERNIONF _quaternion, float &_outMagnitude)=0
Calculate the magnitude of quaternion.
virtual GReturn InverseF(GQUATERNIONF _quaternion, GQUATERNIONF &_outQuaternion)=0
Inverse the specified quaternion.
virtual GReturn SetByVectorAngleF(GVECTORF _vector, float _radian, GQUATERNIONF &_outQuaternion)=0
Set the quaternion by the specified vector and the specified angle.
Quaternion functions.
Definition: GQuaternion.h:34
virtual GReturn SlerpF(GQUATERNIONF _quaternion1, GQUATERNIONF _quaternion2, float _ratio, GQUATERNIONF &_outQuaternion)=0
Spherical linear interpolates between two specified quaternions.
virtual GReturn LerpD(GQUATERNIOND _quaternion1, GQUATERNIOND _quaternion2, float _ratio, GQUATERNIOND &_outQuaternion)=0
Linear interpolate between two specified quaternions.
virtual GReturn AddQuaternionF(GQUATERNIONF _quaternion1, GQUATERNIONF _quaternion2, GQUATERNIONF &_outQuaternion)=0
Add two quaternions.
virtual GReturn SetByMatrixF(GMATRIXF _matrix, GQUATERNIONF &_outQuaternion)=0
Set the quaternion by the specified matrix.
virtual GReturn IdentityF(GQUATERNIONF &_outQuaternion)=0
Identity the specified quaternion.
virtual GReturn DotF(GQUATERNIONF _quaternion1, GQUATERNIONF _quaternion2, float &_outValue)=0
Calculates the dot product of the two specified quaternions.
To hold all math structs and variables.
Definition: GMathDefines.h:68
This interface is only used to label and query interfaces which are not designed internally to suppor...
Definition: GSingleThreaded.h:31
virtual GReturn SetByMatrixD(GMATRIXD _matrix, GQUATERNIOND &_outQuaternion)=0
Set the quaternion by the specified matrix.
Quaternion with 4 double elements.
Definition: GMathDefines.h:148
virtual GReturn SubtractQuaternionF(GQUATERNIONF _quaternion1, GQUATERNIONF _quaternion2, GQUATERNIONF &_outQuaternion)=0
Subtract two quaternions.
virtual GReturn NormalizeD(GQUATERNIOND _quaternion, GQUATERNIOND &_outQuaternion)=0
Normalize the specified quaternion.
The core namespace to which all Gateware interfaces/structures/defines must belong.
Definition: GAudio.h:20
virtual GReturn NormalizeF(GQUATERNIONF _quaternion, GQUATERNIONF &_outQuaternion)=0
Normalize the specified quaternion.
virtual GReturn MultiplyQuaternionD(GQUATERNIOND _quaternion1, GQUATERNIOND _quaternion2, GQUATERNIOND &_outQuaternion)=0
Multiply two quaternions.
virtual GReturn SetByVectorAngleD(GVECTORD _vector, double _radain, GQUATERNIOND &_outQuaternion)=0
Set the quaternion by the specified vector and the specified angle.
virtual GReturn CrossD(GQUATERNIOND _quaternion1, GQUATERNIOND _quaternion2, GVECTORD &_outVector)=0
Calculates the cross product of the two specified quaternions.
GReturn
Listing of common error codes returned by Gateware functions.
Definition: GDefines.h:53
virtual GReturn MagnitudeD(GQUATERNIOND _quaternion, double &_outMagnitude)=0
Calculate the magnitude of quaternion.
Matrix with 4 float vectors which represent for each row.
Definition: GMathDefines.h:99