Vector3D.hpp
Go to the documentation of this file.
1 
6 #ifndef Vector3D_HPP
7 #define Vector3D_HPP 1
8 
9 #include <vector>
10 #include <cmath>
11 
12 using std::vector;
13 
15 class Vector3D
16 {
17 public:
18 
22  Vector3D(void);
23 
29  Vector3D(double ix, double iy, double iz);
30 
34  Vector3D(const Vector3D& v);
35 
41  void Set(double ix, double iy, double iz);
42 
44  double x;
45 
47  double y;
48 
50  double z;
51 
56  Vector3D& operator+=(Vector3D const& v);
57 
62  Vector3D& operator-=(Vector3D const& v);
63 
68  Vector3D& operator=(Vector3D const& v);
69 
74  Vector3D& operator*=(double s);
75 
80  bool operator==(Vector3D const& v);
81 
85  void RotateX(double a);
86 
90  void RotateY(double a);
91 
95  void RotateZ(double a);
96 
99  void Round();
100 };
101 
106 double abs(Vector3D const& v);
107 
113 Vector3D operator+(Vector3D const& v1, Vector3D const& v2);
114 
120 Vector3D operator-(Vector3D const& v1, Vector3D const& v2);
121 
127 Vector3D operator*(double d, Vector3D const& v);
128 
134 Vector3D operator*(Vector3D const& v, double d);
135 
141 Vector3D operator/(Vector3D const& v, double d);
142 
148 double ScalarProd(Vector3D const& v1, Vector3D const& v2);
149 
155 double CalcAngle(Vector3D const& v1, Vector3D const& v2);
156 
162 double Projection(Vector3D const& v1, Vector3D const& v2);
163 
169 Vector3D RotateX(Vector3D const& v, double a );
170 
176 Vector3D RotateY(Vector3D const& v, double a);
177 
183 Vector3D RotateZ(Vector3D const& v, double a);
184 
190 Vector3D Reflect(Vector3D const& v, Vector3D const& normal);
191 
197 double distance(Vector3D const& v1, Vector3D const& v2);
198 
204 Vector3D CrossProduct(Vector3D const& v1, Vector3D const& v2);
205 
212 void Split(vector<Vector3D> const & vIn, vector<double> & vX, vector<double> & vY, vector<double> & vZ);
213 
214 #endif // Vector3D_HPP
void RotateY(double a)
Rotates the vector around the Y axes.
Definition: Vector3D.cpp:116
Vector3D CrossProduct(Vector3D const &v1, Vector3D const &v2)
Returns the cross product of two vectors.
Definition: Vector3D.cpp:213
double z
Component in the z direction.
Definition: Vector3D.hpp:50
Vector3D & operator-=(Vector3D const &v)
Subtraction.
Definition: Vector3D.cpp:91
Vector3D & operator*=(double s)
Scalar product.
Definition: Vector3D.cpp:75
Vector3D & operator+=(Vector3D const &v)
Addition.
Definition: Vector3D.cpp:83
Vector3D Reflect(Vector3D const &v, Vector3D const &normal)
Reflect vector.
Definition: Vector3D.cpp:203
double Projection(Vector3D const &v1, Vector3D const &v2)
Calculates the projection of one vector in the direction of the second.
Definition: Vector3D.cpp:193
double CalcAngle(Vector3D const &v1, Vector3D const &v2)
Returns the angle between two vectors (in radians)
Definition: Vector3D.cpp:198
void RotateX(double a)
Rotates the vector around the X axes.
Definition: Vector3D.cpp:106
void Set(double ix, double iy, double iz)
Set vector components.
Definition: Vector3D.cpp:58
Vector3D(void)
Null constructor.
Definition: Vector3D.cpp:49
Vector3D & operator=(Vector3D const &v)
Assignment operator.
Definition: Vector3D.cpp:65
3D Mathematical vector
Definition: Vector3D.hpp:15
Vector3D operator*(double d, Vector3D const &v)
Scalar product.
Definition: Vector3D.cpp:162
double ScalarProd(Vector3D const &v1, Vector3D const &v2)
Scalar product of two vectors.
Definition: Vector3D.cpp:185
double y
Component in the y direction.
Definition: Vector3D.hpp:47
Vector3D operator/(Vector3D const &v, double d)
Scalar division.
Definition: Vector3D.cpp:176
void RotateZ(double a)
Rotates the vector around the Z axes.
Definition: Vector3D.cpp:126
void Round()
Integer round of the vector&#39;s entries.
Definition: Vector3D.cpp:136
void Split(vector< Vector3D > const &vIn, vector< double > &vX, vector< double > &vY, vector< double > &vZ)
Splits a vector of 3D points to components.
Definition: Vector3D.cpp:222
double abs(Vector3D const &v)
Norm of a vector.
Definition: Vector3D.cpp:44
Vector3D operator+(Vector3D const &v1, Vector3D const &v2)
Term by term addition.
Definition: Vector3D.cpp:143
double x
Component in the x direction.
Definition: Vector3D.hpp:44
double distance(Vector3D const &v1, Vector3D const &v2)
Calculates the distance between two vectors.
Definition: Vector3D.cpp:208
Vector3D operator-(Vector3D const &v1, Vector3D const &v2)
Term by term subtraction.
Definition: Vector3D.cpp:152
bool operator==(Vector3D const &v)
Compare 3D-Vectors (up to an arbitrary precision)
Definition: Vector3D.cpp:101