Path Tracer
DoubleVec3D.h
Go to the documentation of this file.
1 #ifndef DEF_DOUBLEVEC3D
2 #define DEF_DOUBLEVEC3D
3 
4 #include "InterfaceGestion.h"
5 
190 class DoubleVec3D {
191 private:
192  double x;
193  double y;
194  double z;
195 
196 protected:
197  bool normalised;
198 
199 public:
200  DoubleVec3D(double val = 0);
201  DoubleVec3D(double x, double y, double z);
202  DoubleVec3D(const DoubleVec3D& vec);
203  DoubleVec3D(const FbxDouble3& vec);
204  DoubleVec3D(const FbxDouble4& vec);
205 
206  double getX() const;
207  double getY() const;
208  double getZ() const;
209 
210  virtual void setVals(double x, double y, double z);
211 
212  void operator+=(const DoubleVec3D& vec);
213  void operator-=(const DoubleVec3D& vec);
214  void operator*=(const double& val);
215  void operator/=(const double& val);
216 
217  void normalise();
218  bool isNormalised() const;
219  bool isZero() const;
220 };
221 
222 DoubleVec3D operator+(const DoubleVec3D& vec1, const DoubleVec3D& vec2);
223 DoubleVec3D operator-(const DoubleVec3D& vec);
224 DoubleVec3D operator-(const DoubleVec3D& vec1, const DoubleVec3D& vec2);
225 DoubleVec3D operator*(const DoubleVec3D& vec, const double& val);
226 DoubleVec3D operator*(const double& val, const DoubleVec3D& vec);
227 DoubleVec3D operator/(const DoubleVec3D& vec, const double& val);
228 
229 std::ostream& operator<<(std::ostream& stream, const DoubleVec3D& vec);
230 
231 DoubleVec3D crossProd(const DoubleVec3D& vec1, const DoubleVec3D& vec2);
232 double dotProd(const DoubleVec3D& vec1, const DoubleVec3D& vec2);
233 double length(const DoubleVec3D& vec);
234 
235 void to_json(json& j, const DoubleVec3D& vec);
236 void from_json(const json& j, DoubleVec3D& vec);
237 
238 #endif
DoubleVec3D operator-(const DoubleVec3D &vec)
Unary minus operator.
Definition: DoubleVec3D.cpp:89
DoubleVec3D operator*(const DoubleVec3D &vec, const double &val)
Multiplication by a scalar operator (commutative).
Definition: DoubleVec3D.cpp:102
DoubleVec3D operator+(const DoubleVec3D &vec1, const DoubleVec3D &vec2)
Sum operator.
Definition: DoubleVec3D.cpp:83
void to_json(json &j, const DoubleVec3D &vec)
Conversion to json.
Definition: DoubleVec3D.cpp:140
double length(const DoubleVec3D &vec)
Gives the norm of the vector.
Definition: DoubleVec3D.cpp:136
double dotProd(const DoubleVec3D &vec1, const DoubleVec3D &vec2)
Dot product.
Definition: DoubleVec3D.cpp:132
DoubleVec3D operator/(const DoubleVec3D &vec, const double &val)
Division by a scalar operator.
Definition: DoubleVec3D.cpp:110
DoubleVec3D crossProd(const DoubleVec3D &vec1, const DoubleVec3D &vec2)
Cross product.
Definition: DoubleVec3D.cpp:125
std::ostream & operator<<(std::ostream &stream, const DoubleVec3D &vec)
Ostream operator.
Definition: DoubleVec3D.cpp:118
void from_json(const json &j, DoubleVec3D &vec)
Conversion from json.
Definition: DoubleVec3D.cpp:146
Defines functions that are used when drawing the interface.
nlohmann::json json
Definition: InterfaceGestion.h:14
A three-dimensional vector using double values.
Definition: DoubleVec3D.h:190
double getX() const
Getter for the first coordinate.
Definition: DoubleVec3D.cpp:20
virtual void setVals(double x, double y, double z)
Setter for all coordinates.
Definition: DoubleVec3D.cpp:32
void normalise()
Normalises the vector.
Definition: DoubleVec3D.cpp:61
DoubleVec3D(double val=0)
Default constructor. Gives all coordinates the same value.
Definition: DoubleVec3D.cpp:4
double getZ() const
Getter for the third coordinate.
Definition: DoubleVec3D.cpp:22
void operator/=(const double &val)
Division by a scalar operator.
Definition: DoubleVec3D.cpp:57
bool normalised
Stores whether the vector was normalised.
Definition: DoubleVec3D.h:197
void operator*=(const double &val)
Multiplication by a scalar operator.
Definition: DoubleVec3D.cpp:50
double getY() const
Getter for the second coordinate.
Definition: DoubleVec3D.cpp:21
bool isNormalised() const
Returns whether the vector is normalised.
Definition: DoubleVec3D.cpp:74
void operator-=(const DoubleVec3D &vec)
Difference operator.
Definition: DoubleVec3D.cpp:48
void operator+=(const DoubleVec3D &vec)
Sum operator.
Definition: DoubleVec3D.cpp:41
bool isZero() const
Returns whether the vector has a length of zero.
Definition: DoubleVec3D.cpp:76