Flair
Framework Libre Air
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties
Vector3D.h
Go to the documentation of this file.
1 // %flair:license{
2 // This file is part of the Flair framework distributed under the
3 // CECILL-C License, Version 1.0.
4 // %flair:license}
5 
13 #ifndef VECTOR3D_H
14 #define VECTOR3D_H
15 
16 #include <stddef.h>
17 
18 namespace flair {
19 namespace core {
20 class Vector2D;
21 class RotationMatrix;
22 class Quaternion;
23 
28 class Vector3D {
29 public:
39  Vector3D(float x = 0, float y = 0, float z = 0);
40 
45  ~Vector3D();
46 
50  float x;
51 
55  float y;
56 
60  float z;
61 
67  void RotateX(float value);
68 
74  void RotateXDeg(float value);
75 
81  void RotateY(float value);
82 
88  void RotateYDeg(float value);
89 
95  void RotateZ(float value);
96 
102  void RotateZDeg(float value);
103 
109  void Rotate(const RotationMatrix &matrix);
110 
119  void Rotate(const Quaternion &quaternion);
120 
128  void To2Dxy(Vector2D &vector) const;
129 
137  Vector2D To2Dxy(void) const;
138 
144  float GetNorm(void) const;
145 
149  void Normalize(void);
150 
159  void Saturate(const Vector3D &min, const Vector3D &max);
160 
169  void Saturate(float min, float max);
170 
178  void Saturate(const Vector3D &value);
179 
188  void Saturate(float value);
189 
190  float &operator[](size_t idx);
191  const float &operator[](size_t idx) const;
192  Vector3D &operator=(const Vector3D &vector);
193  Vector3D &operator+=(const Vector3D &vector);
194  Vector3D &operator-=(const Vector3D &vector);
195 
196 private:
197 };
198 
208 Vector3D operator+(const Vector3D &vectorA, const Vector3D &vectorB);
209 
219 Vector3D operator-(const Vector3D &vectorA, const Vector3D &vectorB);
220 
229 Vector3D operator-(const Vector3D &vector);
230 
240 Vector3D operator/(const Vector3D &vector, float coeff);
241 
251 Vector3D operator*(const Vector3D &vectorA, const Vector3D &vectorB);
252 
262 Vector3D operator*(const Vector3D &vector, float coeff);
263 
273 Vector3D operator*(float coeff, const Vector3D &vector);
274 
284 Vector3D CrossProduct(const Vector3D &vectorA, const Vector3D &vectorB);
285 
295 float DotProduct(const Vector3D &vectorA, const Vector3D &vectorB);
296 
297 } // end namespace core
298 } // end namespace flair
299 
300 #endif // VECTOR3D_H
void RotateZDeg(float value)
z axis rotation
Vector3D CrossProduct(const Vector3D &vectorA, const Vector3D &vectorB)
Cross product.
Class defining a 3D vector.
Definition: Vector3D.h:28
Class defining a 2D vector.
Definition: Vector2D.h:23
Class defining a rotation matrix.
Definition: RotationMatrix.h:25
void RotateZ(float value)
z axis rotation
float z
z
Definition: Vector3D.h:60
void Normalize(void)
Normalize.
~Vector3D()
Destructor.
Vector2D operator/(const Vector2D &vector, float coeff)
Divid.
Vector2D To2Dxy(void) const
Convert to a Vector2D.
float DotProduct(const Vector3D &vectorA, const Vector3D &vectorB)
Dot product.
void Saturate(const Vector3D &min, const Vector3D &max)
Saturate.
void RotateY(float value)
y axis rotation
void RotateYDeg(float value)
y axis rotation
void Rotate(const RotationMatrix &matrix)
rotation
Vector3D(float x=0, float y=0, float z=0)
Constructor.
float GetNorm(void) const
Norm.
float y
y
Definition: Vector3D.h:55
Quaternion operator*(Quaternion const &quaternionA, Quaternion const &quaterniontB)
Multiply.
void RotateX(float value)
x axis rotation
Quaternion operator-(Quaternion const &quaternionA, Quaternion const &quaterniontB)
Substract.
float x
x
Definition: Vector3D.h:50
void RotateXDeg(float value)
x axis rotation
Quaternion operator+(Quaternion const &quaterniontA, Quaternion const &quaterniontB)
Add.
Class defining a quaternion.
Definition: Quaternion.h:25