Gateware Libraries  R6.5A
Beta Build
GVector.h
1 #ifndef GVECTOR_H
2 #define GVECTOR_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 GVectorUUIID =
26  {
27  0x22d6c3b1, 0x1150, 0x40ae,{ 0x83, 0xd8, 0x92, 0xc, 0x8c, 0x77, 0x89, 0x37 }
28  };
29 
31 
35  {
36  public:
37  //float vector
38 
40 
49  virtual GReturn AddVectorF(GVECTORF _vector1, GVECTORF _vector2, GVECTORF& _outVector) = 0;
50 
52 
61  virtual GReturn SubtractVectorF(GVECTORF _vector1, GVECTORF _vector2, GVECTORF& _outVector) = 0;
62 
64 
74  virtual GReturn ScaleF(GVECTORF _vector, float _scalar, GVECTORF& _outVector) = 0;
75 
77 
86  virtual GReturn DotF(GVECTORF _vector1, GVECTORF _vector2, float& _outValue) = 0;
87 
89 
99  virtual GReturn CrossVector2F(GVECTORF _vector1, GVECTORF _vector2, float& _outValue) = 0;
100 
102 
112  virtual GReturn CrossVector3F(GVECTORF _vector1, GVECTORF _vector2, GVECTORF& _outVector) = 0;
113 
115 
125  virtual GReturn VectorXMatrixF(GVECTORF _vector, GMATRIXF _matrix, GVECTORF& _outVector) = 0;
126 
128 
138  virtual GReturn TransformF(GVECTORF _vector, GMATRIXF _matrix, GVECTORF& _outVector) = 0;
139 
141 
150  virtual GReturn MagnitudeF(GVECTORF _vector, float& _outMagnitude) = 0;
151 
153 
162  virtual GReturn NormalizeF(GVECTORF _vector, GVECTORF& _outVector) = 0;
163 
165 
176  virtual GReturn LerpF(GVECTORF _vector1, GVECTORF _vector2, float _ratio, GVECTORF& _outVector) = 0;
177 
179 
194  virtual GReturn SplineF(GVECTORF _vector1, GVECTORF _vector2, GVECTORF _vector3, GVECTORF _vector4, float _ratio, GVECTORF& _outVector) = 0;
195 
196  //double vector
197 
199 
208  virtual GReturn AddVectorD(GVECTORD _vector1, GVECTORD _vector2, GVECTORD& _outVector) = 0;
209 
211 
220  virtual GReturn SubtractVectorD(GVECTORD _vector1, GVECTORD _vector2, GVECTORD& _outVector) = 0;
221 
223 
233  virtual GReturn ScaleD(GVECTORD _vector, double _scalar, GVECTORD& _outVector) = 0;
234 
236 
245  virtual GReturn DotD(GVECTORD _vector1, GVECTORD _vector2, double& _outValue) = 0;
246 
248 
258  virtual GReturn CrossVector2D(GVECTORD _vector1, GVECTORD _vector2, double& _outValue) = 0;
259 
261 
271  virtual GReturn CrossVector3D(GVECTORD _vector1, GVECTORD _vector2, GVECTORD& _outVector) = 0;
272 
274 
284  virtual GReturn VectorXMatrixD(GVECTORD _vector, GMATRIXD _matrix, GVECTORD& _outVector) = 0;
285 
287 
297  virtual GReturn TransformD(GVECTORD _vector, GMATRIXD _matrix, GVECTORD& _outVector) = 0;
298 
300 
309  virtual GReturn MagnitudeD(GVECTORD _vector, double& _outMagnitude) = 0;
310 
312 
321  virtual GReturn NormalizeD(GVECTORD _vector, GVECTORD& _outVector) = 0;
322 
324 
335  virtual GReturn LerpD(GVECTORD _vector1, GVECTORD _vector2, double _ratio, GVECTORD& _outVector) = 0;
336 
338 
353  virtual GReturn SplineD(GVECTORD _vector1, GVECTORD _vector2, GVECTORD _vector3, GVECTORD _vector4, double _ratio, GVECTORD& _outVector) = 0;
354 
355 
356  };
357 
359 
368  GATEWARE_EXPORT_IMPLICIT GReturn CreateGVector(GVector** _outVector);
369 
370  };
371 }
372 
373 
374 #endif
virtual GReturn SubtractVectorF(GVECTORF _vector1, GVECTORF _vector2, GVECTORF &_outVector)=0
Subtract two vector.
virtual GReturn LerpF(GVECTORF _vector1, GVECTORF _vector2, float _ratio, GVECTORF &_outVector)=0
Linear interpolates between two specified vectors.
virtual GReturn AddVectorD(GVECTORD _vector1, GVECTORD _vector2, GVECTORD &_outVector)=0
Add two vectors.
virtual GReturn CrossVector2D(GVECTORD _vector1, GVECTORD _vector2, double &_outValue)=0
Calculates the Cross product of the two vectors which are treated as 2 elements vector.
virtual GReturn ScaleF(GVECTORF _vector, float _scalar, GVECTORF &_outVector)=0
Scale the vector.
virtual GReturn DotD(GVECTORD _vector1, GVECTORD _vector2, double &_outValue)=0
Calculates the dot product of the two vectors.
Vector with 4 double elements.
Definition: GMathDefines.h:84
virtual GReturn TransformF(GVECTORF _vector, GMATRIXF _matrix, GVECTORF &_outVector)=0
Transform specified specified vector by specified matrix.
virtual GReturn AddVectorF(GVECTORF _vector1, GVECTORF _vector2, GVECTORF &_outVector)=0
Add two vectors.
virtual GReturn MagnitudeD(GVECTORD _vector, double &_outMagnitude)=0
Computes the magnitude of the specified vector.
virtual GReturn TransformD(GVECTORD _vector, GMATRIXD _matrix, GVECTORD &_outVector)=0
Transform specified specified vector by specified matrix.
Matrix with 4 double vectors which represent for each row.
Definition: GMathDefines.h:116
virtual GReturn ScaleD(GVECTORD _vector, double _scalar, GVECTORD &_outVector)=0
Scale the vector.
virtual GReturn LerpD(GVECTORD _vector1, GVECTORD _vector2, double _ratio, GVECTORD &_outVector)=0
Spherical linear interpolates between two specified vectors.
virtual GReturn CrossVector3F(GVECTORF _vector1, GVECTORF _vector2, GVECTORF &_outVector)=0
Calculates the cross product of the two vectors which are treated as 3 elements vectors.
virtual GReturn NormalizeD(GVECTORD _vector, GVECTORD &_outVector)=0
Normalizes the specified vector.
virtual GReturn SubtractVectorD(GVECTORD _vector1, GVECTORD _vector2, GVECTORD &_outVector)=0
Subtract two vector.
Vector functions.
Definition: GVector.h:34
virtual GReturn MagnitudeF(GVECTORF _vector, float &_outMagnitude)=0
Computes the magnitude of the specified vector.
virtual GReturn NormalizeF(GVECTORF _vector, GVECTORF &_outVector)=0
Normalizes the specified vector.
virtual GReturn SplineD(GVECTORD _vector1, GVECTORD _vector2, GVECTORD _vector3, GVECTORD _vector4, double _ratio, GVECTORD &_outVector)=0
Calculate the interpolation between two specified 3D vectors.
virtual GReturn VectorXMatrixF(GVECTORF _vector, GMATRIXF _matrix, GVECTORF &_outVector)=0
multiply the specified vector by the specified matrix.
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 CrossVector2F(GVECTORF _vector1, GVECTORF _vector2, float &_outValue)=0
Calculates the Cross product of the two vectors which are treated as 2 elements vector.
virtual GReturn CrossVector3D(GVECTORD _vector1, GVECTORD _vector2, GVECTORD &_outVector)=0
multiply the specified vector by the specified matrix.
GATEWARE_EXPORT_IMPLICIT GReturn CreateGVector(GVector **_outVector)
end GVector class
virtual GReturn SplineF(GVECTORF _vector1, GVECTORF _vector2, GVECTORF _vector3, GVECTORF _vector4, float _ratio, GVECTORF &_outVector)=0
Calculate the interpolation on a cuvre which connects two specified 3D vectors.
virtual GReturn DotF(GVECTORF _vector1, GVECTORF _vector2, float &_outValue)=0
Calculates the dot product of the two vectors.
The core namespace to which all Gateware interfaces/structures/defines must belong.
Definition: GAudio.h:20
virtual GReturn VectorXMatrixD(GVECTORD _vector, GMATRIXD _matrix, GVECTORD &_outVector)=0
multiply the specified vector by the specified matrix.
GReturn
Listing of common error codes returned by Gateware functions.
Definition: GDefines.h:53
Matrix with 4 float vectors which represent for each row.
Definition: GMathDefines.h:99