diff --git a/Doxygen/build/Collider_8cpp.html b/Doxygen/build/Collider_8cpp.html
new file mode 100644
index 0000000..066ae21
--- /dev/null
+++ b/Doxygen/build/Collider_8cpp.html
@@ -0,0 +1,108 @@
+
+
+
+
+
+
+
+Leonetienne/Eule: Eule/Collider.cpp File Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Leonetienne/Eule
+
+ Homemade math library, mainly targetted towards computer graphics
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Go to the source code of this file.
+
+
+
+
+
diff --git a/Doxygen/build/Collider_8cpp__incl.map b/Doxygen/build/Collider_8cpp__incl.map
new file mode 100644
index 0000000..c94adde
--- /dev/null
+++ b/Doxygen/build/Collider_8cpp__incl.map
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Doxygen/build/Collider_8cpp__incl.md5 b/Doxygen/build/Collider_8cpp__incl.md5
new file mode 100644
index 0000000..0f1a642
--- /dev/null
+++ b/Doxygen/build/Collider_8cpp__incl.md5
@@ -0,0 +1 @@
+a0ca2d0389b8e053b94a9d04c38298d1
\ No newline at end of file
diff --git a/Doxygen/build/Collider_8cpp__incl.png b/Doxygen/build/Collider_8cpp__incl.png
new file mode 100644
index 0000000..9d9cbfd
Binary files /dev/null and b/Doxygen/build/Collider_8cpp__incl.png differ
diff --git a/Doxygen/build/Collider_8cpp_source.html b/Doxygen/build/Collider_8cpp_source.html
new file mode 100644
index 0000000..04e4a75
--- /dev/null
+++ b/Doxygen/build/Collider_8cpp_source.html
@@ -0,0 +1,90 @@
+
+
+
+
+
+
+
+Leonetienne/Eule: Eule/Collider.cpp Source File
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Leonetienne/Eule
+
+ Homemade math library, mainly targetted towards computer graphics
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Doxygen/build/Collider_8h.html b/Doxygen/build/Collider_8h.html
new file mode 100644
index 0000000..8977c07
--- /dev/null
+++ b/Doxygen/build/Collider_8h.html
@@ -0,0 +1,133 @@
+
+
+
+
+
+
+
+Leonetienne/Eule: Eule/Collider.h File Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Leonetienne/Eule
+
+ Homemade math library, mainly targetted towards computer graphics
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Go to the source code of this file.
+
+
+
+
+
+
diff --git a/Doxygen/build/Collider_8h__dep__incl.map b/Doxygen/build/Collider_8h__dep__incl.map
new file mode 100644
index 0000000..f7be80a
--- /dev/null
+++ b/Doxygen/build/Collider_8h__dep__incl.map
@@ -0,0 +1,6 @@
+
+
+
+
+
+
diff --git a/Doxygen/build/Collider_8h__dep__incl.md5 b/Doxygen/build/Collider_8h__dep__incl.md5
new file mode 100644
index 0000000..69ad73f
--- /dev/null
+++ b/Doxygen/build/Collider_8h__dep__incl.md5
@@ -0,0 +1 @@
+a3862d315002f8b279d1429df3698c3b
\ No newline at end of file
diff --git a/Doxygen/build/Collider_8h__dep__incl.png b/Doxygen/build/Collider_8h__dep__incl.png
new file mode 100644
index 0000000..b321190
Binary files /dev/null and b/Doxygen/build/Collider_8h__dep__incl.png differ
diff --git a/Doxygen/build/Collider_8h__incl.map b/Doxygen/build/Collider_8h__incl.map
new file mode 100644
index 0000000..050531c
--- /dev/null
+++ b/Doxygen/build/Collider_8h__incl.map
@@ -0,0 +1,11 @@
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Doxygen/build/Collider_8h__incl.md5 b/Doxygen/build/Collider_8h__incl.md5
new file mode 100644
index 0000000..87b8976
--- /dev/null
+++ b/Doxygen/build/Collider_8h__incl.md5
@@ -0,0 +1 @@
+9948039f41f85f1963fada39f6f03f97
\ No newline at end of file
diff --git a/Doxygen/build/Collider_8h__incl.png b/Doxygen/build/Collider_8h__incl.png
new file mode 100644
index 0000000..27e8cfd
Binary files /dev/null and b/Doxygen/build/Collider_8h__incl.png differ
diff --git a/Doxygen/build/Collider_8h_source.html b/Doxygen/build/Collider_8h_source.html
new file mode 100644
index 0000000..dbe27c0
--- /dev/null
+++ b/Doxygen/build/Collider_8h_source.html
@@ -0,0 +1,104 @@
+
+
+
+
+
+
+
+Leonetienne/Eule: Eule/Collider.h Source File
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Leonetienne/Eule
+
+ Homemade math library, mainly targetted towards computer graphics
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Abstract class of a collider domain.
+
+virtual bool Contains(const Vector3d &point) const =0
Tests, if this Collider contains a point.
+
+
+
+
+
+
diff --git a/Doxygen/build/Constants_8h.html b/Doxygen/build/Constants_8h.html
new file mode 100644
index 0000000..a635cca
--- /dev/null
+++ b/Doxygen/build/Constants_8h.html
@@ -0,0 +1,191 @@
+
+
+
+
+
+
+
+Leonetienne/Eule: Eule/Constants.h File Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Leonetienne/Eule
+
+ Homemade math library, mainly targetted towards computer graphics
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Go to the source code of this file.
+
+
+#define PI 3.14159265358979323846264338327950288419716939937510
+ Pi up to 50 decimal places. More...
+
+#define HALF_PI 1.57079632679489661923132169163975144209858469968755
+ Pi divided by two. More...
+
+#define Deg2Rad 0.0174532925199432957692369076848861271344287188854172222222222222
+ Factor to convert degrees to radians. More...
+
+#define Rad2Deg 57.295779513082320876798154814105170332405472466564427711013084788
+ Factor to convert radians to degrees. More...
+
+
+
+
+
◆ Deg2Rad
+
+
+
+
+
+ #define Deg2Rad 0.0174532925199432957692369076848861271344287188854172222222222222
+
+
+
+
+
Factor to convert degrees to radians.
+
+
Definition at line 12 of file Constants.h .
+
+
+
+
+
◆ HALF_PI
+
+
+
+
+
+ #define HALF_PI 1.57079632679489661923132169163975144209858469968755
+
+
+
+
+
Pi divided by two.
+
+
Definition at line 9 of file Constants.h .
+
+
+
+
+
◆ PI
+
+
+
+
+
+ #define PI 3.14159265358979323846264338327950288419716939937510
+
+
+
+
+
Pi up to 50 decimal places.
+
+
Definition at line 6 of file Constants.h .
+
+
+
+
+
◆ Rad2Deg
+
+
+
+
+
+ #define Rad2Deg 57.295779513082320876798154814105170332405472466564427711013084788
+
+
+
+
+
Factor to convert radians to degrees.
+
+
Definition at line 15 of file Constants.h .
+
+
+
+
+
+
+
+
diff --git a/Doxygen/build/Constants_8h__dep__incl.map b/Doxygen/build/Constants_8h__dep__incl.map
new file mode 100644
index 0000000..fd16cfe
--- /dev/null
+++ b/Doxygen/build/Constants_8h__dep__incl.map
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/Doxygen/build/Constants_8h__dep__incl.md5 b/Doxygen/build/Constants_8h__dep__incl.md5
new file mode 100644
index 0000000..9f34a03
--- /dev/null
+++ b/Doxygen/build/Constants_8h__dep__incl.md5
@@ -0,0 +1 @@
+b7f0f6fcf28de72df643fef9d219e14d
\ No newline at end of file
diff --git a/Doxygen/build/Constants_8h__dep__incl.png b/Doxygen/build/Constants_8h__dep__incl.png
new file mode 100644
index 0000000..beb6f19
Binary files /dev/null and b/Doxygen/build/Constants_8h__dep__incl.png differ
diff --git a/Doxygen/build/Constants_8h_source.html b/Doxygen/build/Constants_8h_source.html
new file mode 100644
index 0000000..83e31e2
--- /dev/null
+++ b/Doxygen/build/Constants_8h_source.html
@@ -0,0 +1,99 @@
+
+
+
+
+
+
+
+Leonetienne/Eule: Eule/Constants.h Source File
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Leonetienne/Eule
+
+ Homemade math library, mainly targetted towards computer graphics
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Go to the documentation of this file.
+
+
+
+
6 #define PI 3.14159265358979323846264338327950288419716939937510
+
+
9 #define HALF_PI 1.57079632679489661923132169163975144209858469968755
+
+
12 #define Deg2Rad 0.0174532925199432957692369076848861271344287188854172222222222222
+
+
15 #define Rad2Deg 57.295779513082320876798154814105170332405472466564427711013084788
+
+
+
+
+
diff --git a/Doxygen/build/Debug_2Eule_8vcxproj_8FileListAbsolute_8txt.html b/Doxygen/build/Debug_2Eule_8vcxproj_8FileListAbsolute_8txt.html
new file mode 100644
index 0000000..cba53a0
--- /dev/null
+++ b/Doxygen/build/Debug_2Eule_8vcxproj_8FileListAbsolute_8txt.html
@@ -0,0 +1,84 @@
+
+
+
+
+
+
+
+Leonetienne/Eule: Eule/Debug/Eule.vcxproj.FileListAbsolute.txt File Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Leonetienne/Eule
+
+ Homemade math library, mainly targetted towards computer graphics
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Doxygen/build/Math_8cpp.html b/Doxygen/build/Math_8cpp.html
new file mode 100644
index 0000000..f29bb87
--- /dev/null
+++ b/Doxygen/build/Math_8cpp.html
@@ -0,0 +1,130 @@
+
+
+
+
+
+
+
+Leonetienne/Eule: Eule/Math.cpp File Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Leonetienne/Eule
+
+ Homemade math library, mainly targetted towards computer graphics
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
#include "Math.h "
+
#include "Constants.h "
+
#include <array>
+
+
Go to the source code of this file.
+
+
+
+
◆ MAKE_SURE_RNG_IS_INITIALIZED
+
+
+
+
+
+ #define MAKE_SURE_RNG_IS_INITIALIZED if (!isRngInitialized) InitRng();
+
+
+
+
+
Definition at line 8 of file Math.cpp .
+
+
+
+
+
+
+
+
diff --git a/Doxygen/build/Math_8cpp__incl.map b/Doxygen/build/Math_8cpp__incl.map
new file mode 100644
index 0000000..e3e37ad
--- /dev/null
+++ b/Doxygen/build/Math_8cpp__incl.map
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
diff --git a/Doxygen/build/Math_8cpp__incl.md5 b/Doxygen/build/Math_8cpp__incl.md5
new file mode 100644
index 0000000..da36cbb
--- /dev/null
+++ b/Doxygen/build/Math_8cpp__incl.md5
@@ -0,0 +1 @@
+b3c86aa9fc0928813fa25ed5a0b9b4c3
\ No newline at end of file
diff --git a/Doxygen/build/Math_8cpp__incl.png b/Doxygen/build/Math_8cpp__incl.png
new file mode 100644
index 0000000..2202df0
Binary files /dev/null and b/Doxygen/build/Math_8cpp__incl.png differ
diff --git a/Doxygen/build/Math_8cpp_source.html b/Doxygen/build/Math_8cpp_source.html
new file mode 100644
index 0000000..14903e0
--- /dev/null
+++ b/Doxygen/build/Math_8cpp_source.html
@@ -0,0 +1,180 @@
+
+
+
+
+
+
+
+Leonetienne/Eule: Eule/Math.cpp Source File
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Leonetienne/Eule
+
+ Homemade math library, mainly targetted towards computer graphics
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Go to the documentation of this file.
+
+
+
+
+
+
+
8 #define MAKE_SURE_RNG_IS_INITIALIZED if (!isRngInitialized) InitRng();
+
+
+
+
+
13 std::random_device randomSource;
+
+
+
16 std::array<int, std::mt19937::state_size> seedValues;
+
17 std::generate_n(seedValues.data(), seedValues.size(), std::ref(randomSource));
+
18 std::seed_seq seedSequence(seedValues.begin(), seedValues.end());
+
+
+
21 rng = std::mt19937(seedSequence);
+
+
23 isRngInitialized =
true ;
+
+
+
+
+
+
+
+
+
+
33 return (rng() % 694206942069ll) / 694206942069.0;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
58 return (
Random () * (max - min)) + min;
+
+
+
+
+
+
+
65 return (rng() % (max + 1 - min)) + min;
+
+
+
68 double Math::Oscillate (
const double a,
const double b,
const double counter,
const double speed)
+
+
70 return (sin(counter * speed *
PI -
HALF_PI ) * 0.5 + 0.5) * (b-a) + a;
+
+
+
+
+
+
+
+
78 std::mt19937 Math::rng;
+
79 bool Math::isRngInitialized =
true ;
+
+#define MAKE_SURE_RNG_IS_INITIALIZED
+static bool RandomChance(const double chance)
Will 'roll' a dice, returning true percent of the time.
+static double RandomRange(const double min, const double max)
Will return a random double within a range These bounds are INCLUSIVE!
+#define PI
Pi up to 50 decimal places.
+
+#define HALF_PI
Pi divided by two.
+static unsigned int RandomInt()
Will return a random integer.
+
+static int RandomIntRange(const int max, const int min)
Will return a random integer within a range.
+static double Random()
Will return a random double between 0 and 1
+static unsigned int RandomUint()
Will return a random unsigned integer.
+
+static double Oscillate(const double a, const double b, const double counter, const double speed)
Kind of like , but it oscillates over instead of , by a given speed.
+
+
+
+
diff --git a/Doxygen/build/Math_8h.html b/Doxygen/build/Math_8h.html
new file mode 100644
index 0000000..58171a0
--- /dev/null
+++ b/Doxygen/build/Math_8h.html
@@ -0,0 +1,128 @@
+
+
+
+
+
+
+
+Leonetienne/Eule: Eule/Math.h File Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Leonetienne/Eule
+
+ Homemade math library, mainly targetted towards computer graphics
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Doxygen/build/Math_8h__dep__incl.map b/Doxygen/build/Math_8h__dep__incl.map
new file mode 100644
index 0000000..0305d75
--- /dev/null
+++ b/Doxygen/build/Math_8h__dep__incl.map
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
diff --git a/Doxygen/build/Math_8h__dep__incl.md5 b/Doxygen/build/Math_8h__dep__incl.md5
new file mode 100644
index 0000000..439b315
--- /dev/null
+++ b/Doxygen/build/Math_8h__dep__incl.md5
@@ -0,0 +1 @@
+73207d65ad51e6c8ebeaac070e30ef55
\ No newline at end of file
diff --git a/Doxygen/build/Math_8h__dep__incl.png b/Doxygen/build/Math_8h__dep__incl.png
new file mode 100644
index 0000000..aa88a7f
Binary files /dev/null and b/Doxygen/build/Math_8h__dep__incl.png differ
diff --git a/Doxygen/build/Math_8h__incl.map b/Doxygen/build/Math_8h__incl.map
new file mode 100644
index 0000000..db0e59e
--- /dev/null
+++ b/Doxygen/build/Math_8h__incl.map
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/Doxygen/build/Math_8h__incl.md5 b/Doxygen/build/Math_8h__incl.md5
new file mode 100644
index 0000000..1b7b3c1
--- /dev/null
+++ b/Doxygen/build/Math_8h__incl.md5
@@ -0,0 +1 @@
+00ccaa4881b8dd3c6030cc0f136de55d
\ No newline at end of file
diff --git a/Doxygen/build/Math_8h__incl.png b/Doxygen/build/Math_8h__incl.png
new file mode 100644
index 0000000..8e72433
Binary files /dev/null and b/Doxygen/build/Math_8h__incl.png differ
diff --git a/Doxygen/build/Math_8h_source.html b/Doxygen/build/Math_8h_source.html
new file mode 100644
index 0000000..3340501
--- /dev/null
+++ b/Doxygen/build/Math_8h_source.html
@@ -0,0 +1,183 @@
+
+
+
+
+
+
+
+Leonetienne/Eule: Eule/Math.h Source File
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Leonetienne/Eule
+
+ Homemade math library, mainly targetted towards computer graphics
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Go to the documentation of this file.
+
+
+
+
+
+
+
+
12 [[nodiscard]]
static constexpr
double Max (
const double a,
const double b);
+
+
15 [[nodiscard]]
static constexpr
double Min (
const double a,
const double b);
+
+
18 [[nodiscard]]
static constexpr
double Clamp (
const double v,
const double min,
const double max);
+
+
21 [[nodiscard]]
static constexpr
double Lerp (
double a,
double b,
double t);
+
+
24 [[nodiscard]]
static constexpr
double Abs (
const double a);
+
+
27 [[nodiscard]]
static constexpr
bool Similar (
const double a,
const double b,
const double epsilon = 0.00001);
+
+
+
+
+
+
+
+
40 static double RandomRange (
const double min,
const double max);
+
+
+
+
+
+
53 static double Oscillate (
const double a,
const double b,
const double counter,
const double speed);
+
+
+
57 static void InitRng();
+
+
59 static std::mt19937 rng;
+
60 static bool isRngInitialized;
+
+
+
+
+
+
+
+
+
+
+
71 constexpr
inline double Math::Max (
double a,
double b)
+
+
73 return (a > b) ? a : b;
+
+
+
76 constexpr
inline double Math::Min (
double a,
double b)
+
+
78 return (a < b) ? a : b;
+
+
+
81 constexpr
inline double Math::Clamp (
double v,
double min,
double max)
+
+
83 return Max (
Min (v, max), min);
+
+
+
86 constexpr
inline double Math::Lerp (
double a,
double b,
double t)
+
+
88 const double it = 1.0 - t;
+
89 return (a * it) + (b * t);
+
+
+
+
+
94 return (a > 0.0) ? a : -a;
+
+
+
97 inline constexpr
bool Math::Math::Similar(
const double a,
const double b,
const double epsilon)
+
+
99 return Abs(a - b) <= epsilon;
+
+
+
+static bool RandomChance(const double chance)
Will 'roll' a dice, returning true percent of the time.
+static constexpr double Abs(const double a)
Will return the absolute value of a
+static double RandomRange(const double min, const double max)
Will return a random double within a range These bounds are INCLUSIVE!
+static constexpr double Lerp(double a, double b, double t)
Will return the linear interpolation between a and b by t
+static unsigned int RandomInt()
Will return a random integer.
+static constexpr double Max(const double a, const double b)
Will return the bigger of two values.
+
+static constexpr double Clamp(const double v, const double min, const double max)
Will return v, but at least min, and at most max
+static constexpr double Min(const double a, const double b)
Will return the smaller of two values.
+static int RandomIntRange(const int max, const int min)
Will return a random integer within a range.
+static double Random()
Will return a random double between 0 and 1
+static constexpr bool Similar(const double a, const double b, const double epsilon=0.00001)
Compares two double values with a given accuracy.
+static unsigned int RandomUint()
Will return a random unsigned integer.
+
+static double Oscillate(const double a, const double b, const double counter, const double speed)
Kind of like , but it oscillates over instead of , by a given speed.
+
+
+
+
diff --git a/Doxygen/build/Matrix4x4_8cpp.html b/Doxygen/build/Matrix4x4_8cpp.html
new file mode 100644
index 0000000..2e266d4
--- /dev/null
+++ b/Doxygen/build/Matrix4x4_8cpp.html
@@ -0,0 +1,129 @@
+
+
+
+
+
+
+
+Leonetienne/Eule: Eule/Matrix4x4.cpp File Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Leonetienne/Eule
+
+ Homemade math library, mainly targetted towards computer graphics
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
#include "Matrix4x4.h "
+
#include "Vector3.h "
+
#include "Math.h "
+
#include <immintrin.h>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Go to the source code of this file.
+
+
+
+
+
+
diff --git a/Doxygen/build/Matrix4x4_8cpp__incl.map b/Doxygen/build/Matrix4x4_8cpp__incl.map
new file mode 100644
index 0000000..d443343
--- /dev/null
+++ b/Doxygen/build/Matrix4x4_8cpp__incl.map
@@ -0,0 +1,14 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Doxygen/build/Matrix4x4_8cpp__incl.md5 b/Doxygen/build/Matrix4x4_8cpp__incl.md5
new file mode 100644
index 0000000..0cf31c5
--- /dev/null
+++ b/Doxygen/build/Matrix4x4_8cpp__incl.md5
@@ -0,0 +1 @@
+7564e27ac3fef491d766419d5a5fe90e
\ No newline at end of file
diff --git a/Doxygen/build/Matrix4x4_8cpp__incl.png b/Doxygen/build/Matrix4x4_8cpp__incl.png
new file mode 100644
index 0000000..e2c7808
Binary files /dev/null and b/Doxygen/build/Matrix4x4_8cpp__incl.png differ
diff --git a/Doxygen/build/Matrix4x4_8cpp_source.html b/Doxygen/build/Matrix4x4_8cpp_source.html
new file mode 100644
index 0000000..3b22846
--- /dev/null
+++ b/Doxygen/build/Matrix4x4_8cpp_source.html
@@ -0,0 +1,786 @@
+
+
+
+
+
+
+
+Leonetienne/Eule: Eule/Matrix4x4.cpp Source File
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Leonetienne/Eule
+
+ Homemade math library, mainly targetted towards computer graphics
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Go to the documentation of this file.
+
+
+
+
+
6 #ifndef _EULE_NO_INTRINSICS_
+
+
+
+
+
+
+
+
+
15 for (std::size_t
i = 0;
i < 4;
i ++)
+
16 for (std::size_t
j = 0;
j < 4;
j ++)
+
17 v [
i ][
j ] =
double (
i ==
j );
+
+
+
+
+
+
+
+
+
+
+
+
+
30 v = std::move(other.v);
+
+
+
+
+
+
+
+
+
39 #ifndef _EULE_NO_INTRINSICS_
+
+
+
+
+
+
45 __m256d __va1 = _mm256_set_pd(
v [0][0],
v [0][0],
v [0][0],
v [1][0]);
+
46 __m256d __va2 = _mm256_set_pd(
v [1][0],
v [1][0],
v [2][0],
v [2][0]);
+
+
48 __m256d __oa1 = _mm256_set_pd(other[0][0], other[0][1], other[0][2], other[0][0]);
+
49 __m256d __oa2 = _mm256_set_pd(other[0][1], other[0][2], other[0][0], other[0][1]);
+
+
51 __m256d __vb1 = _mm256_set_pd(
v [0][1],
v [0][1],
v [0][1],
v [1][1]);
+
52 __m256d __vb2 = _mm256_set_pd(
v [1][1],
v [1][1],
v [2][1],
v [2][1]);
+
+
54 __m256d __ob1 = _mm256_set_pd(other[1][0], other[1][1], other[1][2], other[1][0]);
+
55 __m256d __ob2 = _mm256_set_pd(other[1][1], other[1][2], other[1][0], other[1][1]);
+
+
57 __m256d __vc1 = _mm256_set_pd(
v [0][2],
v [0][2],
v [0][2],
v [1][2]);
+
58 __m256d __vc2 = _mm256_set_pd(
v [1][2],
v [1][2],
v [2][2],
v [2][2]);
+
+
60 __m256d __oc1 = _mm256_set_pd(other[2][0], other[2][1], other[2][2], other[2][0]);
+
61 __m256d __oc2 = _mm256_set_pd(other[2][1], other[2][2], other[2][0], other[2][1]);
+
+
+
64 __m256d __sum1 = _mm256_set1_pd(0);
+
65 __m256d __sum2 = _mm256_set1_pd(0);
+
+
+
+
69 __sum1 = _mm256_fmadd_pd(__va1, __oa1, __sum1);
+
70 __sum1 = _mm256_fmadd_pd(__vb1, __ob1, __sum1);
+
71 __sum1 = _mm256_fmadd_pd(__vc1, __oc1, __sum1);
+
+
+
74 __sum2 = _mm256_fmadd_pd(__va2, __oa2, __sum2);
+
75 __sum2 = _mm256_fmadd_pd(__vb2, __ob2, __sum2);
+
76 __sum2 = _mm256_fmadd_pd(__vc2, __oc2, __sum2);
+
+
+
+
+
+
82 _mm256_storeu_pd(sum1, __sum1);
+
83 _mm256_storeu_pd(sum2, __sum2);
+
+
+
+
87 newMatrix[0][0] = sum1[3];
+
88 newMatrix[0][1] = sum1[2];
+
89 newMatrix[0][2] = sum1[1];
+
90 newMatrix[1][0] = sum1[0];
+
+
+
93 newMatrix[1][1] = sum2[3];
+
94 newMatrix[1][2] = sum2[2];
+
95 newMatrix[2][0] = sum2[1];
+
96 newMatrix[2][1] = sum2[0];
+
+
+
99 newMatrix[2][2] = (
v [2][0] * other[0][2]) + (
v [2][1] * other[1][2]) + (
v [2][2] * other[2][2]);
+
+
+
+
+
+
105 __m256d __transSelf = _mm256_set_pd(0,
l ,
h ,
d );
+
106 __m256d __transOther = _mm256_set_pd(0, other.l, other.h, other.d);
+
+
+
109 __m256d __sum = _mm256_add_pd(__transSelf, __transOther);
+
+
+
+
113 _mm256_storeu_pd(sum, __sum);
+
+
+
116 newMatrix.
d = sum[0];
+
117 newMatrix.
h = sum[1];
+
118 newMatrix.
l = sum[2];
+
+
+
+
+
+
124 newMatrix[0][0] = (
v [0][0] * other[0][0]) + (
v [0][1] * other[1][0]) + (
v [0][2] * other[2][0]);
+
125 newMatrix[0][1] = (
v [0][0] * other[0][1]) + (
v [0][1] * other[1][1]) + (
v [0][2] * other[2][1]);
+
126 newMatrix[0][2] = (
v [0][0] * other[0][2]) + (
v [0][1] * other[1][2]) + (
v [0][2] * other[2][2]);
+
+
128 newMatrix[1][0] = (
v [1][0] * other[0][0]) + (
v [1][1] * other[1][0]) + (
v [1][2] * other[2][0]);
+
129 newMatrix[1][1] = (
v [1][0] * other[0][1]) + (
v [1][1] * other[1][1]) + (
v [1][2] * other[2][1]);
+
130 newMatrix[1][2] = (
v [1][0] * other[0][2]) + (
v [1][1] * other[1][2]) + (
v [1][2] * other[2][2]);
+
+
132 newMatrix[2][0] = (
v [2][0] * other[0][0]) + (
v [2][1] * other[1][0]) + (
v [2][2] * other[2][0]);
+
133 newMatrix[2][1] = (
v [2][0] * other[0][1]) + (
v [2][1] * other[1][1]) + (
v [2][2] * other[2][1]);
+
134 newMatrix[2][2] = (
v [2][0] * other[0][2]) + (
v [2][1] * other[1][2]) + (
v [2][2] * other[2][2]);
+
+
+
+
138 newMatrix[0][3] =
v [0][3] + other[0][3];
+
139 newMatrix[1][3] =
v [1][3] + other[1][3];
+
140 newMatrix[2][3] =
v [2][3] + other[2][3];
+
+
+
+
+
+
+
+
+
149 *
this = *
this * other;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
168 #ifndef _EULE_NO_INTRINSICS_
+
+
+
171 __m256d __row0 = _mm256_set_pd(
v [0][3],
v [0][2],
v [0][1],
v [0][0]);
+
172 __m256d __row1 = _mm256_set_pd(
v [1][3],
v [1][2],
v [1][1],
v [1][0]);
+
173 __m256d __row2 = _mm256_set_pd(
v [2][3],
v [2][2],
v [2][1],
v [2][0]);
+
174 __m256d __row3 = _mm256_set_pd(
v [3][3],
v [3][2],
v [3][1],
v [3][0]);
+
+
+
177 __m256d __scalar = _mm256_set1_pd(scalar);
+
+
+
180 __m256d __sr0 = _mm256_mul_pd(__row0, __scalar);
+
181 __m256d __sr1 = _mm256_mul_pd(__row1, __scalar);
+
182 __m256d __sr2 = _mm256_mul_pd(__row2, __scalar);
+
183 __m256d __sr3 = _mm256_mul_pd(__row3, __scalar);
+
+
+
186 _mm256_storeu_pd(
m .v[0].data(), __sr0);
+
187 _mm256_storeu_pd(
m .v[1].data(), __sr1);
+
188 _mm256_storeu_pd(
m .v[2].data(), __sr2);
+
189 _mm256_storeu_pd(
m .v[3].data(), __sr3);
+
+
+
+
193 for (std::size_t x = 0; x < 4; x++)
+
194 for (std::size_t y = 0; y < 4; y++)
+
195 m [x][y] =
v [x][y] * scalar;
+
+
+
+
+
+
+
+
+
204 *
this = *
this * scalar;
+
+
+
+
+
+
210 const double precomputeDivision = 1.0 / denominator;
+
+
212 return *
this * precomputeDivision;
+
+
+
+
+
217 *
this = *
this / denominator;
+
+
+
+
+
+
+
+
225 #ifndef _EULE_NO_INTRINSICS_
+
+
+
228 __m256d __row0a = _mm256_set_pd(
v [0][3],
v [0][2],
v [0][1],
v [0][0]);
+
229 __m256d __row1a = _mm256_set_pd(
v [1][3],
v [1][2],
v [1][1],
v [1][0]);
+
230 __m256d __row2a = _mm256_set_pd(
v [2][3],
v [2][2],
v [2][1],
v [2][0]);
+
231 __m256d __row3a = _mm256_set_pd(
v [3][3],
v [3][2],
v [3][1],
v [3][0]);
+
+
233 __m256d __row0b = _mm256_set_pd(other[0][3], other[0][2], other[0][1], other[0][0]);
+
234 __m256d __row1b = _mm256_set_pd(other[1][3], other[1][2], other[1][1], other[1][0]);
+
235 __m256d __row2b = _mm256_set_pd(other[2][3], other[2][2], other[2][1], other[2][0]);
+
236 __m256d __row3b = _mm256_set_pd(other[3][3], other[3][2], other[3][1], other[3][0]);
+
+
+
239 __m256d __sr0 = _mm256_add_pd(__row0a, __row0b);
+
240 __m256d __sr1 = _mm256_add_pd(__row1a, __row1b);
+
241 __m256d __sr2 = _mm256_add_pd(__row2a, __row2b);
+
242 __m256d __sr3 = _mm256_add_pd(__row3a, __row3b);
+
+
+
245 _mm256_storeu_pd(
m .v[0].data(), __sr0);
+
246 _mm256_storeu_pd(
m .v[1].data(), __sr1);
+
247 _mm256_storeu_pd(
m .v[2].data(), __sr2);
+
248 _mm256_storeu_pd(
m .v[3].data(), __sr3);
+
+
+
+
252 for (std::size_t x = 0; x < 4; x++)
+
253 for (std::size_t y = 0; y < 4; y++)
+
254 m [x][y] =
v [x][y] + other[x][y];
+
+
+
+
+
+
+
+
+
263 #ifndef _EULE_NO_INTRINSICS_
+
+
+
+
267 __m256d __row0a = _mm256_set_pd(
v [0][3],
v [0][2],
v [0][1],
v [0][0]);
+
268 __m256d __row1a = _mm256_set_pd(
v [1][3],
v [1][2],
v [1][1],
v [1][0]);
+
269 __m256d __row2a = _mm256_set_pd(
v [2][3],
v [2][2],
v [2][1],
v [2][0]);
+
270 __m256d __row3a = _mm256_set_pd(
v [3][3],
v [3][2],
v [3][1],
v [3][0]);
+
+
272 __m256d __row0b = _mm256_set_pd(other[0][3], other[0][2], other[0][1], other[0][0]);
+
273 __m256d __row1b = _mm256_set_pd(other[1][3], other[1][2], other[1][1], other[1][0]);
+
274 __m256d __row2b = _mm256_set_pd(other[2][3], other[2][2], other[2][1], other[2][0]);
+
275 __m256d __row3b = _mm256_set_pd(other[3][3], other[3][2], other[3][1], other[3][0]);
+
+
+
278 __m256d __sr0 = _mm256_add_pd(__row0a, __row0b);
+
279 __m256d __sr1 = _mm256_add_pd(__row1a, __row1b);
+
280 __m256d __sr2 = _mm256_add_pd(__row2a, __row2b);
+
281 __m256d __sr3 = _mm256_add_pd(__row3a, __row3b);
+
+
+
284 _mm256_storeu_pd(
v [0].data(), __sr0);
+
285 _mm256_storeu_pd(
v [1].data(), __sr1);
+
286 _mm256_storeu_pd(
v [2].data(), __sr2);
+
287 _mm256_storeu_pd(
v [3].data(), __sr3);
+
+
+
+
291 *
this = *
this + other;
+
+
+
+
+
+
+
+
+
+
+
302 #ifndef _EULE_NO_INTRINSICS_
+
+
+
305 __m256d __row0a = _mm256_set_pd(
v [0][3],
v [0][2],
v [0][1],
v [0][0]);
+
306 __m256d __row1a = _mm256_set_pd(
v [1][3],
v [1][2],
v [1][1],
v [1][0]);
+
307 __m256d __row2a = _mm256_set_pd(
v [2][3],
v [2][2],
v [2][1],
v [2][0]);
+
308 __m256d __row3a = _mm256_set_pd(
v [3][3],
v [3][2],
v [3][1],
v [3][0]);
+
+
310 __m256d __row0b = _mm256_set_pd(other[0][3], other[0][2], other[0][1], other[0][0]);
+
311 __m256d __row1b = _mm256_set_pd(other[1][3], other[1][2], other[1][1], other[1][0]);
+
312 __m256d __row2b = _mm256_set_pd(other[2][3], other[2][2], other[2][1], other[2][0]);
+
313 __m256d __row3b = _mm256_set_pd(other[3][3], other[3][2], other[3][1], other[3][0]);
+
+
+
316 __m256d __sr0 = _mm256_sub_pd(__row0a, __row0b);
+
317 __m256d __sr1 = _mm256_sub_pd(__row1a, __row1b);
+
318 __m256d __sr2 = _mm256_sub_pd(__row2a, __row2b);
+
319 __m256d __sr3 = _mm256_sub_pd(__row3a, __row3b);
+
+
+
322 _mm256_storeu_pd(
m .v[0].data(), __sr0);
+
323 _mm256_storeu_pd(
m .v[1].data(), __sr1);
+
324 _mm256_storeu_pd(
m .v[2].data(), __sr2);
+
325 _mm256_storeu_pd(
m .v[3].data(), __sr3);
+
+
+
+
329 for (std::size_t x = 0; x < 4; x++)
+
330 for (std::size_t y = 0; y < 4; y++)
+
331 m [x][y] =
v [x][y] - other[x][y];
+
+
+
+
+
+
+
+
+
340 #ifndef _EULE_NO_INTRINSICS_
+
+
+
+
344 __m256d __row0a = _mm256_set_pd(
v [0][3],
v [0][2],
v [0][1],
v [0][0]);
+
345 __m256d __row1a = _mm256_set_pd(
v [1][3],
v [1][2],
v [1][1],
v [1][0]);
+
346 __m256d __row2a = _mm256_set_pd(
v [2][3],
v [2][2],
v [2][1],
v [2][0]);
+
347 __m256d __row3a = _mm256_set_pd(
v [3][3],
v [3][2],
v [3][1],
v [3][0]);
+
+
349 __m256d __row0b = _mm256_set_pd(other[0][3], other[0][2], other[0][1], other[0][0]);
+
350 __m256d __row1b = _mm256_set_pd(other[1][3], other[1][2], other[1][1], other[1][0]);
+
351 __m256d __row2b = _mm256_set_pd(other[2][3], other[2][2], other[2][1], other[2][0]);
+
352 __m256d __row3b = _mm256_set_pd(other[3][3], other[3][2], other[3][1], other[3][0]);
+
+
+
355 __m256d __sr0 = _mm256_sub_pd(__row0a, __row0b);
+
356 __m256d __sr1 = _mm256_sub_pd(__row1a, __row1b);
+
357 __m256d __sr2 = _mm256_sub_pd(__row2a, __row2b);
+
358 __m256d __sr3 = _mm256_sub_pd(__row3a, __row3b);
+
+
+
361 _mm256_storeu_pd(
v [0].data(), __sr0);
+
362 _mm256_storeu_pd(
v [1].data(), __sr1);
+
363 _mm256_storeu_pd(
v [2].data(), __sr2);
+
364 _mm256_storeu_pd(
v [3].data(), __sr3);
+
+
+
+
368 *
this = *
this - other;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
393 v = std::move(other.v);
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
433 for (std::size_t
i = 0;
i < 3;
i ++)
+
434 for (std::size_t
j = 0;
j < 3;
j ++)
+
435 trans[
j ][
i ] =
v [
i ][
j ];
+
+
+
+
+
+
+
+
+
444 for (std::size_t
i = 0;
i < 4;
i ++)
+
445 for (std::size_t
j = 0;
j < 4;
j ++)
+
446 trans[
j ][
i ] =
v [
i ][
j ];
+
+
+
+
+
+
+
+
+
455 m [0][0] = (
v [0][0]*
o [0][0]) + (
v [0][1]*
o [1][0]) + (
v [0][2]*
o [2][0]) + (
v [0][3]*
o [3][0]);
+
456 m [0][1] = (
v [0][0]*
o [0][1]) + (
v [0][1]*
o [1][1]) + (
v [0][2]*
o [2][1]) + (
v [0][3]*
o [3][1]);
+
457 m [0][2] = (
v [0][0]*
o [0][2]) + (
v [0][1]*
o [1][2]) + (
v [0][2]*
o [2][2]) + (
v [0][3]*
o [3][2]);
+
458 m [0][3] = (
v [0][0]*
o [0][3]) + (
v [0][1]*
o [1][3]) + (
v [0][2]*
o [2][3]) + (
v [0][3]*
o [3][3]);
+
+
460 m [1][0] = (
v [1][0]*
o [0][0]) + (
v [1][1]*
o [1][0]) + (
v [1][2]*
o [2][0]) + (
v [1][3]*
o [3][0]);
+
461 m [1][1] = (
v [1][0]*
o [0][1]) + (
v [1][1]*
o [1][1]) + (
v [1][2]*
o [2][1]) + (
v [1][3]*
o [3][1]);
+
462 m [1][2] = (
v [1][0]*
o [0][2]) + (
v [1][1]*
o [1][2]) + (
v [1][2]*
o [2][2]) + (
v [1][3]*
o [3][2]);
+
463 m [1][3] = (
v [1][0]*
o [0][3]) + (
v [1][1]*
o [1][3]) + (
v [1][2]*
o [2][3]) + (
v [1][3]*
o [3][3]);
+
+
465 m [2][0] = (
v [2][0]*
o [0][0]) + (
v [2][1]*
o [1][0]) + (
v [2][2]*
o [2][0]) + (
v [2][3]*
o [3][0]);
+
466 m [2][1] = (
v [2][0]*
o [0][1]) + (
v [2][1]*
o [1][1]) + (
v [2][2]*
o [2][1]) + (
v [2][3]*
o [3][1]);
+
467 m [2][2] = (
v [2][0]*
o [0][2]) + (
v [2][1]*
o [1][2]) + (
v [2][2]*
o [2][2]) + (
v [2][3]*
o [3][2]);
+
468 m [2][3] = (
v [2][0]*
o [0][3]) + (
v [2][1]*
o [1][3]) + (
v [2][2]*
o [2][3]) + (
v [2][3]*
o [3][3]);
+
+
470 m [3][0] = (
v [3][0]*
o [0][0]) + (
v [3][1]*
o [1][0]) + (
v [3][2]*
o [2][0]) + (
v [3][3]*
o [3][0]);
+
471 m [3][1] = (
v [3][0]*
o [0][1]) + (
v [3][1]*
o [1][1]) + (
v [3][2]*
o [2][1]) + (
v [3][3]*
o [3][1]);
+
472 m [3][2] = (
v [3][0]*
o [0][2]) + (
v [3][1]*
o [1][2]) + (
v [3][2]*
o [2][2]) + (
v [3][3]*
o [3][2]);
+
473 m [3][3] = (
v [3][0]*
o [0][3]) + (
v [3][1]*
o [1][3]) + (
v [3][2]*
o [2][3]) + (
v [3][3]*
o [3][3]);
+
+
+
+
+
+
+
+
481 throw std::runtime_error(
"Dimension out of range! 0 <= n <= 4" );
+
+
+
+
+
+
+
488 for (std::size_t y = 0; y <
n ; y++)
+
489 for (std::size_t x = 0; x <
n ; x++)
+
+
491 if ((y !=
p ) && (x != q))
+
+
493 cofs[
i ][
j ] =
v [y][x];
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
514 throw std::runtime_error(
"Dimension out of range! 0 <= n <= 4" );
+
+
+
+
+
+
+
+
522 for (std::size_t x = 0; x <
n ; x++)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
536 throw std::runtime_error(
"Dimension out of range! 0 <= n <= 4" );
+
+
+
+
+
541 for (std::size_t
i = 0;
i <
n ;
i ++)
+
542 for (std::size_t
j = 0;
j <
n ;
j ++)
+
+
+
+
+
+
548 sign = ((
i +
j ) % 2 == 0) ? 1 : -1;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
564 throw std::runtime_error(
"Matrix3x3 not inversible!" );
+
+
+
+
568 for (std::size_t
i = 0;
i < 3;
i ++)
+
569 for (std::size_t
j = 0;
j < 3;
j ++)
+
570 inv[
i ][
j ] = adj[
i ][
j ] / det;
+
+
+
+
+
+
+
+
+
+
+
+
+
583 throw std::runtime_error(
"Matrix4x4 not inversible!" );
+
+
+
+
587 for (std::size_t
i = 0;
i < 4;
i ++)
+
588 for (std::size_t
j = 0;
j < 4;
j ++)
+
589 inv[
i ][
j ] = adj[
i ][
j ] / det;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
610 for (std::size_t
i = 0;
i < 4;
i ++)
+
611 for (std::size_t
j = 0;
j < 4;
j ++)
+
+
+
+
+
+
+
+
+
+
+
+
+
624 for (std::size_t y = 0; y < 4; y++)
+
+
626 for (std::size_t x = 0; x < 4; x++)
+
627 os <<
" | " << m[y][x];
+
+
629 os <<
" |" << std::endl;
+
+
+
+
+
+
+
+
+
+
639 for (std::size_t y = 0; y < 4; y++)
+
+
641 for (std::size_t x = 0; x < 4; x++)
+
642 os << L
" | " << m[y][x];
+
+
644 os << L
" |" << std::endl;
+
+
+
+
+
+
+
+Matrix4x4 Inverse4x4() const
Will return the full 4x4-inverse of this matrix.
+Matrix4x4 Adjoint(std::size_t n) const
Will return the adjoint of this matrix, by dimension n.
+bool operator==(const Matrix4x4 &other)
+Matrix4x4 operator+(const Matrix4x4 &other) const
Cellwise addition.
+
+void operator-=(const Matrix4x4 &other)
Cellwise subtraction.
+Matrix4x4 Transpose4x4() const
Will return the 4x4 transpose of this matrix.
+bool operator!=(const Matrix4x4 &other)
+
+std::array< double, 4 > & operator[](std::size_t y)
+Matrix4x4 DropTranslationComponents() const
Will return this Matrix4x4 with d,h,l being set to 0.
+void operator*=(const Matrix4x4 &other)
+Matrix4x4 Inverse3x3() const
Will return the 3x3-inverse of this matrix.
+Matrix4x4 operator/(const Matrix4x4 &other) const
+std::array< std::array< double, 4 >, 4 > v
Array holding the matrices values.
+Matrix4x4 operator*(const Matrix4x4 &other) const
+
+Vector3< double > Vector3d
+
+void operator=(const Matrix4x4 &other)
+
+A matrix 4x4 class representing a 3d transformation.
+bool IsInversible4x4() const
Will check if the entire matrix is inversible.
+bool Similar(const Matrix4x4 &other, double epsilon=0.00001) const
Will compare if two matrices are similar to a certain epsilon value.
+void operator/=(const Matrix4x4 &other)
+
+
+bool IsInversible3x3() const
Will check if the 3x3-component is inversible.
+Matrix4x4 Transpose3x3() const
Will return the 3x3 transpose of this matrix.
+std::ostream & operator<<(std::ostream &os, const Matrix4x4 &m)
+
+Matrix4x4 operator-(const Matrix4x4 &other) const
Cellwise subtraction.
+double Determinant(std::size_t n) const
Will return the determinant, by dimension n.
+
+static constexpr bool Similar(const double a, const double b, const double epsilon=0.00001)
Compares two double values with a given accuracy.
+void operator+=(const Matrix4x4 &other)
Cellwise addition.
+
+void SetTranslationComponent(const Vector3d &trans)
Will set d,h,l from a Vector3d(x,y,z)
+Matrix4x4 Multiply4x4(const Matrix4x4 &o) const
Will return the Matrix4x4 of an actual 4x4 multiplication. operator* only does a 3x3.
+
+
+Matrix4x4 GetCofactors(std::size_t p, std::size_t q, std::size_t n) const
Will return the cofactors of this matrix, by dimension n.
+const Vector3d GetTranslationComponent() const
Will return d,h,l as a Vector3d(x,y,z)
+
+
+
+
+
+
+
+
+
diff --git a/Doxygen/build/Matrix4x4_8h.html b/Doxygen/build/Matrix4x4_8h.html
new file mode 100644
index 0000000..84c8845
--- /dev/null
+++ b/Doxygen/build/Matrix4x4_8h.html
@@ -0,0 +1,148 @@
+
+
+
+
+
+
+
+Leonetienne/Eule: Eule/Matrix4x4.h File Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Leonetienne/Eule
+
+ Homemade math library, mainly targetted towards computer graphics
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
#include <cstring>
+#include <array>
+#include <ostream>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Go to the source code of this file.
+
+
+
+
+
+
diff --git a/Doxygen/build/Matrix4x4_8h__dep__incl.map b/Doxygen/build/Matrix4x4_8h__dep__incl.map
new file mode 100644
index 0000000..702c3aa
--- /dev/null
+++ b/Doxygen/build/Matrix4x4_8h__dep__incl.map
@@ -0,0 +1,15 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Doxygen/build/Matrix4x4_8h__dep__incl.md5 b/Doxygen/build/Matrix4x4_8h__dep__incl.md5
new file mode 100644
index 0000000..3a01bcf
--- /dev/null
+++ b/Doxygen/build/Matrix4x4_8h__dep__incl.md5
@@ -0,0 +1 @@
+5154dfffad2d15709c7dfb374c8ae661
\ No newline at end of file
diff --git a/Doxygen/build/Matrix4x4_8h__dep__incl.png b/Doxygen/build/Matrix4x4_8h__dep__incl.png
new file mode 100644
index 0000000..c4d2384
Binary files /dev/null and b/Doxygen/build/Matrix4x4_8h__dep__incl.png differ
diff --git a/Doxygen/build/Matrix4x4_8h__incl.map b/Doxygen/build/Matrix4x4_8h__incl.map
new file mode 100644
index 0000000..fdee30a
--- /dev/null
+++ b/Doxygen/build/Matrix4x4_8h__incl.map
@@ -0,0 +1,6 @@
+
+
+
+
+
+
diff --git a/Doxygen/build/Matrix4x4_8h__incl.md5 b/Doxygen/build/Matrix4x4_8h__incl.md5
new file mode 100644
index 0000000..0c4deeb
--- /dev/null
+++ b/Doxygen/build/Matrix4x4_8h__incl.md5
@@ -0,0 +1 @@
+ab989368f6dcbdc7dd60a9f3b05fea6e
\ No newline at end of file
diff --git a/Doxygen/build/Matrix4x4_8h__incl.png b/Doxygen/build/Matrix4x4_8h__incl.png
new file mode 100644
index 0000000..3627873
Binary files /dev/null and b/Doxygen/build/Matrix4x4_8h__incl.png differ
diff --git a/Doxygen/build/Matrix4x4_8h_source.html b/Doxygen/build/Matrix4x4_8h_source.html
new file mode 100644
index 0000000..78dc576
--- /dev/null
+++ b/Doxygen/build/Matrix4x4_8h_source.html
@@ -0,0 +1,234 @@
+
+
+
+
+
+
+
+Leonetienne/Eule: Eule/Matrix4x4.h Source File
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Leonetienne/Eule
+
+ Homemade math library, mainly targetted towards computer graphics
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Go to the documentation of this file.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
44 std::array<std::array<double, 4>, 4>
v ;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
73 std::array<double, 4>&
operator[] (std::size_t y);
+
74 const std::array<double, 4>&
operator[] (std::size_t y)
const ;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Matrix4x4 Inverse4x4() const
Will return the full 4x4-inverse of this matrix.
+Matrix4x4 Adjoint(std::size_t n) const
Will return the adjoint of this matrix, by dimension n.
+bool operator==(const Matrix4x4 &other)
+Matrix4x4 operator+(const Matrix4x4 &other) const
Cellwise addition.
+
+void operator-=(const Matrix4x4 &other)
Cellwise subtraction.
+Matrix4x4 Transpose4x4() const
Will return the 4x4 transpose of this matrix.
+bool operator!=(const Matrix4x4 &other)
+Representation of a 3d vector.
+std::array< double, 4 > & operator[](std::size_t y)
+Matrix4x4 DropTranslationComponents() const
Will return this Matrix4x4 with d,h,l being set to 0.
+
+
+void operator*=(const Matrix4x4 &other)
+Matrix4x4 Inverse3x3() const
Will return the 3x3-inverse of this matrix.
+
+Matrix4x4 operator/(const Matrix4x4 &other) const
+std::array< std::array< double, 4 >, 4 > v
Array holding the matrices values.
+Matrix4x4 operator*(const Matrix4x4 &other) const
+Vector3< double > Vector3d
+void operator=(const Matrix4x4 &other)
+A matrix 4x4 class representing a 3d transformation.
+bool IsInversible4x4() const
Will check if the entire matrix is inversible.
+
+bool Similar(const Matrix4x4 &other, double epsilon=0.00001) const
Will compare if two matrices are similar to a certain epsilon value.
+
+void operator/=(const Matrix4x4 &other)
+friend std::ostream & operator<<(std::ostream &os, const Matrix4x4 &m)
+
+bool IsInversible3x3() const
Will check if the 3x3-component is inversible.
+Matrix4x4 Transpose3x3() const
Will return the 3x3 transpose of this matrix.
+
+Matrix4x4 operator-(const Matrix4x4 &other) const
Cellwise subtraction.
+double Determinant(std::size_t n) const
Will return the determinant, by dimension n.
+void operator+=(const Matrix4x4 &other)
Cellwise addition.
+
+void SetTranslationComponent(const Vector3d &trans)
Will set d,h,l from a Vector3d(x,y,z)
+
+Matrix4x4 Multiply4x4(const Matrix4x4 &o) const
Will return the Matrix4x4 of an actual 4x4 multiplication. operator* only does a 3x3.
+
+
+
+Matrix4x4 GetCofactors(std::size_t p, std::size_t q, std::size_t n) const
Will return the cofactors of this matrix, by dimension n.
+const Vector3d GetTranslationComponent() const
Will return d,h,l as a Vector3d(x,y,z)
+
+
+
+
+
+
+
+
diff --git a/Doxygen/build/Quaternion_8cpp.html b/Doxygen/build/Quaternion_8cpp.html
new file mode 100644
index 0000000..4a63d2a
--- /dev/null
+++ b/Doxygen/build/Quaternion_8cpp.html
@@ -0,0 +1,129 @@
+
+
+
+
+
+
+
+Leonetienne/Eule: Eule/Quaternion.cpp File Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Leonetienne/Eule
+
+ Homemade math library, mainly targetted towards computer graphics
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
#include "Quaternion.h "
+
#include "Constants.h "
+
#include <immintrin.h>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Go to the source code of this file.
+
+
+
+
+
+
diff --git a/Doxygen/build/Quaternion_8cpp__incl.map b/Doxygen/build/Quaternion_8cpp__incl.map
new file mode 100644
index 0000000..e2e3f3a
--- /dev/null
+++ b/Doxygen/build/Quaternion_8cpp__incl.map
@@ -0,0 +1,15 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Doxygen/build/Quaternion_8cpp__incl.md5 b/Doxygen/build/Quaternion_8cpp__incl.md5
new file mode 100644
index 0000000..292eb8c
--- /dev/null
+++ b/Doxygen/build/Quaternion_8cpp__incl.md5
@@ -0,0 +1 @@
+57d3a0062141f1640bb90bcf0db84cb2
\ No newline at end of file
diff --git a/Doxygen/build/Quaternion_8cpp__incl.png b/Doxygen/build/Quaternion_8cpp__incl.png
new file mode 100644
index 0000000..2d003b8
Binary files /dev/null and b/Doxygen/build/Quaternion_8cpp__incl.png differ
diff --git a/Doxygen/build/Quaternion_8cpp_source.html b/Doxygen/build/Quaternion_8cpp_source.html
new file mode 100644
index 0000000..89356fa
--- /dev/null
+++ b/Doxygen/build/Quaternion_8cpp_source.html
@@ -0,0 +1,476 @@
+
+
+
+
+
+
+
+Leonetienne/Eule: Eule/Quaternion.cpp Source File
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Leonetienne/Eule
+
+ Homemade math library, mainly targetted towards computer graphics
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Go to the documentation of this file.
+
+
+
+
5 #ifndef _EULE_NO_INTRINSICS_
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
33 #ifndef _EULE_NO_INTRINSICS_
+
+
+
36 __m256d __vec = _mm256_set_pd(0, eulerRad.
z , eulerRad.
y , eulerRad.
x );
+
37 __vec = _mm256_mul_pd(__vec, _mm256_set1_pd(0.5));
+
+
39 __m256d __sin = _mm256_sincos_pd(&__cos, __vec);
+
+
+
+
+
+
45 _mm256_storeu_pd(sin, __sin);
+
46 _mm256_storeu_pd(cos, __cos);
+
+
48 __m256d __a = _mm256_set_pd(cos[0], cos[0], sin[0], cos[0]);
+
49 __m256d __b = _mm256_set_pd(cos[1], sin[1], cos[1], cos[1]);
+
50 __m256d __c = _mm256_set_pd(sin[2], cos[2], cos[2], cos[2]);
+
+
52 __m256d __d = _mm256_set_pd(sin[0], sin[0], cos[0], sin[0]);
+
53 __m256d __e = _mm256_set_pd(sin[1], cos[1], sin[1], sin[1]);
+
54 __m256d __f = _mm256_set_pd(cos[2], sin[2], sin[2], sin[2]);
+
+
+
+
58 __abc = _mm256_mul_pd(__a, __b);
+
59 __abc = _mm256_mul_pd(__abc, __c);
+
+
+
62 __def = _mm256_mul_pd(__d, __e);
+
63 __def = _mm256_mul_pd(__def, __f);
+
+
+
+
+
+
69 _mm256_storeu_pd(abc, __abc);
+
70 _mm256_storeu_pd(def, __def);
+
+
+
73 v.
w = abc[0] + def[0];
+
74 v.
x = abc[1] - def[1];
+
75 v.
y = abc[2] + def[2];
+
76 v.
z = abc[3] - def[3];
+
+
+
+
80 const double cy = cos(eulerRad.
z * 0.5);
+
81 const double sy = sin(eulerRad.
z * 0.5);
+
82 const double cp = cos(eulerRad.
y * 0.5);
+
83 const double sp = sin(eulerRad.
y * 0.5);
+
84 const double cr = cos(eulerRad.
x * 0.5);
+
85 const double sr = sin(eulerRad.
x * 0.5);
+
+
87 v.
w = cr * cp * cy + sr * sp * sy;
+
88 v.
x = sr * cp * cy - cr * sp * sy;
+
89 v.
y = cr * sp * cy + sr * cp * sy;
+
90 v.
z = cr * cp * sy - sr * sp * cy;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
114 v.
w * q.v.
x + v.
x * q.v.
w + v.
y * q.v.
z - v.
z * q.v.
y ,
+
115 v.
w * q.v.
y + v.
y * q.v.
w + v.
z * q.v.
x - v.
x * q.v.
z ,
+
116 v.
w * q.v.
z + v.
z * q.v.
w + v.
x * q.v.
y - v.
y * q.v.
x ,
+
117 v.
w * q.v.
w - v.
x * q.v.
x - v.
y * q.v.
y - v.
z * q.v.
z
+
+
+
+
+
+
+
+
+
+
+
128 return ((*
this ) * (q.
Inverse ()));
+
+
+
+
+
+
+
+
136 v.
x = bufr.
w * q.v.
x + bufr.
x * q.v.
w + bufr.
y * q.v.
z - bufr.
z * q.v.
y ;
+
137 v.
y = bufr.
w * q.v.
y + bufr.
y * q.v.
w + bufr.
z * q.v.
x - bufr.
x * q.v.
z ;
+
138 v.
z = bufr.
w * q.v.
z + bufr.
z * q.v.
w + bufr.
x * q.v.
y - bufr.
y * q.v.
x ;
+
139 v.
w = bufr.
w * q.v.
w - bufr.
x * q.v.
x - bufr.
y * q.v.
y - bufr.
z * q.v.
z ;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
156 (*this) = (*this) * q.
Inverse ();
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
177 if (!isCacheUpToDate_inverse)
+
+
+
+
181 isCacheUpToDate_inverse =
true ;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
217 if (!isCacheUpToDate_euler)
+
+
+
+
221 double sinr_cosp = 2.0 * (v.
w * v.
x + v.
y * v.
z );
+
222 double cosr_cosp = 1.0 - 2.0 * (v.
x * v.
x + v.
y * v.
y );
+
223 euler.
x = std::atan2(sinr_cosp, cosr_cosp);
+
+
+
226 double sinp = 2.0 * (v.
w * v.
y - v.
z * v.
x );
+
227 if (std::abs(sinp) >= 1)
+
228 euler.
y = std::copysign(
PI / 2, sinp);
+
+
230 euler.
y = std::asin(sinp);
+
+
+
233 double siny_cosp = 2.0 * (v.
w * v.
z + v.
x * v.
y );
+
234 double cosy_cosp = 1.0 - 2.0 * (v.
y * v.
y + v.
z * v.
z );
+
235 euler.
z = std::atan2(siny_cosp, cosy_cosp);
+
+
+
+
+
240 isCacheUpToDate_matrix =
true ;
+
+
+
+
+
+
+
+
248 if (!isCacheUpToDate_matrix)
+
+
+
+
252 const double sqx = v.
x * v.
x ;
+
253 const double sqy = v.
y * v.
y ;
+
254 const double sqz = v.
z * v.
z ;
+
255 const double sqw = v.
w * v.
w ;
+
256 const double x = v.
x ;
+
257 const double y = v.
y ;
+
258 const double z = v.
z ;
+
259 const double w = v.
w ;
+
+
+
262 double invs = 1.0 / (sqx + sqy + sqz + sqw);
+
+
+
+
+
267 m.
c = ((2 * x * z) - (2 * w * y)) * invs;
+
268 m.
f = (1 - (2 * sqx) - (2 * sqz)) * invs;
+
269 m.
i = ((2 * x * z) + (2 * w * y)) * invs;
+
+
+
272 m.
a = (1 - (2 * sqy) - (2 * sqz)) * invs;
+
273 m.
g = ((2 * y * z) + (2 * w * x)) * invs;
+
274 m.
j = ((2 * y * z) - (2 * w * x)) * invs;
+
+
+
277 m.
b = ((2 * x * v.
y ) + (2 * w * z)) * invs;
+
278 m.
e = ((2 * x * v.
y ) - (2 * w * z)) * invs;
+
279 m.
k = (1 - (2 * sqx) - (2 * sqy)) * invs;
+
+
+
+
+
284 isCacheUpToDate_matrix =
true ;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
314 void Quaternion::InvalidateCache()
+
+
316 isCacheUpToDate_euler =
false ;
+
317 isCacheUpToDate_matrix =
false ;
+
318 isCacheUpToDate_inverse =
false ;
+
+
+
+
+
+
+
+
+
327 os <<
"[" << q.v <<
"]" ;
+
+
+
+
+
+
333 os << L
"[" << q.v << L
"]" ;
+
+
+
+
+Quaternion operator/(Quaternion &q) const
Divides (applies)
+
+Matrix4x4 ToRotationMatrix() const
Will return a rotation matrix representing this Quaternions rotation.
+Vector4d GetRawValues() const
Will return the raw four-dimensional values.
+
+Quaternion AngleBetween(const Quaternion &other) const
Will return the value between two Quaternion's as another Quaternion.
+
+Quaternion Lerp(const Quaternion &other, double t) const
Will return the lerp result between two quaternions.
+
+Quaternion UnitQuaternion() const
+
+
+Vector4< double > Vector4d
+#define PI
Pi up to 50 decimal places.
+
+#define Deg2Rad
Factor to convert degrees to radians.
+
+Vector3d ToEulerAngles() const
Will return euler angles representing this Quaternion's rotation.
+
+Vector4< double > Lerp(const Vector4< T > &other, double t) const
Will return a lerp result between this and another vector.
+Quaternion operator=(const Quaternion &q)
Copies.
+
+
+
+Quaternion operator*(const Quaternion &q) const
Multiplies (applies)
+A matrix 4x4 class representing a 3d transformation.
+
+Quaternion & operator*=(const Quaternion &q)
Also multiplies.
+bool Similar(const Vector4< T > &other, double epsilon=0.00001) const
Will compare if two vectors are similar to a certain epsilon value.
+
+void SetRawValues(const Vector4d values)
Will set the raw four-dimensional values.
+double Magnitude() const
Will compute the magnitude.
+
+
+
+Vector3d RotateVector(const Vector3d &vec) const
Will rotate a vector by this quaternion.
+double SqrMagnitude() const
Will compute the square magnitude.
+
+std::ostream & operator<<(std::ostream &os, const Matrix4x4 &m)
+Quaternion Conjugate() const
+Quaternion Inverse() const
+bool operator==(const Quaternion &q) const
+
+3D rotation representation
+
+#define Rad2Deg
Factor to convert radians to degrees.
+
+bool operator!=(const Quaternion &q) const
+Quaternion & operator/=(const Quaternion &q)
Also divides.
+
+
+
+
+
+
+
diff --git a/Doxygen/build/Quaternion_8h.html b/Doxygen/build/Quaternion_8h.html
new file mode 100644
index 0000000..3f5bd9d
--- /dev/null
+++ b/Doxygen/build/Quaternion_8h.html
@@ -0,0 +1,134 @@
+
+
+
+
+
+
+
+Leonetienne/Eule: Eule/Quaternion.h File Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Leonetienne/Eule
+
+ Homemade math library, mainly targetted towards computer graphics
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
#include "Vector3.h "
+
#include "Vector4.h "
+
#include "Matrix4x4.h "
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Go to the source code of this file.
+
+
+
+
+
+
diff --git a/Doxygen/build/Quaternion_8h__dep__incl.map b/Doxygen/build/Quaternion_8h__dep__incl.map
new file mode 100644
index 0000000..6c700c6
--- /dev/null
+++ b/Doxygen/build/Quaternion_8h__dep__incl.map
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/Doxygen/build/Quaternion_8h__dep__incl.md5 b/Doxygen/build/Quaternion_8h__dep__incl.md5
new file mode 100644
index 0000000..513a0cb
--- /dev/null
+++ b/Doxygen/build/Quaternion_8h__dep__incl.md5
@@ -0,0 +1 @@
+0219cd7956ac16cdc9c91c9605d3285a
\ No newline at end of file
diff --git a/Doxygen/build/Quaternion_8h__dep__incl.png b/Doxygen/build/Quaternion_8h__dep__incl.png
new file mode 100644
index 0000000..542be95
Binary files /dev/null and b/Doxygen/build/Quaternion_8h__dep__incl.png differ
diff --git a/Doxygen/build/Quaternion_8h__incl.map b/Doxygen/build/Quaternion_8h__incl.map
new file mode 100644
index 0000000..774d6a5
--- /dev/null
+++ b/Doxygen/build/Quaternion_8h__incl.map
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Doxygen/build/Quaternion_8h__incl.md5 b/Doxygen/build/Quaternion_8h__incl.md5
new file mode 100644
index 0000000..b35b1f6
--- /dev/null
+++ b/Doxygen/build/Quaternion_8h__incl.md5
@@ -0,0 +1 @@
+634a4ab00421470b51e923cdf9e8b35f
\ No newline at end of file
diff --git a/Doxygen/build/Quaternion_8h__incl.png b/Doxygen/build/Quaternion_8h__incl.png
new file mode 100644
index 0000000..7dc20f0
Binary files /dev/null and b/Doxygen/build/Quaternion_8h__incl.png differ
diff --git a/Doxygen/build/Quaternion_8h_source.html b/Doxygen/build/Quaternion_8h_source.html
new file mode 100644
index 0000000..4e9d032
--- /dev/null
+++ b/Doxygen/build/Quaternion_8h_source.html
@@ -0,0 +1,194 @@
+
+
+
+
+
+
+
+Leonetienne/Eule: Eule/Quaternion.h Source File
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Leonetienne/Eule
+
+ Homemade math library, mainly targetted towards computer graphics
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Go to the documentation of this file.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
86 void InvalidateCache();
+
+
+
89 mutable bool isCacheUpToDate_euler =
false ;
+
+
+
92 mutable bool isCacheUpToDate_matrix =
false ;
+
+
+
95 mutable bool isCacheUpToDate_inverse =
false ;
+
+
+
+
+
+Quaternion operator/(Quaternion &q) const
Divides (applies)
+Matrix4x4 ToRotationMatrix() const
Will return a rotation matrix representing this Quaternions rotation.
+Vector4d GetRawValues() const
Will return the raw four-dimensional values.
+Quaternion AngleBetween(const Quaternion &other) const
Will return the value between two Quaternion's as another Quaternion.
+
+Quaternion Lerp(const Quaternion &other, double t) const
Will return the lerp result between two quaternions.
+Quaternion UnitQuaternion() const
+Vector3d ToEulerAngles() const
Will return euler angles representing this Quaternion's rotation.
+Quaternion operator=(const Quaternion &q)
Copies.
+
+
+Quaternion operator*(const Quaternion &q) const
Multiplies (applies)
+A matrix 4x4 class representing a 3d transformation.
+Quaternion & operator*=(const Quaternion &q)
Also multiplies.
+void SetRawValues(const Vector4d values)
Will set the raw four-dimensional values.
+
+Vector3d RotateVector(const Vector3d &vec) const
Will rotate a vector by this quaternion.
+
+
+Quaternion Conjugate() const
+Quaternion Inverse() const
+bool operator==(const Quaternion &q) const
+friend std::ostream & operator<<(std::ostream &os, const Quaternion &q)
+3D rotation representation
+bool operator!=(const Quaternion &q) const
+Quaternion & operator/=(const Quaternion &q)
Also divides.
+
+
+
+
+
+
diff --git a/Doxygen/build/Rect_8h.html b/Doxygen/build/Rect_8h.html
new file mode 100644
index 0000000..fedae32
--- /dev/null
+++ b/Doxygen/build/Rect_8h.html
@@ -0,0 +1,117 @@
+
+
+
+
+
+
+
+Leonetienne/Eule: Eule/Rect.h File Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Leonetienne/Eule
+
+ Homemade math library, mainly targetted towards computer graphics
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Doxygen/build/Rect_8h__incl.map b/Doxygen/build/Rect_8h__incl.map
new file mode 100644
index 0000000..bb6e123
--- /dev/null
+++ b/Doxygen/build/Rect_8h__incl.map
@@ -0,0 +1,6 @@
+
+
+
+
+
+
diff --git a/Doxygen/build/Rect_8h__incl.md5 b/Doxygen/build/Rect_8h__incl.md5
new file mode 100644
index 0000000..fa4dce9
--- /dev/null
+++ b/Doxygen/build/Rect_8h__incl.md5
@@ -0,0 +1 @@
+5b67ebb9ac1fb7c31a00bb159f2570b2
\ No newline at end of file
diff --git a/Doxygen/build/Rect_8h__incl.png b/Doxygen/build/Rect_8h__incl.png
new file mode 100644
index 0000000..7dc6251
Binary files /dev/null and b/Doxygen/build/Rect_8h__incl.png differ
diff --git a/Doxygen/build/Rect_8h_source.html b/Doxygen/build/Rect_8h_source.html
new file mode 100644
index 0000000..efd3dd0
--- /dev/null
+++ b/Doxygen/build/Rect_8h_source.html
@@ -0,0 +1,104 @@
+
+
+
+
+
+
+
+Leonetienne/Eule: Eule/Rect.h Source File
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Leonetienne/Eule
+
+ Homemade math library, mainly targetted towards computer graphics
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Go to the documentation of this file.
+
2 #include "../Eule/Vector2.h"
+
+
+
+
+
+
+
+
+
+
+Trivial data structure representing a rectangle.
+
+
+
+
+
+
+
+
diff --git a/Doxygen/build/TrapazoidalPrismCollider_8cpp.html b/Doxygen/build/TrapazoidalPrismCollider_8cpp.html
new file mode 100644
index 0000000..35fa5be
--- /dev/null
+++ b/Doxygen/build/TrapazoidalPrismCollider_8cpp.html
@@ -0,0 +1,109 @@
+
+
+
+
+
+
+
+Leonetienne/Eule: Eule/TrapazoidalPrismCollider.cpp File Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Leonetienne/Eule
+
+ Homemade math library, mainly targetted towards computer graphics
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Go to the source code of this file.
+
+
+
+
+
diff --git a/Doxygen/build/TrapazoidalPrismCollider_8cpp__incl.map b/Doxygen/build/TrapazoidalPrismCollider_8cpp__incl.map
new file mode 100644
index 0000000..0ead1cb
--- /dev/null
+++ b/Doxygen/build/TrapazoidalPrismCollider_8cpp__incl.map
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Doxygen/build/TrapazoidalPrismCollider_8cpp__incl.md5 b/Doxygen/build/TrapazoidalPrismCollider_8cpp__incl.md5
new file mode 100644
index 0000000..8ece64c
--- /dev/null
+++ b/Doxygen/build/TrapazoidalPrismCollider_8cpp__incl.md5
@@ -0,0 +1 @@
+35039ee1e3ae4141890e6d8a89d1e486
\ No newline at end of file
diff --git a/Doxygen/build/TrapazoidalPrismCollider_8cpp__incl.png b/Doxygen/build/TrapazoidalPrismCollider_8cpp__incl.png
new file mode 100644
index 0000000..19f4f0c
Binary files /dev/null and b/Doxygen/build/TrapazoidalPrismCollider_8cpp__incl.png differ
diff --git a/Doxygen/build/TrapazoidalPrismCollider_8cpp_source.html b/Doxygen/build/TrapazoidalPrismCollider_8cpp_source.html
new file mode 100644
index 0000000..dc7bab0
--- /dev/null
+++ b/Doxygen/build/TrapazoidalPrismCollider_8cpp_source.html
@@ -0,0 +1,213 @@
+
+
+
+
+
+
+
+Leonetienne/Eule: Eule/TrapazoidalPrismCollider.cpp Source File
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Leonetienne/Eule
+
+ Homemade math library, mainly targetted towards computer graphics
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Go to the documentation of this file.
+
+
+
+
+
+
+
+
+
+
+
12 vertices = other.vertices;
+
13 faceNormals = other.faceNormals;
+
+
+
+
+
+
+
20 vertices = std::move(other.vertices);
+
21 faceNormals = std::move(other.faceNormals);
+
+
+
+
+
+
+
28 return vertices[index];
+
+
+
+
+
33 vertices[index] = value;
+
34 GenerateNormalsFromVertices();
+
+
+
+
38 void TrapazoidalPrismCollider::GenerateNormalsFromVertices()
+
+
40 faceNormals[(std::size_t)FACE_NORMALS::LEFT] =
+
+
+
+
44 faceNormals[(std::size_t)FACE_NORMALS::RIGHT] =
+
+
+
+
48 faceNormals[(std::size_t)FACE_NORMALS::FRONT] =
+
+
+
+
52 faceNormals[(std::size_t)FACE_NORMALS::BACK] =
+
+
+
+
56 faceNormals[(std::size_t)FACE_NORMALS::TOP] =
+
+
+
+
60 faceNormals[(std::size_t)FACE_NORMALS::BOTTOM] =
+
+
+
+
+
+
+
67 double TrapazoidalPrismCollider::FaceDot(FACE_NORMALS face,
const Vector3d & point)
const
+
+
+
70 std::size_t coreVertexIdx;
+
+
+
73 case FACE_NORMALS::LEFT:
+
+
+
+
77 case FACE_NORMALS::RIGHT:
+
+
+
+
81 case FACE_NORMALS::FRONT:
+
+
+
+
85 case FACE_NORMALS::BACK:
+
+
+
+
89 case FACE_NORMALS::TOP:
+
+
+
+
93 case FACE_NORMALS::BOTTOM:
+
+
+
+
+
98 if ((std::size_t)face < 6)
+
99 return faceNormals[(std::size_t)face].DotProduct(point - vertices[coreVertexIdx]);
+
+
+
+
+
+
105 for (std::size_t i = 0; i < 6; i++)
+
106 if (FaceDot((FACE_NORMALS)i, point) < 0)
+
+
+
+
+
+static constexpr std::size_t RIGHT
+
+static constexpr std::size_t BACK
+
+static constexpr std::size_t FRONT
+static constexpr std::size_t BOTTOM
+void operator=(const TrapazoidalPrismCollider &other)
+static constexpr std::size_t LEFT
+void SetVertex(std::size_t index, const Vector3d value)
Will set the value of a specific vertex.
+bool Contains(const Vector3d &point) const override
Tests, if this Collider contains a point.
+A collider describing a trapazoidal prism.
+TrapazoidalPrismCollider()
+const Vector3d & GetVertex(std::size_t index) const
Will return a specific vertex.
+static constexpr std::size_t TOP
+
+
+
+
+
diff --git a/Doxygen/build/TrapazoidalPrismCollider_8h.html b/Doxygen/build/TrapazoidalPrismCollider_8h.html
new file mode 100644
index 0000000..db661d1
--- /dev/null
+++ b/Doxygen/build/TrapazoidalPrismCollider_8h.html
@@ -0,0 +1,134 @@
+
+
+
+
+
+
+
+Leonetienne/Eule: Eule/TrapazoidalPrismCollider.h File Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Leonetienne/Eule
+
+ Homemade math library, mainly targetted towards computer graphics
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
#include "Vector3.h "
+
#include "Collider.h "
+
#include <array>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Go to the source code of this file.
+
+
+
+
+
+
diff --git a/Doxygen/build/TrapazoidalPrismCollider_8h__dep__incl.map b/Doxygen/build/TrapazoidalPrismCollider_8h__dep__incl.map
new file mode 100644
index 0000000..2f2c4ce
--- /dev/null
+++ b/Doxygen/build/TrapazoidalPrismCollider_8h__dep__incl.map
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/Doxygen/build/TrapazoidalPrismCollider_8h__dep__incl.md5 b/Doxygen/build/TrapazoidalPrismCollider_8h__dep__incl.md5
new file mode 100644
index 0000000..7b5ae4c
--- /dev/null
+++ b/Doxygen/build/TrapazoidalPrismCollider_8h__dep__incl.md5
@@ -0,0 +1 @@
+454e47315f9721a30455a4d878793baf
\ No newline at end of file
diff --git a/Doxygen/build/TrapazoidalPrismCollider_8h__dep__incl.png b/Doxygen/build/TrapazoidalPrismCollider_8h__dep__incl.png
new file mode 100644
index 0000000..b277e77
Binary files /dev/null and b/Doxygen/build/TrapazoidalPrismCollider_8h__dep__incl.png differ
diff --git a/Doxygen/build/TrapazoidalPrismCollider_8h__incl.map b/Doxygen/build/TrapazoidalPrismCollider_8h__incl.map
new file mode 100644
index 0000000..bdf82b8
--- /dev/null
+++ b/Doxygen/build/TrapazoidalPrismCollider_8h__incl.map
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Doxygen/build/TrapazoidalPrismCollider_8h__incl.md5 b/Doxygen/build/TrapazoidalPrismCollider_8h__incl.md5
new file mode 100644
index 0000000..140b189
--- /dev/null
+++ b/Doxygen/build/TrapazoidalPrismCollider_8h__incl.md5
@@ -0,0 +1 @@
+0a77a0b440c18a81fcd925c01f564edc
\ No newline at end of file
diff --git a/Doxygen/build/TrapazoidalPrismCollider_8h__incl.png b/Doxygen/build/TrapazoidalPrismCollider_8h__incl.png
new file mode 100644
index 0000000..ccb508b
Binary files /dev/null and b/Doxygen/build/TrapazoidalPrismCollider_8h__incl.png differ
diff --git a/Doxygen/build/TrapazoidalPrismCollider_8h_source.html b/Doxygen/build/TrapazoidalPrismCollider_8h_source.html
new file mode 100644
index 0000000..f753ef5
--- /dev/null
+++ b/Doxygen/build/TrapazoidalPrismCollider_8h_source.html
@@ -0,0 +1,158 @@
+
+
+
+
+
+
+
+Leonetienne/Eule: Eule/TrapazoidalPrismCollider.h Source File
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Leonetienne/Eule
+
+ Homemade math library, mainly targetted towards computer graphics
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Go to the documentation of this file.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
32 static constexpr std::size_t
BACK = 0;
+
33 static constexpr std::size_t
FRONT = 4;
+
34 static constexpr std::size_t
LEFT = 0;
+
35 static constexpr std::size_t
RIGHT = 2;
+
36 static constexpr std::size_t
BOTTOM = 0;
+
37 static constexpr std::size_t
TOP = 1;
+
+
+
40 enum class FACE_NORMALS : std::size_t;
+
+
43 void GenerateNormalsFromVertices();
+
+
46 double FaceDot(FACE_NORMALS face, const Vector3d& point) const;
+
+
48 std::array<Vector3d, 8> vertices;
+
+
+
+
52 enum class FACE_NORMALS : std::size_t
+
+
+
+
+
+
+
+
+
61 std::array<Vector3d, 6> faceNormals;
+
+
+
+static constexpr std::size_t RIGHT
+Abstract class of a collider domain.
+static constexpr std::size_t BACK
+
+static constexpr std::size_t FRONT
+static constexpr std::size_t BOTTOM
+void operator=(const TrapazoidalPrismCollider &other)
+static constexpr std::size_t LEFT
+void SetVertex(std::size_t index, const Vector3d value)
Will set the value of a specific vertex.
+bool Contains(const Vector3d &point) const override
Tests, if this Collider contains a point.
+
+A collider describing a trapazoidal prism.
+TrapazoidalPrismCollider()
+const Vector3d & GetVertex(std::size_t index) const
Will return a specific vertex.
+
+static constexpr std::size_t TOP
+
+
+
+
+
diff --git a/Doxygen/build/Vector2_8cpp.html b/Doxygen/build/Vector2_8cpp.html
new file mode 100644
index 0000000..bea132f
--- /dev/null
+++ b/Doxygen/build/Vector2_8cpp.html
@@ -0,0 +1,118 @@
+
+
+
+
+
+
+
+Leonetienne/Eule: Eule/Vector2.cpp File Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Leonetienne/Eule
+
+ Homemade math library, mainly targetted towards computer graphics
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
#include "Vector2.h "
+
#include "Math.h "
+
#include <iostream>
+
#include <immintrin.h>
+
#include "Vector3.h "
+
#include "Vector4.h "
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Go to the source code of this file.
+
+
+
+
+
diff --git a/Doxygen/build/Vector2_8cpp__incl.map b/Doxygen/build/Vector2_8cpp__incl.map
new file mode 100644
index 0000000..4da9149
--- /dev/null
+++ b/Doxygen/build/Vector2_8cpp__incl.map
@@ -0,0 +1,17 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Doxygen/build/Vector2_8cpp__incl.md5 b/Doxygen/build/Vector2_8cpp__incl.md5
new file mode 100644
index 0000000..9794b11
--- /dev/null
+++ b/Doxygen/build/Vector2_8cpp__incl.md5
@@ -0,0 +1 @@
+b35543da7b888c6bd84dab2507034d1c
\ No newline at end of file
diff --git a/Doxygen/build/Vector2_8cpp__incl.png b/Doxygen/build/Vector2_8cpp__incl.png
new file mode 100644
index 0000000..a8c0654
Binary files /dev/null and b/Doxygen/build/Vector2_8cpp__incl.png differ
diff --git a/Doxygen/build/Vector2_8cpp_source.html b/Doxygen/build/Vector2_8cpp_source.html
new file mode 100644
index 0000000..0c2eb2a
--- /dev/null
+++ b/Doxygen/build/Vector2_8cpp_source.html
@@ -0,0 +1,802 @@
+
+
+
+
+
+
+
+Leonetienne/Eule: Eule/Vector2.cpp Source File
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Leonetienne/Eule
+
+ Homemade math library, mainly targetted towards computer graphics
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Go to the documentation of this file.
+
+
+
+
+
6 #ifndef _EULE_NO_INTRINSICS_
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
24 #ifndef _EULE_NO_INTRINSICS_
+
+
+
27 __m256 __vector_self = _mm256_set_ps(0,0,0,0,0,0, (
float )y, (
float )x);
+
28 __m256 __vector_other = _mm256_set_ps(0,0,0,0,0,0, (
float )other.
y , (
float )other.
x );
+
+
+
31 const int mask = 0x31;
+
32 __m256 __dot = _mm256_dp_ps(__vector_self, __vector_other, mask);
+
+
+
+
36 _mm256_storeu_ps(result, __dot);
+
+
+
+
+
41 return (x * other.
x ) +
+
+
+
+
+
+
+
+
49 int iDot = (x * other.
x ) +
+
+
+
+
+
+
+
+
+
+
+
60 return (x * other.
y ) -
+
+
+
+
+
+
+
67 int iCross = (x * other.
y ) -
+
+
+
70 return (
double )iCross;
+
+
+
+
+
+
+
+
+
79 return DotProduct(*
this );
+
+
+
+
+
+
85 int iSqrMag = x*x + y*y;
+
86 return (
double )iSqrMag;
+
+
+
+
+
+
92 return sqrt(SqrMagnitude());
+
+
+
+
+
+
+
99 #ifndef _EULE_NO_INTRINSICS_
+
+
+
102 __m256d __vector_self = _mm256_set_pd(0, 0, y, x);
+
103 __m256d __vector_scalar = _mm256_set_pd(0, 0, scalar.
y , scalar.
x );
+
+
+
106 __m256d __product = _mm256_mul_pd(__vector_self, __vector_scalar);
+
+
+
+
110 _mm256_storeu_pd(result, __product);
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
148 double length = Magnitude();
+
+
+
+
+
+
+
+
+
+
158 #ifndef _EULE_NO_INTRINSICS_
+
+
+
161 __m256d __vec = _mm256_set_pd(0, 0, y, x);
+
162 __m256d __len = _mm256_set1_pd(length);
+
+
+
165 __m256d __prod = _mm256_div_pd(__vec, __len);
+
+
+
+
169 _mm256_storeu_pd(prod, __prod);
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
189 std::cerr <<
"Stop normalizing int-vectors!!" << std::endl;
+
+
+
+
+
+
+
+
+
+
+
200 const double it = 1.0 - t;
+
+
202 #ifndef _EULE_NO_INTRINSICS_
+
+
+
205 __m256d __vector_self = _mm256_set_pd(0, 0, y, x);
+
206 __m256d __vector_other = _mm256_set_pd(0, 0, other.
y , other.
x );
+
207 __m256d __t = _mm256_set1_pd(t);
+
208 __m256d __it = _mm256_set1_pd(it);
+
+
+
+
+
213 __m256d __sum = _mm256_set1_pd(0);
+
+
215 __sum = _mm256_fmadd_pd(__vector_self, __it, __sum);
+
216 __sum = _mm256_fmadd_pd(__vector_other, __t, __sum);
+
+
+
+
220 _mm256_storeu_pd(sum, __sum);
+
+
+
+
+
+
+
227 x = it * x + t * other.
x ;
+
228 y = it * y + t * other.
y ;
+
+
+
+
+
+
+
+
+
+
+
+
240 const double it = 1.0 - t;
+
+
242 x = (int)(it * (
double )x + t * (double)other.
x );
+
243 y = (int)(it * (
double )y + t * (double)other.
y );
+
+
+
+
+
+
+
+
251 copy.LerpSelf(other, t);
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
276 throw std::out_of_range(
"Array descriptor on Vector2<T> out of range!" );
+
+
+
+
+
+
+
+
+
+
+
+
+
+
290 throw std::out_of_range(
"Array descriptor on Vector2<T> out of range!" );
+
+
+
+
+
+
+
+
298 (::Math::Similar(x, other.
x , epsilon)) &&
+
299 (::Math::Similar(y, other.
y , epsilon))
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
318 #ifndef _EULE_NO_INTRINSICS_
+
+
+
321 __m256d __vector_self = _mm256_set_pd(0, 0, y, x);
+
322 __m256d __vector_other = _mm256_set_pd(0, 0, other.
y , other.
x );
+
+
+
325 __m256d __sum = _mm256_add_pd(__vector_self, __vector_other);
+
+
+
+
329 _mm256_storeu_pd(sum, __sum);
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
358 #ifndef _EULE_NO_INTRINSICS_
+
+
+
361 __m256d __vector_self = _mm256_set_pd(0, 0, y, x);
+
362 __m256d __vector_other = _mm256_set_pd(0, 0, other.
y , other.
x );
+
+
+
365 __m256d __sum = _mm256_add_pd(__vector_self, __vector_other);
+
+
+
+
369 _mm256_storeu_pd(sum, __sum);
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
396 #ifndef _EULE_NO_INTRINSICS_
+
+
+
399 __m256d __vector_self = _mm256_set_pd(0, 0, y, x);
+
400 __m256d __vector_other = _mm256_set_pd(0, 0, other.
y , other.
x );
+
+
+
403 __m256d __diff = _mm256_sub_pd(__vector_self, __vector_other);
+
+
+
+
407 _mm256_storeu_pd(diff, __diff);
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
436 #ifndef _EULE_NO_INTRINSICS_
+
+
+
439 __m256d __vector_self = _mm256_set_pd(0, 0, y, x);
+
440 __m256d __vector_other = _mm256_set_pd(0, 0, other.
y , other.
x );
+
+
+
443 __m256d __diff = _mm256_sub_pd(__vector_self, __vector_other);
+
+
+
+
447 _mm256_storeu_pd(diff, __diff);
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
474 #ifndef _EULE_NO_INTRINSICS_
+
+
+
477 __m256d __vector_self = _mm256_set_pd(0, 0, y, x);
+
478 __m256d __scalar = _mm256_set1_pd(scale);
+
+
+
481 __m256d __prod = _mm256_mul_pd(__vector_self, __scalar);
+
+
+
+
485 _mm256_storeu_pd(prod, __prod);
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
515 #ifndef _EULE_NO_INTRINSICS_
+
+
+
518 __m256d __vector_self = _mm256_set_pd(0, 0, y, x);
+
519 __m256d __scalar = _mm256_set1_pd(scale);
+
+
+
522 __m256d __prod = _mm256_mul_pd(__vector_self, __scalar);
+
+
+
+
526 _mm256_storeu_pd(prod, __prod);
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
553 #ifndef _EULE_NO_INTRINSICS_
+
+
+
556 __m256d __vector_self = _mm256_set_pd(0, 0, y, x);
+
557 __m256d __scalar = _mm256_set1_pd(scale);
+
+
+
560 __m256d __prod = _mm256_div_pd(__vector_self, __scalar);
+
+
+
+
564 _mm256_storeu_pd(prod, __prod);
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
594 #ifndef _EULE_NO_INTRINSICS_
+
+
+
597 __m256d __vector_self = _mm256_set_pd(0, 0, y, x);
+
598 __m256d __scalar = _mm256_set1_pd(scale);
+
+
+
601 __m256d __prod = _mm256_div_pd(__vector_self, __scalar);
+
+
+
+
605 _mm256_storeu_pd(prod, __prod);
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
641 x = std::move(other.
x );
+
642 y = std::move(other.
y );
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
658 return !operator==(other);
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
689 template <
typename T>
+
+
691 template <
typename T>
+
+
693 template <
typename T>
+
+
695 template <
typename T>
+
+
697 template <
typename T>
+
+
699 template <
typename T>
+
+
+double DotProduct(const Vector2< T > &other) const
Will compute the dot product to another Vector2.
+Representation of a 3d vector.
+
+Vector2< double > ToDouble() const
Will convert this vector to a Vector2d.
+
+void NormalizeSelf()
Will normalize this vector.
+
+
+
+
+
+
+void LerpSelf(const Vector2< T > &other, double t)
Will lerp itself towards other by t.
+Representation of a 4d vector.
+
+
+
+
diff --git a/Doxygen/build/Vector2_8h.html b/Doxygen/build/Vector2_8h.html
new file mode 100644
index 0000000..cfe804f
--- /dev/null
+++ b/Doxygen/build/Vector2_8h.html
@@ -0,0 +1,143 @@
+
+
+
+
+
+
+
+Leonetienne/Eule: Eule/Vector2.h File Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Leonetienne/Eule
+
+ Homemade math library, mainly targetted towards computer graphics
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
#include <cstdlib>
+#include <sstream>
+
+
Go to the source code of this file.
+
+
+
+
+
+
diff --git a/Doxygen/build/Vector2_8h__dep__incl.map b/Doxygen/build/Vector2_8h__dep__incl.map
new file mode 100644
index 0000000..b7acf5c
--- /dev/null
+++ b/Doxygen/build/Vector2_8h__dep__incl.map
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
diff --git a/Doxygen/build/Vector2_8h__dep__incl.md5 b/Doxygen/build/Vector2_8h__dep__incl.md5
new file mode 100644
index 0000000..00b2a8b
--- /dev/null
+++ b/Doxygen/build/Vector2_8h__dep__incl.md5
@@ -0,0 +1 @@
+51ead09597156a62231b4f13138c94a8
\ No newline at end of file
diff --git a/Doxygen/build/Vector2_8h__dep__incl.png b/Doxygen/build/Vector2_8h__dep__incl.png
new file mode 100644
index 0000000..e20c662
Binary files /dev/null and b/Doxygen/build/Vector2_8h__dep__incl.png differ
diff --git a/Doxygen/build/Vector2_8h__incl.map b/Doxygen/build/Vector2_8h__incl.map
new file mode 100644
index 0000000..fc3c55e
--- /dev/null
+++ b/Doxygen/build/Vector2_8h__incl.map
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/Doxygen/build/Vector2_8h__incl.md5 b/Doxygen/build/Vector2_8h__incl.md5
new file mode 100644
index 0000000..43ba1de
--- /dev/null
+++ b/Doxygen/build/Vector2_8h__incl.md5
@@ -0,0 +1 @@
+16a3daa708990df0b2edd4c5f8400b48
\ No newline at end of file
diff --git a/Doxygen/build/Vector2_8h__incl.png b/Doxygen/build/Vector2_8h__incl.png
new file mode 100644
index 0000000..a9c69d4
Binary files /dev/null and b/Doxygen/build/Vector2_8h__incl.png differ
diff --git a/Doxygen/build/Vector2_8h_source.html b/Doxygen/build/Vector2_8h_source.html
new file mode 100644
index 0000000..f07acc8
--- /dev/null
+++ b/Doxygen/build/Vector2_8h_source.html
@@ -0,0 +1,216 @@
+
+
+
+
+
+
+
+Leonetienne/Eule: Eule/Vector2.h Source File
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Leonetienne/Eule
+
+ Homemade math library, mainly targetted towards computer graphics
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Go to the documentation of this file.
+
+
+
+
+
+
7 template <
typename T>
class Vector3;
+
+
+
+
+
+
+
+
+
19 Vector2 (
const Vector2<T>& other) =
default ;
+
20 Vector2 (Vector2<T>&& other) noexcept =
default ;
+
+
23 double DotProduct (
const Vector2<T>& other)
const ;
+
+
+
+
+
+
+
+
35 [[nodiscard]] Vector2<double>
Normalize ()
const ;
+
+
+
+
41 Vector2<T>
VectorScale (
const Vector2<T>& scalar)
const ;
+
+
44 void LerpSelf (
const Vector2<T>& other,
double t);
+
+
47 [[nodiscard]] Vector2<double>
Lerp (
const Vector2<T>& other,
double t)
const ;
+
+
50 [[nodiscard]]
bool Similar (
const Vector2<T>& other,
double epsilon = 0.00001)
const ;
+
+
53 [[nodiscard]] Vector2<int>
ToInt ()
const ;
+
+
56 [[nodiscard]] Vector2<double>
ToDouble ()
const ;
+
+
+
+
+
61 Vector2<T>
operator+ (
const Vector2<T>& other)
const ;
+
+
63 Vector2<T>
operator- (
const Vector2<T>& other)
const ;
+
+
65 Vector2<T>
operator* (
const T scale)
const ;
+
+
67 Vector2<T>
operator/ (
const T scale)
const ;
+
+
+
+
71 operator Vector3<T>()
const ;
+
72 operator Vector4<T>()
const ;
+
+
+
75 void operator= (Vector2<T>&& other) noexcept;
+
+
77 bool operator== (
const Vector2<T>& other)
const ;
+
78 bool operator!= (
const Vector2<T>& other)
const ;
+
+
+
+
82 return os <<
"[x: " << v.
x <<
" y: " << v.
y <<
"]" ;
+
+
+
+
86 return os << L
"[x: " << v.
x << L
" y: " << v.
y << L
"]" ;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Vector2< double > Normalize() const
Will return the normalization of this vector.
+bool operator!=(const Vector2< T > &other) const
+
+Vector2< T > operator+(const Vector2< T > &other) const
+void operator+=(const Vector2< T > &other)
+double DotProduct(const Vector2< T > &other) const
Will compute the dot product to another Vector2.
+static const Vector2< double > left
+static const Vector2< double > up
+double Magnitude() const
Will compute the magnitude.
+void operator*=(const T scale)
+Vector2< T > operator/(const T scale) const
+static const Vector2< double > zero
+Vector2< T > VectorScale(const Vector2< T > &scalar) const
Will scale self.n by scalar.n.
+Vector2< int > ToInt() const
Will convert this vector to a Vector2i.
+
+T & operator[](std::size_t idx)
+static const Vector2< double > one
+Vector2< T > operator*(const T scale) const
+void operator/=(const T scale)
+double SqrMagnitude() const
Will compute the square magnitude.
+Vector2< double > Lerp(const Vector2< T > &other, double t) const
Will return a lerp result between this and another vector.
+double CrossProduct(const Vector2< T > &other) const
Will compute the cross product to another Vector2.
+Vector2< double > ToDouble() const
Will convert this vector to a Vector2d.
+void NormalizeSelf()
Will normalize this vector.
+Vector2< T > operator-() const
+friend std::ostream & operator<<(std::ostream &os, const Vector2< T > &v)
+Representation of a 2d vector.
+Vector2< double > Vector2d
+void operator=(const Vector2< T > &other)
Conversion method.
+
+
+bool Similar(const Vector2< T > &other, double epsilon=0.00001) const
Will compare if two vectors are similar to a certain epsilon value.
+static const Vector2< double > right
+void operator-=(const Vector2< T > &other)
+static const Vector2< double > down
+bool operator==(const Vector2< T > &other) const
+
+void LerpSelf(const Vector2< T > &other, double t)
Will lerp itself towards other by t.
+Representation of a 4d vector.
+
+
+
+
+
diff --git a/Doxygen/build/Vector3_8cpp.html b/Doxygen/build/Vector3_8cpp.html
new file mode 100644
index 0000000..1008554
--- /dev/null
+++ b/Doxygen/build/Vector3_8cpp.html
@@ -0,0 +1,118 @@
+
+
+
+
+
+
+
+Leonetienne/Eule: Eule/Vector3.cpp File Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Leonetienne/Eule
+
+ Homemade math library, mainly targetted towards computer graphics
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
#include "Vector3.h "
+
#include "Math.h "
+
#include <iostream>
+
#include <immintrin.h>
+
#include "Vector2.h "
+
#include "Vector4.h "
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Go to the source code of this file.
+
+
+
+
+
diff --git a/Doxygen/build/Vector3_8cpp__incl.map b/Doxygen/build/Vector3_8cpp__incl.map
new file mode 100644
index 0000000..1d7cea3
--- /dev/null
+++ b/Doxygen/build/Vector3_8cpp__incl.map
@@ -0,0 +1,17 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Doxygen/build/Vector3_8cpp__incl.md5 b/Doxygen/build/Vector3_8cpp__incl.md5
new file mode 100644
index 0000000..c6df49e
--- /dev/null
+++ b/Doxygen/build/Vector3_8cpp__incl.md5
@@ -0,0 +1 @@
+1afca43d443611dd35343256967edfc8
\ No newline at end of file
diff --git a/Doxygen/build/Vector3_8cpp__incl.png b/Doxygen/build/Vector3_8cpp__incl.png
new file mode 100644
index 0000000..b1b1b90
Binary files /dev/null and b/Doxygen/build/Vector3_8cpp__incl.png differ
diff --git a/Doxygen/build/Vector3_8cpp_source.html b/Doxygen/build/Vector3_8cpp_source.html
new file mode 100644
index 0000000..8b8c8b9
--- /dev/null
+++ b/Doxygen/build/Vector3_8cpp_source.html
@@ -0,0 +1,1007 @@
+
+
+
+
+
+
+
+Leonetienne/Eule: Eule/Vector3.cpp Source File
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Leonetienne/Eule
+
+ Homemade math library, mainly targetted towards computer graphics
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Go to the documentation of this file.
+
+
+
+
+
6 #ifndef _EULE_NO_INTRINSICS_
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
24 #ifndef _EULE_NO_INTRINSICS_
+
+
+
27 __m256 __vector_self = _mm256_set_ps(0,0,0,0,0, (
float )z, (
float )y, (
float )x);
+
28 __m256 __vector_other = _mm256_set_ps(0,0,0,0,0, (
float )other.
z , (
float )other.
y , (
float )other.
x );
+
+
+
31 const int mask = 0x71;
+
32 __m256 __dot = _mm256_dp_ps(__vector_self, __vector_other, mask);
+
+
+
+
36 _mm256_storeu_ps(result, __dot);
+
+
+
+
+
41 return (x * other.
x ) +
+
+
+
+
+
+
+
+
+
50 int iDot = (x * other.
x ) + (y * other.
y ) + (z * other.
z );
+
+
+
+
+
+
+
+
+
+
60 cp.
x = (y * other.
z ) - (z * other.
y );
+
61 cp.
y = (z * other.
x ) - (x * other.
z );
+
62 cp.
z = (x * other.
y ) - (y * other.
x );
+
+
+
+
+
+
+
+
+
71 cp.
x = ((double)y * (
double )other.
z ) - ((
double )z * (double)other.
y );
+
72 cp.
y = ((double)z * (
double )other.
x ) - ((
double )x * (double)other.
z );
+
73 cp.
z = ((double)x * (
double )other.
y ) - ((
double )y * (double)other.
x );
+
+
+
+
+
+
+
+
+
+
+
84 return DotProduct(*
this );
+
+
+
+
+
+
90 int iSqrMag = x*x + y*y + z*z;
+
91 return (
double )iSqrMag;
+
+
+
+
+
+
97 return sqrt(SqrMagnitude());
+
+
+
+
+
+
+
104 #ifndef _EULE_NO_INTRINSICS_
+
+
+
107 __m256d __vector_self = _mm256_set_pd(0, z, y, x);
+
108 __m256d __vector_scalar = _mm256_set_pd(0, scalar.
z , scalar.
y , scalar.
x );
+
+
+
111 __m256d __product = _mm256_mul_pd(__vector_self, __vector_scalar);
+
+
+
+
115 _mm256_storeu_pd(result, __product);
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
158 const double length = Magnitude();
+
+
+
+
+
+
+
+
+
+
+
169 #ifndef _EULE_NO_INTRINSICS_
+
+
+
172 __m256d __vec = _mm256_set_pd(0, z, y, x);
+
173 __m256d __len = _mm256_set1_pd(length);
+
+
+
176 __m256d __prod = _mm256_div_pd(__vec, __len);
+
+
+
+
180 _mm256_storeu_pd(prod, __prod);
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
202 std::cerr <<
"Stop normalizing int-vectors!!" << std::endl;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
216 (::Math::Similar(x, other.
x , epsilon)) &&
+
217 (::Math::Similar(y, other.
y , epsilon)) &&
+
218 (::Math::Similar(z, other.
z , epsilon))
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
246 throw std::out_of_range(
"Array descriptor on Vector3<T> out of range!" );
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
262 throw std::out_of_range(
"Array descriptor on Vector3<T> out of range!" );
+
+
+
+
+
+
+
+
+
271 const double it = 1.0 - t;
+
+
273 #ifndef _EULE_NO_INTRINSICS_
+
+
+
276 __m256d __vector_self = _mm256_set_pd(0, z, y, x);
+
277 __m256d __vector_other = _mm256_set_pd(0, other.
z , other.
y , other.
x );
+
278 __m256d __t = _mm256_set1_pd(t);
+
279 __m256d __it = _mm256_set1_pd(it);
+
+
+
+
+
284 __m256d __sum = _mm256_set1_pd(0);
+
+
286 __sum = _mm256_fmadd_pd(__vector_self, __it, __sum);
+
287 __sum = _mm256_fmadd_pd(__vector_other, __t, __sum);
+
+
+
+
291 _mm256_storeu_pd(sum, __sum);
+
+
+
+
+
+
+
+
299 x = it*x + t*other.
x ;
+
300 y = it*y + t*other.
y ;
+
301 z = it*z + t*other.
z ;
+
+
+
+
+
+
+
+
+
+
+
+
313 const double it = 1.0 - t;
+
+
315 x = (int)(it * (
double )x + t * (double)other.
x );
+
316 y = (int)(it * (
double )y + t * (double)other.
y );
+
317 z = (int)(it * (
double )z + t * (double)other.
z );
+
+
+
+
+
+
+
+
325 copy.LerpSelf(other, t);
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
342 #ifndef _EULE_NO_INTRINSICS_
+
+
+
345 __m256d __vector_self = _mm256_set_pd(0, z, y, x);
+
346 __m256d __vector_other = _mm256_set_pd(0, other.
z , other.
y , other.
x );
+
+
+
349 __m256d __sum = _mm256_add_pd(__vector_self, __vector_other);
+
+
+
+
353 _mm256_storeu_pd(sum, __sum);
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
385 #ifndef _EULE_NO_INTRINSICS_
+
+
+
388 __m256d __vector_self = _mm256_set_pd(0, z, y, x);
+
389 __m256d __vector_other = _mm256_set_pd(0, other.
z , other.
y , other.
x );
+
+
+
392 __m256d __sum = _mm256_add_pd(__vector_self, __vector_other);
+
+
+
+
396 _mm256_storeu_pd(sum, __sum);
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
426 #ifndef _EULE_NO_INTRINSICS_
+
+
+
429 __m256d __vector_self = _mm256_set_pd(0, z, y, x);
+
430 __m256d __vector_other = _mm256_set_pd(0, other.
z , other.
y , other.
x );
+
+
+
433 __m256d __diff = _mm256_sub_pd(__vector_self, __vector_other);
+
+
+
+
437 _mm256_storeu_pd(diff, __diff);
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
469 #ifndef _EULE_NO_INTRINSICS_
+
+
+
472 __m256d __vector_self = _mm256_set_pd(0, z, y, x);
+
473 __m256d __vector_other = _mm256_set_pd(0, other.
z , other.
y , other.
x );
+
+
+
476 __m256d __diff = _mm256_sub_pd(__vector_self, __vector_other);
+
+
+
+
480 _mm256_storeu_pd(diff, __diff);
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
510 #ifndef _EULE_NO_INTRINSICS_
+
+
+
513 __m256d __vector_self = _mm256_set_pd(0, z, y, x);
+
514 __m256d __scalar = _mm256_set1_pd(scale);
+
+
+
517 __m256d __prod = _mm256_mul_pd(__vector_self, __scalar);
+
+
+
+
521 _mm256_storeu_pd(prod, __prod);
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
554 #ifndef _EULE_NO_INTRINSICS_
+
+
+
557 __m256d __vector_self = _mm256_set_pd(0, z, y, x);
+
558 __m256d __scalar = _mm256_set1_pd(scale);
+
+
+
561 __m256d __prod = _mm256_mul_pd(__vector_self, __scalar);
+
+
+
+
565 _mm256_storeu_pd(prod, __prod);
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
595 #ifndef _EULE_NO_INTRINSICS_
+
+
+
598 __m256d __vector_self = _mm256_set_pd(0, z, y, x);
+
599 __m256d __scalar = _mm256_set1_pd(scale);
+
+
+
602 __m256d __prod = _mm256_div_pd(__vector_self, __scalar);
+
+
+
+
606 _mm256_storeu_pd(prod, __prod);
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
639 #ifndef _EULE_NO_INTRINSICS_
+
+
+
642 __m256d __vector_self = _mm256_set_pd(0, z, y, x);
+
643 __m256d __scalar = _mm256_set1_pd(scale);
+
+
+
646 __m256d __prod = _mm256_div_pd(__vector_self, __scalar);
+
+
+
+
650 _mm256_storeu_pd(prod, __prod);
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
682 #ifndef _EULE_NO_INTRINSICS_
+
+
684 __m256d __vecx = _mm256_set1_pd(x);
+
685 __m256d __vecy = _mm256_set1_pd(y);
+
686 __m256d __vecz = _mm256_set1_pd(z);
+
+
+
689 __m256d __mat_row0 = _mm256_set_pd(mat[0][0], mat[1][0], mat[2][0], 0);
+
690 __m256d __mat_row1 = _mm256_set_pd(mat[0][1], mat[1][1], mat[2][1], 0);
+
691 __m256d __mat_row2 = _mm256_set_pd(mat[0][2], mat[1][2], mat[2][2], 0);
+
+
+
694 __m256d __mul_vecx_row0 = _mm256_mul_pd(__vecx, __mat_row0);
+
695 __m256d __mul_vecy_row1 = _mm256_mul_pd(__vecy, __mat_row1);
+
696 __m256d __mul_vecz_row2 = _mm256_mul_pd(__vecz, __mat_row2);
+
+
+
699 __m256d __sum = _mm256_add_pd(__mul_vecx_row0, _mm256_add_pd(__mul_vecy_row1, __mul_vecz_row2));
+
+
+
702 __m256d __translation = _mm256_set_pd(mat[0][3], mat[1][3], mat[2][3], 0);
+
+
+
705 __m256d __final = _mm256_add_pd(__sum, __translation);
+
+
+
+
709 _mm256_storeu_pd(dfinal, __final);
+
+
711 newVec.
x = dfinal[3];
+
712 newVec.
y = dfinal[2];
+
713 newVec.
z = dfinal[1];
+
+
+
+
717 newVec.
x = (mat[0][0] * x) + (mat[1][0] * y) + (mat[2][0] * z);
+
718 newVec.
y = (mat[0][1] * x) + (mat[1][1] * y) + (mat[2][1] * z);
+
719 newVec.
z = (mat[0][2] * x) + (mat[1][2] * y) + (mat[2][2] * z);
+
+
+
722 newVec.
x += mat[0][3];
+
723 newVec.
y += mat[1][3];
+
724 newVec.
z += mat[2][3];
+
+
+
+
+
+
+
+
+
+
+
+
736 newVec.
x = ((mat[0][0] * x) + (mat[1][0] * y) + (mat[2][0] * z));
+
737 newVec.
y = ((mat[0][1] * x) + (mat[1][1] * y) + (mat[2][1] * z));
+
738 newVec.
z = ((mat[0][2] * x) + (mat[1][2] * y) + (mat[2][2] * z));
+
+
+
741 newVec.
x += mat[0][3];
+
742 newVec.
y += mat[1][3];
+
743 newVec.
z += mat[2][3];
+
+
+
+
+
+
+
+
+
+
+
+
+
+
757 #ifndef _EULE_NO_INTRINSICS_
+
+
759 __m256d __vecx = _mm256_set1_pd(x);
+
760 __m256d __vecy = _mm256_set1_pd(y);
+
761 __m256d __vecz = _mm256_set1_pd(z);
+
+
+
764 __m256d __mat_row0 = _mm256_set_pd(mat[0][0], mat[1][0], mat[2][0], 0);
+
765 __m256d __mat_row1 = _mm256_set_pd(mat[0][1], mat[1][1], mat[2][1], 0);
+
766 __m256d __mat_row2 = _mm256_set_pd(mat[0][2], mat[1][2], mat[2][2], 0);
+
+
+
769 __m256d __mul_vecx_row0 = _mm256_mul_pd(__vecx, __mat_row0);
+
770 __m256d __mul_vecy_row1 = _mm256_mul_pd(__vecy, __mat_row1);
+
771 __m256d __mul_vecz_row2 = _mm256_mul_pd(__vecz, __mat_row2);
+
+
+
774 __m256d __sum = _mm256_add_pd(__mul_vecx_row0, _mm256_add_pd(__mul_vecy_row1, __mul_vecz_row2));
+
+
+
777 __m256d __translation = _mm256_set_pd(mat[0][3], mat[1][3], mat[2][3], 0);
+
+
+
780 __m256d __final = _mm256_add_pd(__sum, __translation);
+
+
+
+
784 _mm256_storeu_pd(dfinal, __final);
+
+
+
+
+
+
+
+
792 x = (mat[0][0] * buffer.
x ) + (mat[0][1] * buffer.
y ) + (mat[0][2] * buffer.
z );
+
793 y = (mat[1][0] * buffer.
x ) + (mat[1][1] * buffer.
y ) + (mat[1][2] * buffer.
z );
+
794 z = (mat[2][0] * buffer.
x ) + (mat[2][1] * buffer.
y ) + (mat[2][2] * buffer.
z );
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
828 x = std::move(other.
x );
+
829 y = std::move(other.
y );
+
830 z = std::move(other.
z );
+
+
+
+
+
+
+
+
+
+
840 x = (int)((mat[0][0] * buffer.
x ) + (mat[0][1] * buffer.
y ) + (mat[0][2] * buffer.
z ));
+
841 y = (int)((mat[1][0] * buffer.
x ) + (mat[1][1] * buffer.
y ) + (mat[1][2] * buffer.
z ));
+
842 z = (int)((mat[2][0] * buffer.
x ) + (mat[2][1] * buffer.
y ) + (mat[2][2] * buffer.
z ));
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
866 return !operator==(other);
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
888 template <
typename T>
+
+
890 template <
typename T>
+
+
892 template <
typename T>
+
+
894 template <
typename T>
+
+
896 template <
typename T>
+
+
898 template <
typename T>
+
+
900 template <
typename T>
+
+
902 template <
typename T>
+
+
+void LerpSelf(const Vector3< T > &other, double t)
Will lerp itself towards other by t.
+
+Vector3< double > ToDouble() const
Will convert this vector to a Vector3d.
+
+
+
+A matrix 4x4 class representing a 3d transformation.
+
+
+Representation of a 2d vector.
+double DotProduct(const Vector3< T > &other) const
Will compute the dot product to another Vector3.
+
+void NormalizeSelf()
Will normalize this vector.
+
+
+Representation of a 4d vector.
+
+
+
+
diff --git a/Doxygen/build/Vector3_8h.html b/Doxygen/build/Vector3_8h.html
new file mode 100644
index 0000000..d45786d
--- /dev/null
+++ b/Doxygen/build/Vector3_8h.html
@@ -0,0 +1,155 @@
+
+
+
+
+
+
+
+Leonetienne/Eule: Eule/Vector3.h File Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Leonetienne/Eule
+
+ Homemade math library, mainly targetted towards computer graphics
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
#include <cstdlib>
+
#include <iomanip>
+
#include <ostream>
+
#include <sstream>
+
#include "Matrix4x4.h "
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Go to the source code of this file.
+
+
+
+
+
+
diff --git a/Doxygen/build/Vector3_8h__dep__incl.map b/Doxygen/build/Vector3_8h__dep__incl.map
new file mode 100644
index 0000000..0deaf45
--- /dev/null
+++ b/Doxygen/build/Vector3_8h__dep__incl.map
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Doxygen/build/Vector3_8h__dep__incl.md5 b/Doxygen/build/Vector3_8h__dep__incl.md5
new file mode 100644
index 0000000..627c4d5
--- /dev/null
+++ b/Doxygen/build/Vector3_8h__dep__incl.md5
@@ -0,0 +1 @@
+5923ea443852492219c66436d4bffb10
\ No newline at end of file
diff --git a/Doxygen/build/Vector3_8h__dep__incl.png b/Doxygen/build/Vector3_8h__dep__incl.png
new file mode 100644
index 0000000..4424eec
Binary files /dev/null and b/Doxygen/build/Vector3_8h__dep__incl.png differ
diff --git a/Doxygen/build/Vector3_8h__incl.map b/Doxygen/build/Vector3_8h__incl.map
new file mode 100644
index 0000000..f44a900
--- /dev/null
+++ b/Doxygen/build/Vector3_8h__incl.map
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
+
+
+
diff --git a/Doxygen/build/Vector3_8h__incl.md5 b/Doxygen/build/Vector3_8h__incl.md5
new file mode 100644
index 0000000..26828a1
--- /dev/null
+++ b/Doxygen/build/Vector3_8h__incl.md5
@@ -0,0 +1 @@
+f06a179ddc8c6cbfb08342b459b2b95e
\ No newline at end of file
diff --git a/Doxygen/build/Vector3_8h__incl.png b/Doxygen/build/Vector3_8h__incl.png
new file mode 100644
index 0000000..a5d5466
Binary files /dev/null and b/Doxygen/build/Vector3_8h__incl.png differ
diff --git a/Doxygen/build/Vector3_8h_source.html b/Doxygen/build/Vector3_8h_source.html
new file mode 100644
index 0000000..1d6b48d
--- /dev/null
+++ b/Doxygen/build/Vector3_8h_source.html
@@ -0,0 +1,227 @@
+
+
+
+
+
+
+
+Leonetienne/Eule: Eule/Vector3.h Source File
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Leonetienne/Eule
+
+ Homemade math library, mainly targetted towards computer graphics
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Go to the documentation of this file.
+
+
+
+
+
+
+
+
+
10 template <
typename T>
class Vector2;
+
11 template <
typename T>
class Vector4;
+
+
+
+
+
+
+
+
22 Vector3 (
const Vector3<T>& other) =
default ;
+
23 Vector3 (Vector3<T>&& other) noexcept =
default ;
+
+
26 double DotProduct (
const Vector3<T>& other)
const ;
+
+
29 Vector3<double>
CrossProduct (
const Vector3<T>& other)
const ;
+
+
+
+
+
+
38 [[nodiscard]] Vector3<double>
Normalize ()
const ;
+
+
+
+
44 [[nodiscard]] Vector3<T>
VectorScale (
const Vector3<T>& scalar)
const ;
+
+
47 void LerpSelf (
const Vector3<T>& other,
double t);
+
+
50 [[nodiscard]] Vector3<double>
Lerp (
const Vector3<T>& other,
double t)
const ;
+
+
53 [[nodiscard]]
bool Similar (
const Vector3<T>& other,
double epsilon = 0.00001)
const ;
+
+
56 [[nodiscard]] Vector3<int>
ToInt ()
const ;
+
+
59 [[nodiscard]] Vector3<double>
ToDouble ()
const ;
+
+
+
+
+
64 Vector3<T>
operator+ (
const Vector3<T>& other)
const ;
+
+
66 Vector3<T>
operator- (
const Vector3<T>& other)
const ;
+
+
68 Vector3<T>
operator* (
const T scale)
const ;
+
+
70 Vector3<T>
operator/ (
const T scale)
const ;
+
+
72 Vector3<T>
operator* (
const Matrix4x4& mat)
const ;
+
+
+
+
76 operator Vector2<T>()
const ;
+
77 operator Vector4<T>()
const ;
+
+
+
80 void operator= (Vector3<T>&& other) noexcept;
+
+
82 bool operator== (
const Vector3<T>& other)
const ;
+
83 bool operator!= (
const Vector3<T>& other)
const ;
+
+
+
+
87 return os <<
"[x: " << v.x <<
" y: " << v.y <<
" z: " << v.z <<
"]" ;
+
+
+
+
91 return os << L
"[x: " << v.x << L
" y: " << v.y << L
" z: " << v.z << L
"]" ;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Vector3< T > operator+(const Vector3< T > &other) const
+static const Vector3< double > right
+friend std::ostream & operator<<(std::ostream &os, const Vector3< T > &v)
+void LerpSelf(const Vector3< T > &other, double t)
Will lerp itself towards other by t.
+Vector3< double > CrossProduct(const Vector3< T > &other) const
Will compute the cross product to another Vector3.
+static const Vector3< double > left
+bool Similar(const Vector3< T > &other, double epsilon=0.00001) const
Will compare if two vectors are similar to a certain epsilon value.
+Representation of a 3d vector.
+Vector3(T _x, T _y, T _z)
+Vector3< T > operator-() const
+static const Vector3< double > down
+Vector3< double > Lerp(const Vector3< T > &other, double t) const
Will return a lerp result between this and another vector.
+static const Vector3< double > forward
+static const Vector3< double > one
+void operator=(const Vector3< T > &other)
Conversion method.
+Vector3< double > ToDouble() const
Will convert this vector to a Vector3d.
+Vector3< int > ToInt() const
Will convert this vector to a Vector3i.
+bool operator==(const Vector3< T > &other) const
+void operator*=(const T scale)
+
+Vector3< double > Vector3d
+
+
+static const Vector3< double > backward
+Vector3< double > Normalize() const
Will return the normalization of this vector.
+
+static const Vector3< double > up
+T & operator[](std::size_t idx)
+
+double DotProduct(const Vector3< T > &other) const
Will compute the dot product to another Vector3.
+Vector3< T > operator/(const T scale) const
+void operator-=(const Vector3< T > &other)
+double SqrMagnitude() const
Will compute the square magnitude.
+void operator/=(const T scale)
+bool operator!=(const Vector3< T > &other) const
+void operator+=(const Vector3< T > &other)
+double Magnitude() const
Will compute the magnitude.
+void NormalizeSelf()
Will normalize this vector.
+Vector3< T > operator*(const T scale) const
+static const Vector3< double > zero
+
+
+Vector3< T > VectorScale(const Vector3< T > &scalar) const
Will scale self.n by scalar.n.
+
+
+
+
diff --git a/Doxygen/build/Vector4_8cpp.html b/Doxygen/build/Vector4_8cpp.html
new file mode 100644
index 0000000..f1abcfc
--- /dev/null
+++ b/Doxygen/build/Vector4_8cpp.html
@@ -0,0 +1,118 @@
+
+
+
+
+
+
+
+Leonetienne/Eule: Eule/Vector4.cpp File Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Leonetienne/Eule
+
+ Homemade math library, mainly targetted towards computer graphics
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
#include "Vector4.h "
+
#include "Math.h "
+
#include <iostream>
+
#include <immintrin.h>
+
#include "Vector2.h "
+
#include "Vector3.h "
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Go to the source code of this file.
+
+
+
+
+
diff --git a/Doxygen/build/Vector4_8cpp__incl.map b/Doxygen/build/Vector4_8cpp__incl.map
new file mode 100644
index 0000000..faa7a6d
--- /dev/null
+++ b/Doxygen/build/Vector4_8cpp__incl.map
@@ -0,0 +1,17 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Doxygen/build/Vector4_8cpp__incl.md5 b/Doxygen/build/Vector4_8cpp__incl.md5
new file mode 100644
index 0000000..59af498
--- /dev/null
+++ b/Doxygen/build/Vector4_8cpp__incl.md5
@@ -0,0 +1 @@
+0823430d67194eb6b1547166859dfe71
\ No newline at end of file
diff --git a/Doxygen/build/Vector4_8cpp__incl.png b/Doxygen/build/Vector4_8cpp__incl.png
new file mode 100644
index 0000000..25b7995
Binary files /dev/null and b/Doxygen/build/Vector4_8cpp__incl.png differ
diff --git a/Doxygen/build/Vector4_8cpp_source.html b/Doxygen/build/Vector4_8cpp_source.html
new file mode 100644
index 0000000..8f3d250
--- /dev/null
+++ b/Doxygen/build/Vector4_8cpp_source.html
@@ -0,0 +1,914 @@
+
+
+
+
+
+
+
+Leonetienne/Eule: Eule/Vector4.cpp Source File
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Leonetienne/Eule
+
+ Homemade math library, mainly targetted towards computer graphics
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Go to the documentation of this file.
+
+
+
+
+
6 #ifndef _EULE_NO_INTRINSICS_
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
33 int iSqrMag = x*x + y*y + z*z + w*w;
+
34 return (
double )iSqrMag;
+
+
+
+
+
+
40 return sqrt(SqrMagnitude());
+
+
+
+
+
+
46 #ifndef _EULE_NO_INTRINSICS_
+
+
+
49 __m256d __vector_self = _mm256_set_pd(w, z, y, x);
+
50 __m256d __vector_scalar = _mm256_set_pd(scalar.
w , scalar.
z , scalar.
y , scalar.
x );
+
+
+
53 __m256d __product = _mm256_mul_pd(__vector_self, __vector_scalar);
+
+
+
+
57 _mm256_storeu_pd(result, __product);
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
103 double length = Magnitude();
+
+
+
+
+
+
+
+
+
+
+
+
115 #ifndef _EULE_NO_INTRINSICS_
+
+
+
118 __m256d __vec = _mm256_set_pd(w, z, y, x);
+
119 __m256d __len = _mm256_set1_pd(length);
+
+
+
122 __m256d __prod = _mm256_div_pd(__vec, __len);
+
+
+
+
126 _mm256_storeu_pd(prod, __prod);
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
150 std::cerr <<
"Stop normalizing int-vectors!!" << std::endl;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
165 (::Math::Similar(x, other.
x , epsilon)) &&
+
166 (::Math::Similar(y, other.
y , epsilon)) &&
+
167 (::Math::Similar(z, other.
z , epsilon)) &&
+
168 (::Math::Similar(w, other.
w , epsilon))
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
198 throw std::out_of_range(
"Array descriptor on Vector4<T> out of range!" );
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
216 throw std::out_of_range(
"Array descriptor on Vector4<T> out of range!" );
+
+
+
+
+
+
+
+
+
225 const double it = 1.0 - t;
+
+
227 #ifndef _EULE_NO_INTRINSICS_
+
+
+
230 __m256d __vector_self = _mm256_set_pd(w, z, y, x);
+
231 __m256d __vector_other = _mm256_set_pd(other.
w , other.
z , other.
y , other.
x );
+
232 __m256d __t = _mm256_set1_pd(t);
+
233 __m256d __it = _mm256_set1_pd(it);
+
+
+
+
+
238 __m256d __sum = _mm256_set1_pd(0);
+
+
240 __sum = _mm256_fmadd_pd(__vector_self, __it, __sum);
+
241 __sum = _mm256_fmadd_pd(__vector_other, __t, __sum);
+
+
+
+
245 _mm256_storeu_pd(sum, __sum);
+
+
+
+
+
+
+
+
+
254 x = it * x + t * other.
x ;
+
255 y = it * y + t * other.
y ;
+
256 z = it * z + t * other.
z ;
+
257 w = it * w + t * other.
w ;
+
+
+
+
+
+
+
+
+
+
+
+
269 const double it = 1.0 - t;
+
+
271 x = (int)(it * (
double )x + t * (double)other.
x );
+
272 y = (int)(it * (
double )y + t * (double)other.
y );
+
273 z = (int)(it * (
double )z + t * (double)other.
z );
+
274 w = (int)(it * (
double )w + t * (double)other.
w );
+
+
+
+
+
+
+
+
282 copy.LerpSelf(other, t);
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
299 #ifndef _EULE_NO_INTRINSICS_
+
+
+
302 __m256d __vector_self = _mm256_set_pd(w, z, y, x);
+
303 __m256d __vector_other = _mm256_set_pd(other.
w , other.
z , other.
y , other.
x );
+
+
+
306 __m256d __sum = _mm256_add_pd(__vector_self, __vector_other);
+
+
+
+
310 _mm256_storeu_pd(sum, __sum);
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
345 #ifndef _EULE_NO_INTRINSICS_
+
+
+
348 __m256d __vector_self = _mm256_set_pd(w, z, y, x);
+
349 __m256d __vector_other = _mm256_set_pd(other.
w , other.
z , other.
y , other.
x );
+
+
+
352 __m256d __sum = _mm256_add_pd(__vector_self, __vector_other);
+
+
+
+
356 _mm256_storeu_pd(sum, __sum);
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
389 #ifndef _EULE_NO_INTRINSICS_
+
+
+
392 __m256d __vector_self = _mm256_set_pd(w, z, y, x);
+
393 __m256d __vector_other = _mm256_set_pd(other.
w , other.
z , other.
y , other.
x );
+
+
+
396 __m256d __diff = _mm256_sub_pd(__vector_self, __vector_other);
+
+
+
+
400 _mm256_storeu_pd(diff, __diff);
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
435 #ifndef _EULE_NO_INTRINSICS_
+
+
+
438 __m256d __vector_self = _mm256_set_pd(w, z, y, x);
+
439 __m256d __vector_other = _mm256_set_pd(other.
w , other.
z , other.
y , other.
x );
+
+
+
442 __m256d __diff = _mm256_sub_pd(__vector_self, __vector_other);
+
+
+
+
446 _mm256_storeu_pd(diff, __diff);
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
479 #ifndef _EULE_NO_INTRINSICS_
+
+
+
482 __m256d __vector_self = _mm256_set_pd(w, z, y, x);
+
483 __m256d __scalar = _mm256_set1_pd(scale);
+
+
+
486 __m256d __prod = _mm256_mul_pd(__vector_self, __scalar);
+
+
+
+
490 _mm256_storeu_pd(prod, __prod);
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
526 #ifndef _EULE_NO_INTRINSICS_
+
+
+
529 __m256d __vector_self = _mm256_set_pd(w, z, y, x);
+
530 __m256d __scalar = _mm256_set1_pd(scale);
+
+
+
533 __m256d __prod = _mm256_mul_pd(__vector_self, __scalar);
+
+
+
+
537 _mm256_storeu_pd(prod, __prod);
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
570 #ifndef _EULE_NO_INTRINSICS_
+
+
+
573 __m256d __vector_self = _mm256_set_pd(w, z, y, x);
+
574 __m256d __scalar = _mm256_set1_pd(scale);
+
+
+
577 __m256d __prod = _mm256_div_pd(__vector_self, __scalar);
+
+
+
+
581 _mm256_storeu_pd(prod, __prod);
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
617 #ifndef _EULE_NO_INTRINSICS_
+
+
+
620 __m256d __vector_self = _mm256_set_pd(w, z, y, x);
+
621 __m256d __scalar = _mm256_set1_pd(scale);
+
+
+
624 __m256d __prod = _mm256_div_pd(__vector_self, __scalar);
+
+
+
+
628 _mm256_storeu_pd(prod, __prod);
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
675 newVec.
x = (mat[0][0] * x) + (mat[0][1] * y) + (mat[0][2] * z) + (mat[0][3] * w);
+
676 newVec.
y = (mat[1][0] * x) + (mat[1][1] * y) + (mat[1][2] * z) + (mat[1][3] * w);
+
677 newVec.
z = (mat[2][0] * x) + (mat[2][1] * y) + (mat[2][2] * z) + (mat[2][3] * w);
+
678 newVec.
w = (mat[3][0] * x) + (mat[3][1] * y) + (mat[3][2] * z) + (mat[3][3] * w);
+
+
+
+
+
+
+
+
+
+
688 newVec.
x = (mat[0][0] * x) + (mat[0][1] * y) + (mat[0][2] * z) + (mat[0][3] * w);
+
689 newVec.
y = (mat[1][0] * x) + (mat[1][1] * y) + (mat[1][2] * z) + (mat[1][3] * w);
+
690 newVec.
z = (mat[2][0] * x) + (mat[2][1] * y) + (mat[2][2] * z) + (mat[2][3] * w);
+
691 newVec.
w = (mat[3][0] * x) + (mat[3][1] * y) + (mat[3][2] * z) + (mat[3][3] * w);
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
710 x = (mat[0][0] * buffer.
x ) + (mat[0][1] * buffer.
y ) + (mat[0][2] * buffer.
z ) + (mat[0][3] * buffer.
w );
+
711 y = (mat[1][0] * buffer.
x ) + (mat[1][1] * buffer.
y ) + (mat[1][2] * buffer.
z ) + (mat[1][3] * buffer.
w );
+
712 z = (mat[2][0] * buffer.
x ) + (mat[2][1] * buffer.
y ) + (mat[2][2] * buffer.
z ) + (mat[2][3] * buffer.
w );
+
713 w = (mat[3][0] * buffer.
x ) + (mat[3][1] * buffer.
y ) + (mat[3][2] * buffer.
z ) + (mat[3][3] * buffer.
w );
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
743 x = std::move(other.
x );
+
744 y = std::move(other.
y );
+
745 z = std::move(other.
z );
+
746 w = std::move(other.
w );
+
+
+
+
+
+
+
+
+
+
+
+
758 x = (int)((mat[0][0] * buffer.
x ) + (mat[0][1] * buffer.
y ) + (mat[0][2] * buffer.
z ) + (mat[0][3] * buffer.
w ));
+
759 y = (int)((mat[1][0] * buffer.
x ) + (mat[1][1] * buffer.
y ) + (mat[1][2] * buffer.
z ) + (mat[1][3] * buffer.
w ));
+
760 z = (int)((mat[2][0] * buffer.
x ) + (mat[2][1] * buffer.
y ) + (mat[2][2] * buffer.
z ) + (mat[2][3] * buffer.
w ));
+
761 w = (int)((mat[3][0] * buffer.
x ) + (mat[3][1] * buffer.
y ) + (mat[3][2] * buffer.
z ) + (mat[3][3] * buffer.
w ));
+
+
+
+
+
+
+
+
769 return !operator==(other);
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
790 template <
typename T>
+
+
792 template <
typename T>
+
+
794 template <
typename T>
+
+
796 template <
typename T>
+
+
798 template <
typename T>
+
+
800 template <
typename T>
+
+
802 template <
typename T>
+
+
804 template <
typename T>
+
+
806 template <
typename T>
+
+
808 template <
typename T>
+
+
+void NormalizeSelf()
Will normalize this vector.
+Representation of a 3d vector.
+
+
+
+void LerpSelf(const Vector4< T > &other, double t)
Will lerp itself towards other by t.
+
+
+A matrix 4x4 class representing a 3d transformation.
+Vector4< double > ToDouble() const
Will convert this vector to a Vector4d.
+
+Representation of a 2d vector.
+double SqrMagnitude() const
Will compute the square magnitude.
+
+
+
+Representation of a 4d vector.
+
+
+
+
diff --git a/Doxygen/build/Vector4_8h.html b/Doxygen/build/Vector4_8h.html
new file mode 100644
index 0000000..e15a87a
--- /dev/null
+++ b/Doxygen/build/Vector4_8h.html
@@ -0,0 +1,152 @@
+
+
+
+
+
+
+
+Leonetienne/Eule: Eule/Vector4.h File Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Leonetienne/Eule
+
+ Homemade math library, mainly targetted towards computer graphics
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
#include <cstdlib>
+
#include <iomanip>
+
#include <ostream>
+
#include <sstream>
+
#include "Matrix4x4.h "
+
+
Go to the source code of this file.
+
+
+
+
+
+
diff --git a/Doxygen/build/Vector4_8h__dep__incl.map b/Doxygen/build/Vector4_8h__dep__incl.map
new file mode 100644
index 0000000..2095a62
--- /dev/null
+++ b/Doxygen/build/Vector4_8h__dep__incl.map
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
diff --git a/Doxygen/build/Vector4_8h__dep__incl.md5 b/Doxygen/build/Vector4_8h__dep__incl.md5
new file mode 100644
index 0000000..6c0771d
--- /dev/null
+++ b/Doxygen/build/Vector4_8h__dep__incl.md5
@@ -0,0 +1 @@
+519ab42af69ca3826341022de9cbd030
\ No newline at end of file
diff --git a/Doxygen/build/Vector4_8h__dep__incl.png b/Doxygen/build/Vector4_8h__dep__incl.png
new file mode 100644
index 0000000..a5df998
Binary files /dev/null and b/Doxygen/build/Vector4_8h__dep__incl.png differ
diff --git a/Doxygen/build/Vector4_8h__incl.map b/Doxygen/build/Vector4_8h__incl.map
new file mode 100644
index 0000000..5701859
--- /dev/null
+++ b/Doxygen/build/Vector4_8h__incl.map
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
+
+
+
diff --git a/Doxygen/build/Vector4_8h__incl.md5 b/Doxygen/build/Vector4_8h__incl.md5
new file mode 100644
index 0000000..3382afb
--- /dev/null
+++ b/Doxygen/build/Vector4_8h__incl.md5
@@ -0,0 +1 @@
+ad580b6dad739ccc43a8731390726116
\ No newline at end of file
diff --git a/Doxygen/build/Vector4_8h__incl.png b/Doxygen/build/Vector4_8h__incl.png
new file mode 100644
index 0000000..8d771f7
Binary files /dev/null and b/Doxygen/build/Vector4_8h__incl.png differ
diff --git a/Doxygen/build/Vector4_8h_source.html b/Doxygen/build/Vector4_8h_source.html
new file mode 100644
index 0000000..331bf5c
--- /dev/null
+++ b/Doxygen/build/Vector4_8h_source.html
@@ -0,0 +1,227 @@
+
+
+
+
+
+
+
+Leonetienne/Eule: Eule/Vector4.h Source File
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Leonetienne/Eule
+
+ Homemade math library, mainly targetted towards computer graphics
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Go to the documentation of this file.
+
+
+
+
+
+
+
+
+
10 template <
typename T>
class Vector2;
+
11 template <
typename T>
class Vector3;
+
+
+
+
+
+
+
21 Vector4 (T _x, T _y, T _z, T _w) :
x { _x },
y { _y },
z { _z },
w { _w } {}
+
22 Vector4 (
const Vector4<T>& other) =
default ;
+
23 Vector4 (Vector4<T>&& other) noexcept =
default ;
+
+
+
+
+
+
32 [[nodiscard]] Vector4<double>
Normalize ()
const ;
+
+
+
+
38 [[nodiscard]] Vector4<T>
VectorScale (
const Vector4<T>& scalar)
const ;
+
+
41 void LerpSelf (
const Vector4<T>& other,
double t);
+
+
44 [[nodiscard]] Vector4<double>
Lerp (
const Vector4<T>& other,
double t)
const ;
+
+
47 [[nodiscard]]
bool Similar (
const Vector4<T>& other,
double epsilon = 0.00001)
const ;
+
+
50 [[nodiscard]] Vector4<int>
ToInt ()
const ;
+
+
53 [[nodiscard]] Vector4<double>
ToDouble ()
const ;
+
+
+
+
+
58 Vector4<T>
operator+ (
const Vector4<T>& other)
const ;
+
+
60 Vector4<T>
operator- (
const Vector4<T>& other)
const ;
+
+
62 Vector4<T>
operator* (
const T scale)
const ;
+
+
64 Vector4<T>
operator/ (
const T scale)
const ;
+
+
66 Vector4<T>
operator* (
const Matrix4x4& mat)
const ;
+
+
+
+
70 operator Vector2<T>()
const ;
+
71 operator Vector3<T>()
const ;
+
+
+
74 void operator= (Vector4<T>&& other) noexcept;
+
+
76 bool operator== (
const Vector4<T>& other)
const ;
+
77 bool operator!= (
const Vector4<T>& other)
const ;
+
+
+
+
81 return os <<
"[x: " << v.x <<
" y: " << v.y <<
" z: " << v.z <<
" w: " << v.w <<
"]" ;
+
+
+
+
85 return os << L
"[x: " << v.x << L
" y: " << v.y << L
" z: " << v.z << L
" w: " << v.w << L
"]" ;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Vector4< int > ToInt() const
Will convert this vector to a Vector4i.
+Vector4(T _x, T _y, T _z, T _w)
+void operator+=(const Vector4< T > &other)
+Vector4< T > operator/(const T scale) const
+Vector4< T > operator*(const T scale) const
+void NormalizeSelf()
Will normalize this vector.
+
+static const Vector4< double > backward
+
+void operator=(const Vector4< T > &other)
Conversion method.
+void operator-=(const Vector4< T > &other)
+Vector4< double > Normalize() const
Will return the normalization of this vector.
+
+void operator*=(const T scale)
+Vector4< double > Vector4d
+Vector4< T > VectorScale(const Vector4< T > &scalar) const
Will scale self.n by scalar.n.
+Vector4< T > operator-() const
+Vector4< double > Lerp(const Vector4< T > &other, double t) const
Will return a lerp result between this and another vector.
+static const Vector4< double > one
+void LerpSelf(const Vector4< T > &other, double t)
Will lerp itself towards other by t.
+
+static const Vector4< double > forward
+void operator/=(const T scale)
+
+static const Vector4< double > down
+Vector4< T > operator+(const Vector4< T > &other) const
+T & operator[](std::size_t idx)
+Vector4< double > ToDouble() const
Will convert this vector to a Vector4d.
+
+bool operator!=(const Vector4< T > &other) const
+bool Similar(const Vector4< T > &other, double epsilon=0.00001) const
Will compare if two vectors are similar to a certain epsilon value.
+double Magnitude() const
Will compute the magnitude.
+static const Vector4< double > future
+bool operator==(const Vector4< T > &other) const
+static const Vector4< double > zero
+double SqrMagnitude() const
Will compute the square magnitude.
+static const Vector4< double > up
+static const Vector4< double > past
+friend std::ostream & operator<<(std::ostream &os, const Vector4< T > &v)
+
+static const Vector4< double > left
+
+static const Vector4< double > right
+Representation of a 4d vector.
+
+
+
+
diff --git a/Doxygen/build/annotated.html b/Doxygen/build/annotated.html
new file mode 100644
index 0000000..306cd0a
--- /dev/null
+++ b/Doxygen/build/annotated.html
@@ -0,0 +1,98 @@
+
+
+
+
+
+
+
+Leonetienne/Eule: Class List
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Leonetienne/Eule
+
+ Homemade math library, mainly targetted towards computer graphics
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Here are the classes, structs, unions and interfaces with brief descriptions:
+
+
+
+
+
diff --git a/Doxygen/build/bc_s.png b/Doxygen/build/bc_s.png
new file mode 100644
index 0000000..224b29a
Binary files /dev/null and b/Doxygen/build/bc_s.png differ
diff --git a/Doxygen/build/bdwn.png b/Doxygen/build/bdwn.png
new file mode 100644
index 0000000..940a0b9
Binary files /dev/null and b/Doxygen/build/bdwn.png differ
diff --git a/Doxygen/build/classEule_1_1Collider-members.html b/Doxygen/build/classEule_1_1Collider-members.html
new file mode 100644
index 0000000..dc5d151
--- /dev/null
+++ b/Doxygen/build/classEule_1_1Collider-members.html
@@ -0,0 +1,92 @@
+
+
+
+
+
+
+
+Leonetienne/Eule: Member List
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Leonetienne/Eule
+
+ Homemade math library, mainly targetted towards computer graphics
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
This is the complete list of members for Eule::Collider , including all inherited members.
+
+
+
+
+
diff --git a/Doxygen/build/classEule_1_1Collider.html b/Doxygen/build/classEule_1_1Collider.html
new file mode 100644
index 0000000..b4b3839
--- /dev/null
+++ b/Doxygen/build/classEule_1_1Collider.html
@@ -0,0 +1,151 @@
+
+
+
+
+
+
+
+Leonetienne/Eule: Eule::Collider Class Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Leonetienne/Eule
+
+ Homemade math library, mainly targetted towards computer graphics
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Abstract class of a collider domain.
+ More...
+
+
#include <Collider.h >
+
+
+
+
+
Abstract class of a collider domain.
+
Specializations describe a shape in 3d space, and provide implementations of the methods below, for their specific shape. Examples could be a SphereCollider, a BoxCollider, etc...
+
+
Definition at line 10 of file Collider.h .
+
+
+
◆ Contains()
+
+
+
+
+
+
+
+
+ virtual bool Eule::Collider::Contains
+ (
+ const Vector3d &
+ point )
+ const
+
+
+
+
+pure virtual
+
+
+
+
+
The documentation for this class was generated from the following file:
+
+
+
+
+
diff --git a/Doxygen/build/classEule_1_1Collider__inherit__graph.map b/Doxygen/build/classEule_1_1Collider__inherit__graph.map
new file mode 100644
index 0000000..84537af
--- /dev/null
+++ b/Doxygen/build/classEule_1_1Collider__inherit__graph.map
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/Doxygen/build/classEule_1_1Collider__inherit__graph.md5 b/Doxygen/build/classEule_1_1Collider__inherit__graph.md5
new file mode 100644
index 0000000..58581a3
--- /dev/null
+++ b/Doxygen/build/classEule_1_1Collider__inherit__graph.md5
@@ -0,0 +1 @@
+0f12e27dac5bc597f7fa2ef2f62c1652
\ No newline at end of file
diff --git a/Doxygen/build/classEule_1_1Collider__inherit__graph.png b/Doxygen/build/classEule_1_1Collider__inherit__graph.png
new file mode 100644
index 0000000..0e2e735
Binary files /dev/null and b/Doxygen/build/classEule_1_1Collider__inherit__graph.png differ
diff --git a/Doxygen/build/classEule_1_1Math-members.html b/Doxygen/build/classEule_1_1Math-members.html
new file mode 100644
index 0000000..9e76bca
--- /dev/null
+++ b/Doxygen/build/classEule_1_1Math-members.html
@@ -0,0 +1,104 @@
+
+
+
+
+
+
+
+Leonetienne/Eule: Member List
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Leonetienne/Eule
+
+ Homemade math library, mainly targetted towards computer graphics
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
This is the complete list of members for Eule::Math , including all inherited members.
+
+ Abs (const double a)Eule::Math inline static
+ Clamp (const double v, const double min, const double max)Eule::Math inline static
+ Lerp (double a, double b, double t)Eule::Math inline static
+ Max (const double a, const double b)Eule::Math inline static
+ Min (const double a, const double b)Eule::Math inline static
+ Oscillate (const double a, const double b, const double counter, const double speed)Eule::Math static
+ Random ()Eule::Math static
+ RandomChance (const double chance)Eule::Math static
+ RandomInt ()Eule::Math static
+ RandomIntRange (const int max, const int min)Eule::Math static
+ RandomRange (const double min, const double max)Eule::Math static
+ RandomUint ()Eule::Math static
+ Similar (const double a, const double b, const double epsilon=0.00001)Eule::Math static
+
+
+
+
+
diff --git a/Doxygen/build/classEule_1_1Math.html b/Doxygen/build/classEule_1_1Math.html
new file mode 100644
index 0000000..27d60bf
--- /dev/null
+++ b/Doxygen/build/classEule_1_1Math.html
@@ -0,0 +1,702 @@
+
+
+
+
+
+
+
+Leonetienne/Eule: Eule::Math Class Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Leonetienne/Eule
+
+ Homemade math library, mainly targetted towards computer graphics
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Math utility class.
+ More...
+
+
#include <Math.h >
+
+
+static constexpr double Max (const double a, const double b)
+ Will return the bigger of two values. More...
+
+static constexpr double Min (const double a, const double b)
+ Will return the smaller of two values. More...
+
+static constexpr double Clamp (const double v, const double min, const double max)
+ Will return v
, but at least min
, and at most max
More...
+
+static constexpr double Lerp (double a, double b, double t)
+ Will return the linear interpolation between a
and b
by t
More...
+
+static constexpr double Abs (const double a)
+ Will return the absolute value of a
More...
+
+static constexpr bool Similar (const double a, const double b, const double epsilon=0.00001)
+ Compares two double values with a given accuracy. More...
+
+static double Random ()
+ Will return a random double between 0
and 1
More...
+
+static unsigned int RandomUint ()
+ Will return a random unsigned integer. More...
+
+static unsigned int RandomInt ()
+ Will return a random integer. More...
+
+static double RandomRange (const double min, const double max)
+ Will return a random double within a range
+ These bounds are INCLUSIVE! More...
+
+static int RandomIntRange (const int max, const int min)
+ Will return a random integer within a range. More...
+
+static bool RandomChance (const double chance)
+ Will 'roll' a dice, returning true
\(100 * chance\) percent of the time. More...
+
+static double Oscillate (const double a, const double b, const double counter, const double speed)
+ Kind of like \(sin(counter)\), but it oscillates over \([a,b]\) instead of \([-1,1]\), by a given speed. More...
+
+
+
+
Math utility class.
+
+
Definition at line 8 of file Math.h .
+
+
+
◆ Abs()
+
+
+
+
+
+
+
+
+ constexpr double Eule::Math::Abs
+ (
+ const double
+ a )
+
+
+
+
+
+inline static constexpr
+
+
+
+
+
Will return the absolute value of a
+
+
Definition at line 92 of file Math.h .
+
+
94 return (a > 0.0) ? a : -a;
+
+
+
+
+
+
◆ Clamp()
+
+
+
+
+
+
+
+
+ constexpr double Eule::Math::Clamp
+ (
+ const double
+ v ,
+
+
+
+
+ const double
+ min ,
+
+
+
+
+ const double
+ max
+
+
+
+ )
+
+
+
+
+
+inline static constexpr
+
+
+
+
+
Will return v
, but at least min
, and at most max
+
+
Definition at line 81 of file Math.h .
+
+
83 return Max (
Min (v, max), min);
+
+
+
+
+
+
◆ Lerp()
+
+
+
+
+
+
+
+
+ constexpr double Eule::Math::Lerp
+ (
+ double
+ a ,
+
+
+
+
+ double
+ b ,
+
+
+
+
+ double
+ t
+
+
+
+ )
+
+
+
+
+
+inline static constexpr
+
+
+
+
+
Will return the linear interpolation between a
and b
by t
+
+
Definition at line 86 of file Math.h .
+
+
88 const double it = 1.0 - t;
+
89 return (a * it) + (b * t);
+
+
+
+
+
+
◆ Max()
+
+
+
+
+
+
+
+
+ constexpr double Eule::Math::Max
+ (
+ const double
+ a ,
+
+
+
+
+ const double
+ b
+
+
+
+ )
+
+
+
+
+
+inline static constexpr
+
+
+
+
+
Will return the bigger of two values.
+
+
Definition at line 71 of file Math.h .
+
+
73 return (a > b) ? a : b;
+
+
+
+
+
+
◆ Min()
+
+
+
+
+
+
+
+
+ constexpr double Eule::Math::Min
+ (
+ const double
+ a ,
+
+
+
+
+ const double
+ b
+
+
+
+ )
+
+
+
+
+
+inline static constexpr
+
+
+
+
+
Will return the smaller of two values.
+
+
Definition at line 76 of file Math.h .
+
+
78 return (a < b) ? a : b;
+
+
+
+
+
+
◆ Oscillate()
+
+
+
+
+
+
+
+
+ double Math::Oscillate
+ (
+ const double
+ a ,
+
+
+
+
+ const double
+ b ,
+
+
+
+
+ const double
+ counter ,
+
+
+
+
+ const double
+ speed
+
+
+
+ )
+
+
+
+
+
+static
+
+
+
+
+
Kind of like \(sin(counter)\), but it oscillates over \([a,b]\) instead of \([-1,1]\), by a given speed.
+
+ Given that \(speed = 1\), the result will always be a
if counter
is even, and b
if counter
is uneven.
+ If counter
is a rational, the result will oscillate between a
and b
, like sin()
does.
+ If you increase speed
, the oscillation frequency will increase. Meaning \(speed = 2\) would result in \(counter=0.5\) returning b
.
+
+
Definition at line 68 of file Math.cpp .
+
+
70 return (sin(counter * speed *
PI -
HALF_PI ) * 0.5 + 0.5) * (b-a) + a;
+
+
+
+
+
+
◆ Random()
+
+
+
+
+
+
+
+
+ double Math::Random
+ (
+ )
+
+
+
+
+
+static
+
+
+
+
+
Will return a random double between 0
and 1
+
+
Definition at line 29 of file Math.cpp .
+
+
+
+
33 return (rng() % 694206942069ll) / 694206942069.0;
+
+
+
+
+
+
◆ RandomChance()
+
+
+
+
+
+
+
+
+ bool Math::RandomChance
+ (
+ const double
+ chance )
+
+
+
+
+
+static
+
+
+
+
+
Will 'roll' a dice, returning true
\(100 * chance\) percent of the time.
+
+
Definition at line 73 of file Math.cpp .
+
+
+
+
+
◆ RandomInt()
+
+
+
+
+
+
+
+
+ unsigned int Math::RandomInt
+ (
+ )
+
+
+
+
+
+static
+
+
+
+
+
Will return a random integer.
+
+
Definition at line 45 of file Math.cpp .
+
+
+
+
+
◆ RandomIntRange()
+
+
+
+
+
+
+
+
+ int Math::RandomIntRange
+ (
+ const int
+ max ,
+
+
+
+
+ const int
+ min
+
+
+
+ )
+
+
+
+
+
+static
+
+
+
+
+
Will return a random integer within a range.
+
This is faster than (int)RandomRange(x,y)
+ These bounds are INCLUSIVE!
+
+
Definition at line 63 of file Math.cpp .
+
+
65 return (rng() % (max + 1 - min)) + min;
+
+
+
+
+
+
◆ RandomRange()
+
+
+
+
+
+
+
+
+ double Math::RandomRange
+ (
+ const double
+ min ,
+
+
+
+
+ const double
+ max
+
+
+
+ )
+
+
+
+
+
+static
+
+
+
+
+
Will return a random double within a range
+ These bounds are INCLUSIVE!
+
+
Definition at line 56 of file Math.cpp .
+
+
58 return (
Random () * (max - min)) + min;
+
+
+
+
+
+
◆ RandomUint()
+
+
+
+
+
+
+
+
+ unsigned int Math::RandomUint
+ (
+ )
+
+
+
+
+
+static
+
+
+
+
+
Will return a random unsigned integer.
+
+
Definition at line 37 of file Math.cpp .
+
+
+
+
+
◆ Similar()
+
+
+
+
+
+
+
+
+ static constexpr bool Eule::Math::Similar
+ (
+ const double
+ a ,
+
+
+
+
+ const double
+ b ,
+
+
+
+
+ const double
+ epsilon = 0.00001
+
+
+
+ )
+
+
+
+
+
+static constexpr
+
+
+
+
+
Compares two double values with a given accuracy.
+
+
+
+
The documentation for this class was generated from the following files:
+
+#define MAKE_SURE_RNG_IS_INITIALIZED
+#define PI
Pi up to 50 decimal places.
+#define HALF_PI
Pi divided by two.
+static constexpr double Max(const double a, const double b)
Will return the bigger of two values.
+static constexpr double Min(const double a, const double b)
Will return the smaller of two values.
+static double Random()
Will return a random double between 0 and 1
+
+
+
+
diff --git a/Doxygen/build/classEule_1_1Matrix4x4-members.html b/Doxygen/build/classEule_1_1Matrix4x4-members.html
new file mode 100644
index 0000000..97260e0
--- /dev/null
+++ b/Doxygen/build/classEule_1_1Matrix4x4-members.html
@@ -0,0 +1,145 @@
+
+
+
+
+
+
+
+Leonetienne/Eule: Member List
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Leonetienne/Eule
+
+ Homemade math library, mainly targetted towards computer graphics
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
This is the complete list of members for Eule::Matrix4x4 , including all inherited members.
+
+
+
+
+
diff --git a/Doxygen/build/classEule_1_1Matrix4x4.html b/Doxygen/build/classEule_1_1Matrix4x4.html
new file mode 100644
index 0000000..cadcd2a
--- /dev/null
+++ b/Doxygen/build/classEule_1_1Matrix4x4.html
@@ -0,0 +1,1979 @@
+
+
+
+
+
+
+
+Leonetienne/Eule: Eule::Matrix4x4 Class Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Leonetienne/Eule
+
+ Homemade math library, mainly targetted towards computer graphics
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
A matrix 4x4 class representing a 3d transformation.
+ More...
+
+
#include <Matrix4x4.h >
+
+
+ Matrix4x4 ()
+
+ Matrix4x4 (const Matrix4x4 &other)
+
+ Matrix4x4 (Matrix4x4 &&other) noexcept
+
+Matrix4x4 operator* (const Matrix4x4 &other) const
+
+void operator*= (const Matrix4x4 &other)
+
+Matrix4x4 operator/ (const Matrix4x4 &other) const
+
+void operator/= (const Matrix4x4 &other)
+
+Matrix4x4 operator* (const double scalar) const
+ Cellwise scaling. More...
+
+void operator*= (const double scalar)
+ Cellwise scaling. More...
+
+Matrix4x4 operator/ (const double denominator) const
+ Cellwise division. More...
+
+void operator/= (const double denominator)
+ Cellwise division. More...
+
+Matrix4x4 operator+ (const Matrix4x4 &other) const
+ Cellwise addition. More...
+
+void operator+= (const Matrix4x4 &other)
+ Cellwise addition. More...
+
+Matrix4x4 operator- (const Matrix4x4 &other) const
+ Cellwise subtraction. More...
+
+void operator-= (const Matrix4x4 &other)
+ Cellwise subtraction. More...
+
+std::array< double, 4 > & operator[] (std::size_t y)
+
+const std::array< double, 4 > & operator[] (std::size_t y) const
+
+void operator= (const Matrix4x4 &other)
+
+void operator= (Matrix4x4 &&other) noexcept
+
+bool operator== (const Matrix4x4 &other)
+
+bool operator!= (const Matrix4x4 &other)
+
+const Vector3d GetTranslationComponent () const
+ Will return d,h,l as a Vector3d(x,y,z) More...
+
+void SetTranslationComponent (const Vector3d &trans)
+ Will set d,h,l from a Vector3d(x,y,z) More...
+
+Matrix4x4 DropTranslationComponents () const
+ Will return this Matrix4x4 with d,h,l being set to 0. More...
+
+Matrix4x4 Transpose3x3 () const
+ Will return the 3x3 transpose of this matrix. More...
+
+Matrix4x4 Transpose4x4 () const
+ Will return the 4x4 transpose of this matrix. More...
+
+Matrix4x4 Multiply4x4 (const Matrix4x4 &o ) const
+ Will return the Matrix4x4 of an actual 4x4 multiplication. operator* only does a 3x3. More...
+
+Matrix4x4 GetCofactors (std::size_t p , std::size_t q, std::size_t n ) const
+ Will return the cofactors of this matrix, by dimension n. More...
+
+double Determinant (std::size_t n ) const
+ Will return the determinant, by dimension n. More...
+
+Matrix4x4 Adjoint (std::size_t n ) const
+ Will return the adjoint of this matrix, by dimension n. More...
+
+Matrix4x4 Inverse3x3 () const
+ Will return the 3x3-inverse of this matrix. More...
+
+Matrix4x4 Inverse4x4 () const
+ Will return the full 4x4-inverse of this matrix. More...
+
+bool IsInversible3x3 () const
+ Will check if the 3x3-component is inversible. More...
+
+bool IsInversible4x4 () const
+ Will check if the entire matrix is inversible. More...
+
+bool Similar (const Matrix4x4 &other, double epsilon=0.00001) const
+ Will compare if two matrices are similar to a certain epsilon value. More...
+
+
+
+std::array< std::array< double, 4 >, 4 > v
+ Array holding the matrices values. More...
+
+double & a = v [0][0]
+
+double & b = v [0][1]
+
+double & c = v [0][2]
+
+double & d = v [0][3]
+
+double & e = v [1][0]
+
+double & f = v [1][1]
+
+double & g = v [1][2]
+
+double & h = v [1][3]
+
+double & i = v [2][0]
+
+double & j = v [2][1]
+
+double & k = v [2][2]
+
+double & l = v [2][3]
+
+double & m = v [3][0]
+
+double & n = v [3][1]
+
+double & o = v [3][2]
+
+double & p = v [3][3]
+
+
+
+
A matrix 4x4 class representing a 3d transformation.
+
This matrix consists of a 3x3 matrix containing scaling and rotation information, and a vector (d,h,l) representing the translation.
+
myMatrix[y][x] = 3
+
+
X ==============>
+
Y
+
| # # # # # # # # # # #
+
+
| # #
+
+
| # #
+
+
# #
+
# m n o p #
+
# # # # # # # # # # #
+
Note: This class can also be used to compute regular 4x4 multiplications. Use Multiply4x4() for that.
+
+
Definition at line 36 of file Matrix4x4.h .
+
+
+
◆ Matrix4x4() [1/3]
+
+
+
+
+
+ Matrix4x4::Matrix4x4
+ (
+ )
+
+
+
+
+
+
Definition at line 12 of file Matrix4x4.cpp .
+
+
+
15 for (std::size_t
i = 0;
i < 4;
i ++)
+
16 for (std::size_t
j = 0;
j < 4;
j ++)
+
17 v [
i ][
j ] =
double (
i ==
j );
+
+
+
+
+
+
+
+
◆ Matrix4x4() [2/3]
+
+
+
+
+
+ Matrix4x4::Matrix4x4
+ (
+ const Matrix4x4 &
+ other )
+
+
+
+
+
+
+
◆ Matrix4x4() [3/3]
+
+
+
+
+
+
+
+
+ Matrix4x4::Matrix4x4
+ (
+ Matrix4x4 &&
+ other )
+
+
+
+
+
+noexcept
+
+
+
+
+
Definition at line 28 of file Matrix4x4.cpp .
+
+
30 v = std::move(other.
v );
+
+
+
+
+
+
+
+
◆ Adjoint()
+
+
+
+
+
+ Matrix4x4 Matrix4x4::Adjoint
+ (
+ std::size_t
+ n )
+ const
+
+
+
+
+
Will return the adjoint of this matrix, by dimension n.
+
+
Definition at line 533 of file Matrix4x4.cpp .
+
+
+
536 throw std::runtime_error(
"Dimension out of range! 0 <= n <= 4" );
+
+
+
+
+
541 for (std::size_t
i = 0;
i <
n ;
i ++)
+
542 for (std::size_t
j = 0;
j <
n ;
j ++)
+
+
+
+
+
+
548 sign = ((
i +
j ) % 2 == 0) ? 1 : -1;
+
+
+
+
+
+
+
+
+
+
+
+
+
◆ Determinant()
+
+
+
+
+
+ double Matrix4x4::Determinant
+ (
+ std::size_t
+ n )
+ const
+
+
+
+
+
Will return the determinant, by dimension n.
+
+
Definition at line 511 of file Matrix4x4.cpp .
+
+
+
514 throw std::runtime_error(
"Dimension out of range! 0 <= n <= 4" );
+
+
+
+
+
+
+
+
522 for (std::size_t x = 0; x <
n ; x++)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
◆ DropTranslationComponents()
+
+
+
+
+
+ Matrix4x4 Matrix4x4::DropTranslationComponents
+ (
+ )
+ const
+
+
+
+
+
+
◆ GetCofactors()
+
+
+
+
+
+ Matrix4x4 Matrix4x4::GetCofactors
+ (
+ std::size_t
+ p ,
+
+
+
+
+ std::size_t
+ q ,
+
+
+
+
+ std::size_t
+ n
+
+
+
+ )
+ const
+
+
+
+
+
Will return the cofactors of this matrix, by dimension n.
+
+
Definition at line 478 of file Matrix4x4.cpp .
+
+
+
481 throw std::runtime_error(
"Dimension out of range! 0 <= n <= 4" );
+
+
+
+
+
+
+
488 for (std::size_t y = 0; y <
n ; y++)
+
489 for (std::size_t x = 0; x <
n ; x++)
+
+
491 if ((y !=
p ) && (x != q))
+
+
493 cofs[
i ][
j ] =
v [y][x];
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
◆ GetTranslationComponent()
+
+
+
+
+
+ const Vector3d Matrix4x4::GetTranslationComponent
+ (
+ )
+ const
+
+
+
+
+
Will return d,h,l as a Vector3d(x,y,z)
+
+
Definition at line 407 of file Matrix4x4.cpp .
+
+
+
+
+
◆ Inverse3x3()
+
+
+
+
+
+ Matrix4x4 Matrix4x4::Inverse3x3
+ (
+ )
+ const
+
+
+
+
+
Will return the 3x3-inverse of this matrix.
+
+ Meaning, the 3x3 component will be inverted, and the translation component will be negated
+
+
Definition at line 558 of file Matrix4x4.cpp .
+
+
+
+
+
+
564 throw std::runtime_error(
"Matrix3x3 not inversible!" );
+
+
+
+
568 for (std::size_t
i = 0;
i < 3;
i ++)
+
569 for (std::size_t
j = 0;
j < 3;
j ++)
+
570 inv[
i ][
j ] = adj[
i ][
j ] / det;
+
+
+
+
+
+
+
+
+
+
◆ Inverse4x4()
+
+
+
+
+
+ Matrix4x4 Matrix4x4::Inverse4x4
+ (
+ )
+ const
+
+
+
+
+
Will return the full 4x4-inverse of this matrix.
+
+
Definition at line 577 of file Matrix4x4.cpp .
+
+
+
+
+
+
583 throw std::runtime_error(
"Matrix4x4 not inversible!" );
+
+
+
+
587 for (std::size_t
i = 0;
i < 4;
i ++)
+
588 for (std::size_t
j = 0;
j < 4;
j ++)
+
589 inv[
i ][
j ] = adj[
i ][
j ] / det;
+
+
+
+
+
+
+
+
◆ IsInversible3x3()
+
+
+
+
+
+ bool Matrix4x4::IsInversible3x3
+ (
+ )
+ const
+
+
+
+
+
Will check if the 3x3-component is inversible.
+
+
Definition at line 598 of file Matrix4x4.cpp .
+
+
+
+
+
◆ IsInversible4x4()
+
+
+
+
+
+ bool Matrix4x4::IsInversible4x4
+ (
+ )
+ const
+
+
+
+
+
Will check if the entire matrix is inversible.
+
+
Definition at line 603 of file Matrix4x4.cpp .
+
+
+
+
+
◆ Multiply4x4()
+
+
+
+
+
Will return the Matrix4x4 of an actual 4x4 multiplication. operator* only does a 3x3.
+
+
Definition at line 451 of file Matrix4x4.cpp .
+
+
+
+
455 m [0][0] = (
v [0][0]*
o [0][0]) + (
v [0][1]*
o [1][0]) + (
v [0][2]*
o [2][0]) + (
v [0][3]*
o [3][0]);
+
456 m [0][1] = (
v [0][0]*
o [0][1]) + (
v [0][1]*
o [1][1]) + (
v [0][2]*
o [2][1]) + (
v [0][3]*
o [3][1]);
+
457 m [0][2] = (
v [0][0]*
o [0][2]) + (
v [0][1]*
o [1][2]) + (
v [0][2]*
o [2][2]) + (
v [0][3]*
o [3][2]);
+
458 m [0][3] = (
v [0][0]*
o [0][3]) + (
v [0][1]*
o [1][3]) + (
v [0][2]*
o [2][3]) + (
v [0][3]*
o [3][3]);
+
+
460 m [1][0] = (
v [1][0]*
o [0][0]) + (
v [1][1]*
o [1][0]) + (
v [1][2]*
o [2][0]) + (
v [1][3]*
o [3][0]);
+
461 m [1][1] = (
v [1][0]*
o [0][1]) + (
v [1][1]*
o [1][1]) + (
v [1][2]*
o [2][1]) + (
v [1][3]*
o [3][1]);
+
462 m [1][2] = (
v [1][0]*
o [0][2]) + (
v [1][1]*
o [1][2]) + (
v [1][2]*
o [2][2]) + (
v [1][3]*
o [3][2]);
+
463 m [1][3] = (
v [1][0]*
o [0][3]) + (
v [1][1]*
o [1][3]) + (
v [1][2]*
o [2][3]) + (
v [1][3]*
o [3][3]);
+
+
465 m [2][0] = (
v [2][0]*
o [0][0]) + (
v [2][1]*
o [1][0]) + (
v [2][2]*
o [2][0]) + (
v [2][3]*
o [3][0]);
+
466 m [2][1] = (
v [2][0]*
o [0][1]) + (
v [2][1]*
o [1][1]) + (
v [2][2]*
o [2][1]) + (
v [2][3]*
o [3][1]);
+
467 m [2][2] = (
v [2][0]*
o [0][2]) + (
v [2][1]*
o [1][2]) + (
v [2][2]*
o [2][2]) + (
v [2][3]*
o [3][2]);
+
468 m [2][3] = (
v [2][0]*
o [0][3]) + (
v [2][1]*
o [1][3]) + (
v [2][2]*
o [2][3]) + (
v [2][3]*
o [3][3]);
+
+
470 m [3][0] = (
v [3][0]*
o [0][0]) + (
v [3][1]*
o [1][0]) + (
v [3][2]*
o [2][0]) + (
v [3][3]*
o [3][0]);
+
471 m [3][1] = (
v [3][0]*
o [0][1]) + (
v [3][1]*
o [1][1]) + (
v [3][2]*
o [2][1]) + (
v [3][3]*
o [3][1]);
+
472 m [3][2] = (
v [3][0]*
o [0][2]) + (
v [3][1]*
o [1][2]) + (
v [3][2]*
o [2][2]) + (
v [3][3]*
o [3][2]);
+
473 m [3][3] = (
v [3][0]*
o [0][3]) + (
v [3][1]*
o [1][3]) + (
v [3][2]*
o [2][3]) + (
v [3][3]*
o [3][3]);
+
+
+
+
+
+
+
+
◆ operator!=()
+
+
+
+
+
+ bool Matrix4x4::operator!=
+ (
+ const Matrix4x4 &
+ other )
+
+
+
+
+
+
+
◆ operator*() [1/2]
+
+
+
+
+
+ Matrix4x4 Matrix4x4::operator*
+ (
+ const double
+ scalar )
+ const
+
+
+
+
+
Cellwise scaling.
+
+
Definition at line 164 of file Matrix4x4.cpp .
+
+
+
+
168 #ifndef _EULE_NO_INTRINSICS_
+
+
+
171 __m256d __row0 = _mm256_set_pd(
v [0][3],
v [0][2],
v [0][1],
v [0][0]);
+
172 __m256d __row1 = _mm256_set_pd(
v [1][3],
v [1][2],
v [1][1],
v [1][0]);
+
173 __m256d __row2 = _mm256_set_pd(
v [2][3],
v [2][2],
v [2][1],
v [2][0]);
+
174 __m256d __row3 = _mm256_set_pd(
v [3][3],
v [3][2],
v [3][1],
v [3][0]);
+
+
+
177 __m256d __scalar = _mm256_set1_pd(scalar);
+
+
+
180 __m256d __sr0 = _mm256_mul_pd(__row0, __scalar);
+
181 __m256d __sr1 = _mm256_mul_pd(__row1, __scalar);
+
182 __m256d __sr2 = _mm256_mul_pd(__row2, __scalar);
+
183 __m256d __sr3 = _mm256_mul_pd(__row3, __scalar);
+
+
+
186 _mm256_storeu_pd(
m .v[0].data(), __sr0);
+
187 _mm256_storeu_pd(
m .v[1].data(), __sr1);
+
188 _mm256_storeu_pd(
m .v[2].data(), __sr2);
+
189 _mm256_storeu_pd(
m .v[3].data(), __sr3);
+
+
+
+
193 for (std::size_t x = 0; x < 4; x++)
+
194 for (std::size_t y = 0; y < 4; y++)
+
195 m [x][y] =
v [x][y] * scalar;
+
+
+
+
+
+
+
+
+
+
◆ operator*() [2/2]
+
+
+
+
+
Definition at line 34 of file Matrix4x4.cpp .
+
+
+
+
+
39 #ifndef _EULE_NO_INTRINSICS_
+
+
+
+
+
+
45 __m256d __va1 = _mm256_set_pd(
v [0][0],
v [0][0],
v [0][0],
v [1][0]);
+
46 __m256d __va2 = _mm256_set_pd(
v [1][0],
v [1][0],
v [2][0],
v [2][0]);
+
+
48 __m256d __oa1 = _mm256_set_pd(other[0][0], other[0][1], other[0][2], other[0][0]);
+
49 __m256d __oa2 = _mm256_set_pd(other[0][1], other[0][2], other[0][0], other[0][1]);
+
+
51 __m256d __vb1 = _mm256_set_pd(
v [0][1],
v [0][1],
v [0][1],
v [1][1]);
+
52 __m256d __vb2 = _mm256_set_pd(
v [1][1],
v [1][1],
v [2][1],
v [2][1]);
+
+
54 __m256d __ob1 = _mm256_set_pd(other[1][0], other[1][1], other[1][2], other[1][0]);
+
55 __m256d __ob2 = _mm256_set_pd(other[1][1], other[1][2], other[1][0], other[1][1]);
+
+
57 __m256d __vc1 = _mm256_set_pd(
v [0][2],
v [0][2],
v [0][2],
v [1][2]);
+
58 __m256d __vc2 = _mm256_set_pd(
v [1][2],
v [1][2],
v [2][2],
v [2][2]);
+
+
60 __m256d __oc1 = _mm256_set_pd(other[2][0], other[2][1], other[2][2], other[2][0]);
+
61 __m256d __oc2 = _mm256_set_pd(other[2][1], other[2][2], other[2][0], other[2][1]);
+
+
+
64 __m256d __sum1 = _mm256_set1_pd(0);
+
65 __m256d __sum2 = _mm256_set1_pd(0);
+
+
+
+
69 __sum1 = _mm256_fmadd_pd(__va1, __oa1, __sum1);
+
70 __sum1 = _mm256_fmadd_pd(__vb1, __ob1, __sum1);
+
71 __sum1 = _mm256_fmadd_pd(__vc1, __oc1, __sum1);
+
+
+
74 __sum2 = _mm256_fmadd_pd(__va2, __oa2, __sum2);
+
75 __sum2 = _mm256_fmadd_pd(__vb2, __ob2, __sum2);
+
76 __sum2 = _mm256_fmadd_pd(__vc2, __oc2, __sum2);
+
+
+
+
+
+
82 _mm256_storeu_pd(sum1, __sum1);
+
83 _mm256_storeu_pd(sum2, __sum2);
+
+
+
+
87 newMatrix[0][0] = sum1[3];
+
88 newMatrix[0][1] = sum1[2];
+
89 newMatrix[0][2] = sum1[1];
+
90 newMatrix[1][0] = sum1[0];
+
+
+
93 newMatrix[1][1] = sum2[3];
+
94 newMatrix[1][2] = sum2[2];
+
95 newMatrix[2][0] = sum2[1];
+
96 newMatrix[2][1] = sum2[0];
+
+
+
99 newMatrix[2][2] = (
v [2][0] * other[0][2]) + (
v [2][1] * other[1][2]) + (
v [2][2] * other[2][2]);
+
+
+
+
+
+
105 __m256d __transSelf = _mm256_set_pd(0,
l ,
h ,
d );
+
106 __m256d __transOther = _mm256_set_pd(0, other.l, other.h, other.d);
+
+
+
109 __m256d __sum = _mm256_add_pd(__transSelf, __transOther);
+
+
+
+
113 _mm256_storeu_pd(sum, __sum);
+
+
+
116 newMatrix.
d = sum[0];
+
117 newMatrix.
h = sum[1];
+
118 newMatrix.
l = sum[2];
+
+
+
+
+
+
124 newMatrix[0][0] = (
v [0][0] * other[0][0]) + (
v [0][1] * other[1][0]) + (
v [0][2] * other[2][0]);
+
125 newMatrix[0][1] = (
v [0][0] * other[0][1]) + (
v [0][1] * other[1][1]) + (
v [0][2] * other[2][1]);
+
126 newMatrix[0][2] = (
v [0][0] * other[0][2]) + (
v [0][1] * other[1][2]) + (
v [0][2] * other[2][2]);
+
+
128 newMatrix[1][0] = (
v [1][0] * other[0][0]) + (
v [1][1] * other[1][0]) + (
v [1][2] * other[2][0]);
+
129 newMatrix[1][1] = (
v [1][0] * other[0][1]) + (
v [1][1] * other[1][1]) + (
v [1][2] * other[2][1]);
+
130 newMatrix[1][2] = (
v [1][0] * other[0][2]) + (
v [1][1] * other[1][2]) + (
v [1][2] * other[2][2]);
+
+
132 newMatrix[2][0] = (
v [2][0] * other[0][0]) + (
v [2][1] * other[1][0]) + (
v [2][2] * other[2][0]);
+
133 newMatrix[2][1] = (
v [2][0] * other[0][1]) + (
v [2][1] * other[1][1]) + (
v [2][2] * other[2][1]);
+
134 newMatrix[2][2] = (
v [2][0] * other[0][2]) + (
v [2][1] * other[1][2]) + (
v [2][2] * other[2][2]);
+
+
+
+
138 newMatrix[0][3] =
v [0][3] + other[0][3];
+
139 newMatrix[1][3] =
v [1][3] + other[1][3];
+
140 newMatrix[2][3] =
v [2][3] + other[2][3];
+
+
+
+
+
+
+
+
+
+
◆ operator*=() [1/2]
+
+
+
+
+
+ void Matrix4x4::operator*=
+ (
+ const double
+ scalar )
+
+
+
+
+
+
Cellwise scaling.
+
+
Definition at line 202 of file Matrix4x4.cpp .
+
+
204 *
this = *
this * scalar;
+
+
+
+
+
+
+
◆ operator*=() [2/2]
+
+
+
+
+
+ void Matrix4x4::operator*=
+ (
+ const Matrix4x4 &
+ other )
+
+
+
+
+
+
Definition at line 147 of file Matrix4x4.cpp .
+
+
149 *
this = *
this * other;
+
+
+
+
+
+
+
◆ operator+()
+
+
+
+
+
Cellwise addition.
+
+
Definition at line 221 of file Matrix4x4.cpp .
+
+
+
+
225 #ifndef _EULE_NO_INTRINSICS_
+
+
+
228 __m256d __row0a = _mm256_set_pd(
v [0][3],
v [0][2],
v [0][1],
v [0][0]);
+
229 __m256d __row1a = _mm256_set_pd(
v [1][3],
v [1][2],
v [1][1],
v [1][0]);
+
230 __m256d __row2a = _mm256_set_pd(
v [2][3],
v [2][2],
v [2][1],
v [2][0]);
+
231 __m256d __row3a = _mm256_set_pd(
v [3][3],
v [3][2],
v [3][1],
v [3][0]);
+
+
233 __m256d __row0b = _mm256_set_pd(other[0][3], other[0][2], other[0][1], other[0][0]);
+
234 __m256d __row1b = _mm256_set_pd(other[1][3], other[1][2], other[1][1], other[1][0]);
+
235 __m256d __row2b = _mm256_set_pd(other[2][3], other[2][2], other[2][1], other[2][0]);
+
236 __m256d __row3b = _mm256_set_pd(other[3][3], other[3][2], other[3][1], other[3][0]);
+
+
+
239 __m256d __sr0 = _mm256_add_pd(__row0a, __row0b);
+
240 __m256d __sr1 = _mm256_add_pd(__row1a, __row1b);
+
241 __m256d __sr2 = _mm256_add_pd(__row2a, __row2b);
+
242 __m256d __sr3 = _mm256_add_pd(__row3a, __row3b);
+
+
+
245 _mm256_storeu_pd(
m .v[0].data(), __sr0);
+
246 _mm256_storeu_pd(
m .v[1].data(), __sr1);
+
247 _mm256_storeu_pd(
m .v[2].data(), __sr2);
+
248 _mm256_storeu_pd(
m .v[3].data(), __sr3);
+
+
+
+
252 for (std::size_t x = 0; x < 4; x++)
+
253 for (std::size_t y = 0; y < 4; y++)
+
254 m [x][y] =
v [x][y] + other[x][y];
+
+
+
+
+
+
+
+
+
+
◆ operator+=()
+
+
+
+
+
+ void Matrix4x4::operator+=
+ (
+ const Matrix4x4 &
+ other )
+
+
+
+
+
+
Cellwise addition.
+
+
Definition at line 261 of file Matrix4x4.cpp .
+
+
263 #ifndef _EULE_NO_INTRINSICS_
+
+
+
+
267 __m256d __row0a = _mm256_set_pd(
v [0][3],
v [0][2],
v [0][1],
v [0][0]);
+
268 __m256d __row1a = _mm256_set_pd(
v [1][3],
v [1][2],
v [1][1],
v [1][0]);
+
269 __m256d __row2a = _mm256_set_pd(
v [2][3],
v [2][2],
v [2][1],
v [2][0]);
+
270 __m256d __row3a = _mm256_set_pd(
v [3][3],
v [3][2],
v [3][1],
v [3][0]);
+
+
272 __m256d __row0b = _mm256_set_pd(other[0][3], other[0][2], other[0][1], other[0][0]);
+
273 __m256d __row1b = _mm256_set_pd(other[1][3], other[1][2], other[1][1], other[1][0]);
+
274 __m256d __row2b = _mm256_set_pd(other[2][3], other[2][2], other[2][1], other[2][0]);
+
275 __m256d __row3b = _mm256_set_pd(other[3][3], other[3][2], other[3][1], other[3][0]);
+
+
+
278 __m256d __sr0 = _mm256_add_pd(__row0a, __row0b);
+
279 __m256d __sr1 = _mm256_add_pd(__row1a, __row1b);
+
280 __m256d __sr2 = _mm256_add_pd(__row2a, __row2b);
+
281 __m256d __sr3 = _mm256_add_pd(__row3a, __row3b);
+
+
+
284 _mm256_storeu_pd(
v [0].data(), __sr0);
+
285 _mm256_storeu_pd(
v [1].data(), __sr1);
+
286 _mm256_storeu_pd(
v [2].data(), __sr2);
+
287 _mm256_storeu_pd(
v [3].data(), __sr3);
+
+
+
+
291 *
this = *
this + other;
+
+
+
+
+
+
+
+
+
+
◆ operator-()
+
+
+
+
+
Cellwise subtraction.
+
+
Definition at line 298 of file Matrix4x4.cpp .
+
+
+
+
302 #ifndef _EULE_NO_INTRINSICS_
+
+
+
305 __m256d __row0a = _mm256_set_pd(
v [0][3],
v [0][2],
v [0][1],
v [0][0]);
+
306 __m256d __row1a = _mm256_set_pd(
v [1][3],
v [1][2],
v [1][1],
v [1][0]);
+
307 __m256d __row2a = _mm256_set_pd(
v [2][3],
v [2][2],
v [2][1],
v [2][0]);
+
308 __m256d __row3a = _mm256_set_pd(
v [3][3],
v [3][2],
v [3][1],
v [3][0]);
+
+
310 __m256d __row0b = _mm256_set_pd(other[0][3], other[0][2], other[0][1], other[0][0]);
+
311 __m256d __row1b = _mm256_set_pd(other[1][3], other[1][2], other[1][1], other[1][0]);
+
312 __m256d __row2b = _mm256_set_pd(other[2][3], other[2][2], other[2][1], other[2][0]);
+
313 __m256d __row3b = _mm256_set_pd(other[3][3], other[3][2], other[3][1], other[3][0]);
+
+
+
316 __m256d __sr0 = _mm256_sub_pd(__row0a, __row0b);
+
317 __m256d __sr1 = _mm256_sub_pd(__row1a, __row1b);
+
318 __m256d __sr2 = _mm256_sub_pd(__row2a, __row2b);
+
319 __m256d __sr3 = _mm256_sub_pd(__row3a, __row3b);
+
+
+
322 _mm256_storeu_pd(
m .v[0].data(), __sr0);
+
323 _mm256_storeu_pd(
m .v[1].data(), __sr1);
+
324 _mm256_storeu_pd(
m .v[2].data(), __sr2);
+
325 _mm256_storeu_pd(
m .v[3].data(), __sr3);
+
+
+
+
329 for (std::size_t x = 0; x < 4; x++)
+
330 for (std::size_t y = 0; y < 4; y++)
+
331 m [x][y] =
v [x][y] - other[x][y];
+
+
+
+
+
+
+
+
+
+
◆ operator-=()
+
+
+
+
+
+ void Matrix4x4::operator-=
+ (
+ const Matrix4x4 &
+ other )
+
+
+
+
+
+
Cellwise subtraction.
+
+
Definition at line 338 of file Matrix4x4.cpp .
+
+
340 #ifndef _EULE_NO_INTRINSICS_
+
+
+
+
344 __m256d __row0a = _mm256_set_pd(
v [0][3],
v [0][2],
v [0][1],
v [0][0]);
+
345 __m256d __row1a = _mm256_set_pd(
v [1][3],
v [1][2],
v [1][1],
v [1][0]);
+
346 __m256d __row2a = _mm256_set_pd(
v [2][3],
v [2][2],
v [2][1],
v [2][0]);
+
347 __m256d __row3a = _mm256_set_pd(
v [3][3],
v [3][2],
v [3][1],
v [3][0]);
+
+
349 __m256d __row0b = _mm256_set_pd(other[0][3], other[0][2], other[0][1], other[0][0]);
+
350 __m256d __row1b = _mm256_set_pd(other[1][3], other[1][2], other[1][1], other[1][0]);
+
351 __m256d __row2b = _mm256_set_pd(other[2][3], other[2][2], other[2][1], other[2][0]);
+
352 __m256d __row3b = _mm256_set_pd(other[3][3], other[3][2], other[3][1], other[3][0]);
+
+
+
355 __m256d __sr0 = _mm256_sub_pd(__row0a, __row0b);
+
356 __m256d __sr1 = _mm256_sub_pd(__row1a, __row1b);
+
357 __m256d __sr2 = _mm256_sub_pd(__row2a, __row2b);
+
358 __m256d __sr3 = _mm256_sub_pd(__row3a, __row3b);
+
+
+
361 _mm256_storeu_pd(
v [0].data(), __sr0);
+
362 _mm256_storeu_pd(
v [1].data(), __sr1);
+
363 _mm256_storeu_pd(
v [2].data(), __sr2);
+
364 _mm256_storeu_pd(
v [3].data(), __sr3);
+
+
+
+
368 *
this = *
this - other;
+
+
+
+
+
+
+
+
+
+
◆ operator/() [1/2]
+
+
+
+
+
+ Matrix4x4 Matrix4x4::operator/
+ (
+ const double
+ denominator )
+ const
+
+
+
+
+
Cellwise division.
+
+
Definition at line 208 of file Matrix4x4.cpp .
+
+
210 const double precomputeDivision = 1.0 / denominator;
+
+
212 return *
this * precomputeDivision;
+
+
+
+
+
+
◆ operator/() [2/2]
+
+
+
+
◆ operator/=() [1/2]
+
+
+
+
+
+ void Matrix4x4::operator/=
+ (
+ const double
+ denominator )
+
+
+
+
+
+
Cellwise division.
+
+
Definition at line 215 of file Matrix4x4.cpp .
+
+
217 *
this = *
this / denominator;
+
+
+
+
+
+
+
◆ operator/=() [2/2]
+
+
+
+
+
+ void Matrix4x4::operator/=
+ (
+ const Matrix4x4 &
+ other )
+
+
+
+
+
+
+
◆ operator=() [1/2]
+
+
+
+
+
+ void Matrix4x4::operator=
+ (
+ const Matrix4x4 &
+ other )
+
+
+
+
+
+
+
◆ operator=() [2/2]
+
+
+
+
+
+
+
+
+ void Matrix4x4::operator=
+ (
+ Matrix4x4 &&
+ other )
+
+
+
+
+
+noexcept
+
+
+
+
+
+
◆ operator==()
+
+
+
+
+
+ bool Matrix4x4::operator==
+ (
+ const Matrix4x4 &
+ other )
+
+
+
+
+
+
+
◆ operator[]() [1/2]
+
+
+
+
+
+ std::array< double, 4 > & Matrix4x4::operator[]
+ (
+ std::size_t
+ y )
+
+
+
+
+
+
+
◆ operator[]() [2/2]
+
+
+
+
+
+ const std::array< double, 4 > & Matrix4x4::operator[]
+ (
+ std::size_t
+ y )
+ const
+
+
+
+
+
+
◆ SetTranslationComponent()
+
+
+
+
+
+ void Matrix4x4::SetTranslationComponent
+ (
+ const Vector3d &
+ trans )
+
+
+
+
+
+
Will set d,h,l from a Vector3d(x,y,z)
+
+
Definition at line 412 of file Matrix4x4.cpp .
+
+
+
+
+
◆ Similar()
+
+
+
+
+
+ bool Matrix4x4::Similar
+ (
+ const Matrix4x4 &
+ other ,
+
+
+
+
+ double
+ epsilon = 0.00001
+
+
+
+ )
+ const
+
+
+
+
+
Will compare if two matrices are similar to a certain epsilon value.
+
+
Definition at line 608 of file Matrix4x4.cpp .
+
+
610 for (std::size_t
i = 0;
i < 4;
i ++)
+
611 for (std::size_t
j = 0;
j < 4;
j ++)
+
+
+
+
+
+
+
+
+
+
◆ Transpose3x3()
+
+
+
+
+
+ Matrix4x4 Matrix4x4::Transpose3x3
+ (
+ )
+ const
+
+
+
+
+
Will return the 3x3 transpose of this matrix.
+
+
Definition at line 429 of file Matrix4x4.cpp .
+
+
+
+
433 for (std::size_t
i = 0;
i < 3;
i ++)
+
434 for (std::size_t
j = 0;
j < 3;
j ++)
+
435 trans[
j ][
i ] =
v [
i ][
j ];
+
+
+
+
+
+
+
+
◆ Transpose4x4()
+
+
+
+
+
+ Matrix4x4 Matrix4x4::Transpose4x4
+ (
+ )
+ const
+
+
+
+
+
Will return the 4x4 transpose of this matrix.
+
+
Definition at line 440 of file Matrix4x4.cpp .
+
+
+
+
444 for (std::size_t
i = 0;
i < 4;
i ++)
+
445 for (std::size_t
j = 0;
j < 4;
j ++)
+
446 trans[
j ][
i ] =
v [
i ][
j ];
+
+
+
+
+
+
+
+
+
◆ operator<< [1/2]
+
+
+
+
+
+
+
+
+ std::ostream& operator<<
+ (
+ std::ostream &
+ os ,
+
+
+
+
+ const Matrix4x4 &
+ m
+
+
+
+ )
+
+
+
+
+
+friend
+
+
+
+
+
Definition at line 620 of file Matrix4x4.cpp .
+
+
+
+
624 for (std::size_t y = 0; y < 4; y++)
+
+
626 for (std::size_t x = 0; x < 4; x++)
+
627 os <<
" | " <<
m [y][x];
+
+
629 os <<
" |" << std::endl;
+
+
+
+
+
+
+
+
+
◆ operator<< [2/2]
+
+
+
+
+
+
+
+
+ std::wostream& operator<<
+ (
+ std::wostream &
+ os ,
+
+
+
+
+ const Matrix4x4 &
+ m
+
+
+
+ )
+
+
+
+
+
+friend
+
+
+
+
+
Definition at line 635 of file Matrix4x4.cpp .
+
+
+
+
639 for (std::size_t y = 0; y < 4; y++)
+
+
641 for (std::size_t x = 0; x < 4; x++)
+
642 os << L
" | " <<
m [y][x];
+
+
644 os << L
" |" << std::endl;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ double& Eule::Matrix4x4::a = v [0][0]
+
+
+
+
+
+
+
+
+
+
+
+ double& Eule::Matrix4x4::b = v [0][1]
+
+
+
+
+
+
+
+
+
+
+
+ double& Eule::Matrix4x4::c = v [0][2]
+
+
+
+
+
+
+
+
+
+
+
+ double& Eule::Matrix4x4::d = v [0][3]
+
+
+
+
+
+
+
+
+
+
+
+ double& Eule::Matrix4x4::e = v [1][0]
+
+
+
+
+
+
+
+
+
+
+
+ double& Eule::Matrix4x4::f = v [1][1]
+
+
+
+
+
+
+
+
+
+
+
+ double& Eule::Matrix4x4::g = v [1][2]
+
+
+
+
+
+
+
+
+
+
+
+ double& Eule::Matrix4x4::h = v [1][3]
+
+
+
+
+
+
+
+
+
+
+
+ double& Eule::Matrix4x4::i = v [2][0]
+
+
+
+
+
+
+
+
+
+
+
+ double& Eule::Matrix4x4::j = v [2][1]
+
+
+
+
+
+
+
+
+
+
+
+ double& Eule::Matrix4x4::k = v [2][2]
+
+
+
+
+
+
+
+
+
+
+
+ double& Eule::Matrix4x4::l = v [2][3]
+
+
+
+
+
+
+
+
+
+
+
+ double& Eule::Matrix4x4::m = v [3][0]
+
+
+
+
+
+
+
+
+
+
+
+ double& Eule::Matrix4x4::n = v [3][1]
+
+
+
+
+
+
+
+
+
+
+
+ double& Eule::Matrix4x4::o = v [3][2]
+
+
+
+
+
+
+
+
+
+
+
+ double& Eule::Matrix4x4::p = v [3][3]
+
+
+
+
+
+
+
+
+
+
+
+ std::array<std::array<double, 4>, 4> Eule::Matrix4x4::v
+
+
+
+
+
Array holding the matrices values.
+
+
Definition at line 44 of file Matrix4x4.h .
+
+
+
+
The documentation for this class was generated from the following files:
+
+
+Matrix4x4 Adjoint(std::size_t n) const
Will return the adjoint of this matrix, by dimension n.
+bool operator==(const Matrix4x4 &other)
+
+
+
+Matrix4x4 Inverse3x3() const
Will return the 3x3-inverse of this matrix.
+
+std::array< std::array< double, 4 >, 4 > v
Array holding the matrices values.
+Vector3< double > Vector3d
+
+A matrix 4x4 class representing a 3d transformation.
+
+
+
+
+
+double Determinant(std::size_t n) const
Will return the determinant, by dimension n.
+static constexpr bool Similar(const double a, const double b, const double epsilon=0.00001)
Compares two double values with a given accuracy.
+void SetTranslationComponent(const Vector3d &trans)
Will set d,h,l from a Vector3d(x,y,z)
+
+
+
+
+Matrix4x4 GetCofactors(std::size_t p, std::size_t q, std::size_t n) const
Will return the cofactors of this matrix, by dimension n.
+const Vector3d GetTranslationComponent() const
Will return d,h,l as a Vector3d(x,y,z)
+
+
+
+
+
+
+
+
diff --git a/Doxygen/build/classEule_1_1Quaternion-members.html b/Doxygen/build/classEule_1_1Quaternion-members.html
new file mode 100644
index 0000000..4fd53f9
--- /dev/null
+++ b/Doxygen/build/classEule_1_1Quaternion-members.html
@@ -0,0 +1,116 @@
+
+
+
+
+
+
+
+Leonetienne/Eule: Member List
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Leonetienne/Eule
+
+ Homemade math library, mainly targetted towards computer graphics
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
This is the complete list of members for Eule::Quaternion , including all inherited members.
+
+
+
+
+
diff --git a/Doxygen/build/classEule_1_1Quaternion.html b/Doxygen/build/classEule_1_1Quaternion.html
new file mode 100644
index 0000000..3a241ce
--- /dev/null
+++ b/Doxygen/build/classEule_1_1Quaternion.html
@@ -0,0 +1,1044 @@
+
+
+
+
+
+
+
+Leonetienne/Eule: Eule::Quaternion Class Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Leonetienne/Eule
+
+ Homemade math library, mainly targetted towards computer graphics
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
3D rotation representation
+ More...
+
+
#include <Quaternion.h >
+
+
+
3D rotation representation
+
+
Definition at line 10 of file Quaternion.h .
+
+
+
◆ Quaternion() [1/4]
+
+
+
+
+
+ Quaternion::Quaternion
+ (
+ )
+
+
+
+
+
+
+
◆ Quaternion() [2/4]
+
+
+
+
+
+
+
+
+ Quaternion::Quaternion
+ (
+ const Vector4d
+ values )
+
+
+
+
+
+explicit
+
+
+
+
+
Constructs by these raw values.
+
+
Definition at line 17 of file Quaternion.cpp .
+
+
+
+
+
◆ Quaternion() [3/4]
+
+
+
+
+
+ Quaternion::Quaternion
+ (
+ const Quaternion &
+ q )
+
+
+
+
+
+
+
◆ Quaternion() [4/4]
+
+
+
+
+
+ Quaternion::Quaternion
+ (
+ const Vector3d
+ eulerAngles )
+
+
+
+
+
+
Creates an quaternion from euler angles.
+
+
Definition at line 29 of file Quaternion.cpp .
+
+
+
+
33 #ifndef _EULE_NO_INTRINSICS_
+
+
+
36 __m256d __vec = _mm256_set_pd(0, eulerRad.
z , eulerRad.
y , eulerRad.
x );
+
37 __vec = _mm256_mul_pd(__vec, _mm256_set1_pd(0.5));
+
+
39 __m256d __sin = _mm256_sincos_pd(&__cos, __vec);
+
+
+
+
+
+
45 _mm256_storeu_pd(sin, __sin);
+
46 _mm256_storeu_pd(cos, __cos);
+
+
48 __m256d __a = _mm256_set_pd(cos[0], cos[0], sin[0], cos[0]);
+
49 __m256d __b = _mm256_set_pd(cos[1], sin[1], cos[1], cos[1]);
+
50 __m256d __c = _mm256_set_pd(sin[2], cos[2], cos[2], cos[2]);
+
+
52 __m256d __d = _mm256_set_pd(sin[0], sin[0], cos[0], sin[0]);
+
53 __m256d __e = _mm256_set_pd(sin[1], cos[1], sin[1], sin[1]);
+
54 __m256d __f = _mm256_set_pd(cos[2], sin[2], sin[2], sin[2]);
+
+
+
+
58 __abc = _mm256_mul_pd(__a, __b);
+
59 __abc = _mm256_mul_pd(__abc, __c);
+
+
+
62 __def = _mm256_mul_pd(__d, __e);
+
63 __def = _mm256_mul_pd(__def, __f);
+
+
+
+
+
+
69 _mm256_storeu_pd(abc, __abc);
+
70 _mm256_storeu_pd(def, __def);
+
+
+
73 v.
w = abc[0] + def[0];
+
74 v.
x = abc[1] - def[1];
+
75 v.
y = abc[2] + def[2];
+
76 v.
z = abc[3] - def[3];
+
+
+
+
80 const double cy = cos(eulerRad.
z * 0.5);
+
81 const double sy = sin(eulerRad.
z * 0.5);
+
82 const double cp = cos(eulerRad.
y * 0.5);
+
83 const double sp = sin(eulerRad.
y * 0.5);
+
84 const double cr = cos(eulerRad.
x * 0.5);
+
85 const double sr = sin(eulerRad.
x * 0.5);
+
+
87 v.
w = cr * cp * cy + sr * sp * sy;
+
88 v.
x = sr * cp * cy - cr * sp * sy;
+
89 v.
y = cr * sp * cy + sr * cp * sy;
+
90 v.
z = cr * cp * sy - sr * sp * cy;
+
+
+
+
+
+
+
+
+
+
◆ ~Quaternion()
+
+
+
+
+
+ Quaternion::~Quaternion
+ (
+ )
+
+
+
+
+
+
+
+
◆ AngleBetween()
+
+
+
+
◆ Conjugate()
+
+
+
+
+
+ Quaternion Quaternion::Conjugate
+ (
+ )
+ const
+
+
+
+
+
+
◆ GetRawValues()
+
+
+
+
+
+ Vector4d Quaternion::GetRawValues
+ (
+ )
+ const
+
+
+
+
+
Will return the raw four-dimensional values.
+
+
Definition at line 290 of file Quaternion.cpp .
+
+
+
+
+
◆ Inverse()
+
+
+
+
+
+ Quaternion Quaternion::Inverse
+ (
+ )
+ const
+
+
+
+
+
Definition at line 175 of file Quaternion.cpp .
+
+
177 if (!isCacheUpToDate_inverse)
+
+
+
+
181 isCacheUpToDate_inverse =
true ;
+
+
+
+
+
+
+
+
+
◆ Lerp()
+
+
+
+
+
+ Quaternion Quaternion::Lerp
+ (
+ const Quaternion &
+ other ,
+
+
+
+
+ double
+ t
+
+
+
+ )
+ const
+
+
+
+
+
Will return the lerp result between two quaternions.
+
+
Definition at line 309 of file Quaternion.cpp .
+
+
+
+
+
◆ operator!=()
+
+
+
+
+
+ bool Quaternion::operator!=
+ (
+ const Quaternion &
+ q )
+ const
+
+
+
+
+
+
◆ operator*() [1/2]
+
+
+
+
+
Multiplies (applies)
+
+
Definition at line 111 of file Quaternion.cpp .
+
+
+
114 v.
w * q.v.
x + v.
x * q.v.
w + v.
y * q.v.
z - v.
z * q.v.
y ,
+
115 v.
w * q.v.
y + v.
y * q.v.
w + v.
z * q.v.
x - v.
x * q.v.
z ,
+
116 v.
w * q.v.
z + v.
z * q.v.
w + v.
x * q.v.
y - v.
y * q.v.
x ,
+
117 v.
w * q.v.
w - v.
x * q.v.
x - v.
y * q.v.
y - v.
z * q.v.
z
+
+
+
+
+
+
+
◆ operator*() [2/2]
+
+
+
+
+
Will transform a 3d point around its origin.
+
+
Definition at line 160 of file Quaternion.cpp .
+
+
+
+
+
◆ operator*=()
+
+
+
+
+
Also multiplies.
+
+
Definition at line 131 of file Quaternion.cpp .
+
+
+
+
+
136 v.
x = bufr.
w * q.v.
x + bufr.
x * q.v.
w + bufr.
y * q.v.
z - bufr.
z * q.v.
y ;
+
137 v.
y = bufr.
w * q.v.
y + bufr.
y * q.v.
w + bufr.
z * q.v.
x - bufr.
x * q.v.
z ;
+
138 v.
z = bufr.
w * q.v.
z + bufr.
z * q.v.
w + bufr.
x * q.v.
y - bufr.
y * q.v.
x ;
+
139 v.
w = bufr.
w * q.v.
w - bufr.
x * q.v.
x - bufr.
y * q.v.
y - bufr.
z * q.v.
z ;
+
+
+
+
+
+
+
+
◆ operator/()
+
+
+
+
◆ operator/=()
+
+
+
+
◆ operator=()
+
+
+
+
◆ operator==()
+
+
+
+
+
+ bool Quaternion::operator==
+ (
+ const Quaternion &
+ q )
+ const
+
+
+
+
+
+
◆ RotateVector()
+
+
+
+
+
Will rotate a vector by this quaternion.
+
+
Definition at line 197 of file Quaternion.cpp .
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
◆ SetRawValues()
+
+
+
+
+
+ void Quaternion::SetRawValues
+ (
+ const Vector4d
+ values )
+
+
+
+
+
+
Will set the raw four-dimensional values.
+
+
Definition at line 300 of file Quaternion.cpp .
+
+
+
+
+
◆ ToEulerAngles()
+
+
+
+
+
+ Vector3d Quaternion::ToEulerAngles
+ (
+ )
+ const
+
+
+
+
+
Will return euler angles representing this Quaternion 's rotation.
+
+
Definition at line 215 of file Quaternion.cpp .
+
+
217 if (!isCacheUpToDate_euler)
+
+
+
+
221 double sinr_cosp = 2.0 * (v.
w * v.
x + v.
y * v.
z );
+
222 double cosr_cosp = 1.0 - 2.0 * (v.
x * v.
x + v.
y * v.
y );
+
223 euler.
x = std::atan2(sinr_cosp, cosr_cosp);
+
+
+
226 double sinp = 2.0 * (v.
w * v.
y - v.
z * v.
x );
+
227 if (std::abs(sinp) >= 1)
+
228 euler.
y = std::copysign(
PI / 2, sinp);
+
+
230 euler.
y = std::asin(sinp);
+
+
+
233 double siny_cosp = 2.0 * (v.
w * v.
z + v.
x * v.
y );
+
234 double cosy_cosp = 1.0 - 2.0 * (v.
y * v.
y + v.
z * v.
z );
+
235 euler.
z = std::atan2(siny_cosp, cosy_cosp);
+
+
+
+
+
240 isCacheUpToDate_matrix =
true ;
+
+
+
+
+
+
+
+
+
◆ ToRotationMatrix()
+
+
+
+
+
+ Matrix4x4 Quaternion::ToRotationMatrix
+ (
+ )
+ const
+
+
+
+
+
Will return a rotation matrix representing this Quaternions rotation.
+
+
Definition at line 246 of file Quaternion.cpp .
+
+
248 if (!isCacheUpToDate_matrix)
+
+
+
+
252 const double sqx = v.
x * v.
x ;
+
253 const double sqy = v.
y * v.
y ;
+
254 const double sqz = v.
z * v.
z ;
+
255 const double sqw = v.
w * v.
w ;
+
256 const double x = v.
x ;
+
257 const double y = v.
y ;
+
258 const double z = v.
z ;
+
259 const double w = v.
w ;
+
+
+
262 double invs = 1.0 / (sqx + sqy + sqz + sqw);
+
+
+
+
+
267 m.
c = ((2 * x * z) - (2 * w * y)) * invs;
+
268 m.
f = (1 - (2 * sqx) - (2 * sqz)) * invs;
+
269 m.
i = ((2 * x * z) + (2 * w * y)) * invs;
+
+
+
272 m.
a = (1 - (2 * sqy) - (2 * sqz)) * invs;
+
273 m.
g = ((2 * y * z) + (2 * w * x)) * invs;
+
274 m.
j = ((2 * y * z) - (2 * w * x)) * invs;
+
+
+
277 m.
b = ((2 * x * v.
y ) + (2 * w * z)) * invs;
+
278 m.
e = ((2 * x * v.
y ) - (2 * w * z)) * invs;
+
279 m.
k = (1 - (2 * sqx) - (2 * sqy)) * invs;
+
+
+
+
+
284 isCacheUpToDate_matrix =
true ;
+
+
+
+
+
+
+
+
+
◆ UnitQuaternion()
+
+
+
+
+
+ Quaternion Quaternion::UnitQuaternion
+ (
+ )
+ const
+
+
+
+
+
+
+
◆ operator<< [1/2]
+
+
+
+
+
+
+
+
+ std::ostream& operator<<
+ (
+ std::ostream &
+ os ,
+
+
+
+
+ const Quaternion &
+ q
+
+
+
+ )
+
+
+
+
+
+friend
+
+
+
+
+
Definition at line 325 of file Quaternion.cpp .
+
+
327 os <<
"[" << q.v <<
"]" ;
+
+
+
+
+
+
+
◆ operator<< [2/2]
+
+
+
+
+
+
+
+
+ std::wostream& operator<<
+ (
+ std::wostream &
+ os ,
+
+
+
+
+ const Quaternion &
+ q
+
+
+
+ )
+
+
+
+
+
+friend
+
+
+
+
+
Definition at line 331 of file Quaternion.cpp .
+
+
333 os << L
"[" << q.v << L
"]" ;
+
+
+
+
+
+
The documentation for this class was generated from the following files:
+
+
+
+
+
+
+
+Vector4< double > Vector4d
+#define PI
Pi up to 50 decimal places.
+#define Deg2Rad
Factor to convert degrees to radians.
+
+
+Vector4< double > Lerp(const Vector4< T > &other, double t) const
Will return a lerp result between this and another vector.
+
+
+A matrix 4x4 class representing a 3d transformation.
+bool Similar(const Vector4< T > &other, double epsilon=0.00001) const
Will compare if two vectors are similar to a certain epsilon value.
+
+double Magnitude() const
Will compute the magnitude.
+
+
+
+Vector3d RotateVector(const Vector3d &vec) const
Will rotate a vector by this quaternion.
+double SqrMagnitude() const
Will compute the square magnitude.
+
+Quaternion Conjugate() const
+Quaternion Inverse() const
+
+3D rotation representation
+
+#define Rad2Deg
Factor to convert radians to degrees.
+
+
+Representation of a 4d vector.
+
+
+
+
diff --git a/Doxygen/build/classEule_1_1TrapazoidalPrismCollider-members.html b/Doxygen/build/classEule_1_1TrapazoidalPrismCollider-members.html
new file mode 100644
index 0000000..f5a58fb
--- /dev/null
+++ b/Doxygen/build/classEule_1_1TrapazoidalPrismCollider-members.html
@@ -0,0 +1,105 @@
+
+
+
+
+
+
+
+Leonetienne/Eule: Member List
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Leonetienne/Eule
+
+ Homemade math library, mainly targetted towards computer graphics
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
This is the complete list of members for Eule::TrapazoidalPrismCollider , including all inherited members.
+
+
+
+
+
diff --git a/Doxygen/build/classEule_1_1TrapazoidalPrismCollider.html b/Doxygen/build/classEule_1_1TrapazoidalPrismCollider.html
new file mode 100644
index 0000000..7e5c566
--- /dev/null
+++ b/Doxygen/build/classEule_1_1TrapazoidalPrismCollider.html
@@ -0,0 +1,544 @@
+
+
+
+
+
+
+
+Leonetienne/Eule: Eule::TrapazoidalPrismCollider Class Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Leonetienne/Eule
+
+ Homemade math library, mainly targetted towards computer graphics
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
A collider describing a trapazoidal prism.
+ More...
+
+
#include <TrapazoidalPrismCollider.h >
+
+
+
+
+
+
+static constexpr std::size_t BACK = 0
+
+static constexpr std::size_t FRONT = 4
+
+static constexpr std::size_t LEFT = 0
+
+static constexpr std::size_t RIGHT = 2
+
+static constexpr std::size_t BOTTOM = 0
+
+static constexpr std::size_t TOP = 1
+
+
+
+
A collider describing a trapazoidal prism.
+
A trapazoidal prism is basically a box, but each vertex can be manipulated individually, altering the angles between faces. Distorting a 2d face into 3d space will result in undefined behaviour. Each face should stay flat, relative to itself. This shape is based on QUADS!
+
+
Definition at line 13 of file TrapazoidalPrismCollider.h .
+
+
+
◆ TrapazoidalPrismCollider() [1/3]
+
+
+
+
+
+ TrapazoidalPrismCollider::TrapazoidalPrismCollider
+ (
+ )
+
+
+
+
+
+
+
◆ TrapazoidalPrismCollider() [2/3]
+
+
+
+
◆ TrapazoidalPrismCollider() [3/3]
+
+
+
+
+
+
+
+
+
+default noexcept
+
+
+
+
+
+
+
+
+
◆ Contains()
+
+
+
+
+
+
+
+
+ bool TrapazoidalPrismCollider::Contains
+ (
+ const Vector3d &
+ point )
+ const
+
+
+
+
+override virtual
+
+
+
+
+
+
◆ GetVertex()
+
+
+
+
+
+ const Vector3d & TrapazoidalPrismCollider::GetVertex
+ (
+ std::size_t
+ index )
+ const
+
+
+
+
+
+
◆ operator=() [1/2]
+
+
+
+
◆ operator=() [2/2]
+
+
+
+
+
Definition at line 18 of file TrapazoidalPrismCollider.cpp .
+
+
20 vertices = std::move(other.vertices);
+
21 faceNormals = std::move(other.faceNormals);
+
+
+
+
+
+
+
+
◆ SetVertex()
+
+
+
+
+
+ void TrapazoidalPrismCollider::SetVertex
+ (
+ std::size_t
+ index ,
+
+
+
+
+ const Vector3d
+ value
+
+
+
+ )
+
+
+
+
+
+
Will set the value of a specific vertex.
+
+
Definition at line 31 of file TrapazoidalPrismCollider.cpp .
+
+
33 vertices[index] = value;
+
34 GenerateNormalsFromVertices();
+
+
+
+
+
+
+
+
◆ BACK
+
+
+
+
+
+
+
+
+ constexpr std::size_t Eule::TrapazoidalPrismCollider::BACK = 0
+
+
+
+
+static constexpr
+
+
+
+
+
+
◆ BOTTOM
+
+
+
+
+
+
+
+
+ constexpr std::size_t Eule::TrapazoidalPrismCollider::BOTTOM = 0
+
+
+
+
+static constexpr
+
+
+
+
+
+
◆ FRONT
+
+
+
+
+
+
+
+
+ constexpr std::size_t Eule::TrapazoidalPrismCollider::FRONT = 4
+
+
+
+
+static constexpr
+
+
+
+
+
+
◆ LEFT
+
+
+
+
+
+
+
+
+ constexpr std::size_t Eule::TrapazoidalPrismCollider::LEFT = 0
+
+
+
+
+static constexpr
+
+
+
+
+
+
◆ RIGHT
+
+
+
+
+
+
+
+
+ constexpr std::size_t Eule::TrapazoidalPrismCollider::RIGHT = 2
+
+
+
+
+static constexpr
+
+
+
+
+
+
◆ TOP
+
+
+
+
+
+
+
+
+ constexpr std::size_t Eule::TrapazoidalPrismCollider::TOP = 1
+
+
+
+
+static constexpr
+
+
+
+
+
The documentation for this class was generated from the following files:
+
+
+
+
+
diff --git a/Doxygen/build/classEule_1_1TrapazoidalPrismCollider__coll__graph.map b/Doxygen/build/classEule_1_1TrapazoidalPrismCollider__coll__graph.map
new file mode 100644
index 0000000..399a8f0
--- /dev/null
+++ b/Doxygen/build/classEule_1_1TrapazoidalPrismCollider__coll__graph.map
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/Doxygen/build/classEule_1_1TrapazoidalPrismCollider__coll__graph.md5 b/Doxygen/build/classEule_1_1TrapazoidalPrismCollider__coll__graph.md5
new file mode 100644
index 0000000..c621060
--- /dev/null
+++ b/Doxygen/build/classEule_1_1TrapazoidalPrismCollider__coll__graph.md5
@@ -0,0 +1 @@
+deee938530b892f287194fe0561c7d94
\ No newline at end of file
diff --git a/Doxygen/build/classEule_1_1TrapazoidalPrismCollider__coll__graph.png b/Doxygen/build/classEule_1_1TrapazoidalPrismCollider__coll__graph.png
new file mode 100644
index 0000000..3620945
Binary files /dev/null and b/Doxygen/build/classEule_1_1TrapazoidalPrismCollider__coll__graph.png differ
diff --git a/Doxygen/build/classEule_1_1TrapazoidalPrismCollider__inherit__graph.map b/Doxygen/build/classEule_1_1TrapazoidalPrismCollider__inherit__graph.map
new file mode 100644
index 0000000..399a8f0
--- /dev/null
+++ b/Doxygen/build/classEule_1_1TrapazoidalPrismCollider__inherit__graph.map
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/Doxygen/build/classEule_1_1TrapazoidalPrismCollider__inherit__graph.md5 b/Doxygen/build/classEule_1_1TrapazoidalPrismCollider__inherit__graph.md5
new file mode 100644
index 0000000..c621060
--- /dev/null
+++ b/Doxygen/build/classEule_1_1TrapazoidalPrismCollider__inherit__graph.md5
@@ -0,0 +1 @@
+deee938530b892f287194fe0561c7d94
\ No newline at end of file
diff --git a/Doxygen/build/classEule_1_1TrapazoidalPrismCollider__inherit__graph.png b/Doxygen/build/classEule_1_1TrapazoidalPrismCollider__inherit__graph.png
new file mode 100644
index 0000000..3620945
Binary files /dev/null and b/Doxygen/build/classEule_1_1TrapazoidalPrismCollider__inherit__graph.png differ
diff --git a/Doxygen/build/classEule_1_1Vector2-members.html b/Doxygen/build/classEule_1_1Vector2-members.html
new file mode 100644
index 0000000..ce6b090
--- /dev/null
+++ b/Doxygen/build/classEule_1_1Vector2-members.html
@@ -0,0 +1,134 @@
+
+
+
+
+
+
+
+Leonetienne/Eule: Member List
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Leonetienne/Eule
+
+ Homemade math library, mainly targetted towards computer graphics
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
This is the complete list of members for Eule::Vector2< T > , including all inherited members.
+
+
+
+
+
diff --git a/Doxygen/build/classEule_1_1Vector2.html b/Doxygen/build/classEule_1_1Vector2.html
new file mode 100644
index 0000000..1db3c5c
--- /dev/null
+++ b/Doxygen/build/classEule_1_1Vector2.html
@@ -0,0 +1,1478 @@
+
+
+
+
+
+
+
+Leonetienne/Eule: Eule::Vector2< T > Class Template Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Leonetienne/Eule
+
+ Homemade math library, mainly targetted towards computer graphics
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Representation of a 2d vector.
+ More...
+
+
#include <Vector2.h >
+
+
+
template<typename T>
+class Eule::Vector2< T >
+
+
Representation of a 2d vector.
+
Contains a lot of utility methods.
+
+
Definition at line 14 of file Vector2.h .
+
+
+
◆ Vector2() [1/4]
+
+
+
+
+template<typename T >
+
+
+
+
+
◆ Vector2() [2/4]
+
+
+
+
+template<typename T >
+
+
+
+
+
◆ Vector2() [3/4]
+
+
+
+
+template<typename T >
+
+
+
+
+
+
+
◆ Vector2() [4/4]
+
+
+
+
+template<typename T >
+
+
+
+
+
+
+default noexcept
+
+
+
+
+
+
+
+
+
◆ CrossProduct()
+
+
+
+
+template<typename T >
+
+
+ double Vector2::CrossProduct
+ (
+ const Vector2 < T > &
+ other )
+ const
+
+
+
+
+
Will compute the cross product to another Vector2 .
+
+
Definition at line 65 of file Vector2.cpp .
+
+
67 int iCross = (
x * other.
y ) -
+
+
+
70 return (
double )iCross;
+
+
+
+
+
+
◆ DotProduct()
+
+
+
+
+template<typename T >
+
+
+ double Vector2::DotProduct
+ (
+ const Vector2 < T > &
+ other )
+ const
+
+
+
+
+
Will compute the dot product to another Vector2 .
+
+
Definition at line 47 of file Vector2.cpp .
+
+
49 int iDot = (
x * other.
x ) +
+
+
+
+
+
+
+
+
+
◆ Lerp()
+
+
+
+
+template<typename T >
+
+
+ Vector2 < double > Vector2::Lerp
+ (
+ const Vector2 < T > &
+ other ,
+
+
+
+
+ double
+ t
+
+
+
+ )
+ const
+
+
+
+
+
Will return a lerp result between this and another vector.
+
+
Definition at line 256 of file Vector2.cpp .
+
+
+
+
+
◆ LerpSelf()
+
+
+
+
+template<typename T >
+
+
+ void Vector2::LerpSelf
+ (
+ const Vector2 < T > &
+ other ,
+
+
+
+
+ double
+ t
+
+
+
+ )
+
+
+
+
+
+
Will lerp itself towards other by t.
+
+
Definition at line 238 of file Vector2.cpp .
+
+
240 const double it = 1.0 - t;
+
+
242 x = (int)(it * (
double )
x + t * (double)other.
x );
+
243 y = (int)(it * (
double )
y + t * (double)other.
y );
+
+
+
+
+
+
+
+
◆ Magnitude()
+
+
+
+
+template<typename T >
+
+
+ double Vector2::Magnitude
+
+
+
+
+
Will compute the magnitude.
+
+
Definition at line 90 of file Vector2.cpp .
+
+
+
+
+
◆ Normalize()
+
+
+
+
+template<typename T >
+
+
+ Vector2 < double > Vector2::Normalize
+
+
+
+
+
Will return the normalization of this vector.
+
+
Definition at line 137 of file Vector2.cpp .
+
+
+
140 norm.NormalizeSelf();
+
+
+
+
+
+
+
+
◆ NormalizeSelf()
+
+
+
+
+template<typename T >
+
+
+ void Vector2::NormalizeSelf
+ (
+ )
+
+
+
+
+
+
Will normalize this vector.
+
+
Definition at line 187 of file Vector2.cpp .
+
+
189 std::cerr <<
"Stop normalizing int-vectors!!" << std::endl;
+
+
+
+
+
+
+
+
+
+
◆ operator Vector3< T >()
+
+
+
+
+template<typename T >
+
+
+ Vector2::operator Vector3 < T >
+
+
+
+
+
+
◆ operator Vector4< T >()
+
+
+
+
+template<typename T >
+
+
+ Vector2::operator Vector4 < T >
+
+
+
+
+
Conversion method.
+
+
Definition at line 680 of file Vector2.cpp .
+
+
+
+
+
◆ operator!=()
+
+
+
+
+template<typename T >
+
+
+ bool Vector2::operator!=
+ (
+ const Vector2 < T > &
+ other )
+ const
+
+
+
+
+
+
◆ operator*()
+
+
+
+
+template<typename T >
+
+
+ Vector2 < T > Vector2::operator*
+ (
+ const T
+ scale )
+ const
+
+
+
+
+
+
◆ operator*=()
+
+
+
+
+template<typename T >
+
+
+ void Vector2::operator*=
+ (
+ const T
+ scale )
+
+
+
+
+
+
+
◆ operator+()
+
+
+
+
+template<typename T >
+
+
+ Vector2 < T > Vector2::operator+
+ (
+ const Vector2 < T > &
+ other )
+ const
+
+
+
+
+
+
◆ operator+=()
+
+
+
+
+template<typename T >
+
+
+ void Vector2::operator+=
+ (
+ const Vector2 < T > &
+ other )
+
+
+
+
+
+
+
◆ operator-() [1/2]
+
+
+
+
+template<typename T >
+
+
+ Vector2 < T > Vector2::operator-
+
+
+
+
+
+
◆ operator-() [2/2]
+
+
+
+
+template<typename T >
+
+
+ Vector2 < T > Vector2::operator-
+ (
+ const Vector2 < T > &
+ other )
+ const
+
+
+
+
+
+
◆ operator-=()
+
+
+
+
+template<typename T >
+
+
+ void Vector2::operator-=
+ (
+ const Vector2 < T > &
+ other )
+
+
+
+
+
+
+
◆ operator/()
+
+
+
+
+template<typename T >
+
+
+ Vector2 < T > Vector2::operator/
+ (
+ const T
+ scale )
+ const
+
+
+
+
+
+
◆ operator/=()
+
+
+
+
+template<typename T >
+
+
+ void Vector2::operator/=
+ (
+ const T
+ scale )
+
+
+
+
+
+
+
◆ operator=() [1/2]
+
+
+
+
+template<typename T >
+
+
+ void Vector2::operator=
+ (
+ const Vector2 < T > &
+ other )
+
+
+
+
+
+
Conversion method.
+
+
Definition at line 630 of file Vector2.cpp .
+
+
+
+
+
◆ operator=() [2/2]
+
+
+
+
+template<typename T >
+
+
+
+
+
+ void Vector2::operator=
+ (
+ Vector2 < T > &&
+ other )
+
+
+
+
+
+noexcept
+
+
+
+
+
Definition at line 639 of file Vector2.cpp .
+
+
641 x = std::move(other.
x );
+
642 y = std::move(other.
y );
+
+
+
+
+
+
+
+
◆ operator==()
+
+
+
+
+template<typename T >
+
+
+ bool Vector2::operator==
+ (
+ const Vector2 < T > &
+ other )
+ const
+
+
+
+
+
+
◆ operator[]() [1/2]
+
+
+
+
+template<typename T >
+
+
+ T & Vector2::operator[]
+ (
+ std::size_t
+ idx )
+
+
+
+
+
+
Definition at line 267 of file Vector2.cpp .
+
+
+
+
+
+
+
+
+
276 throw std::out_of_range(
"Array descriptor on Vector2<T> out of range!" );
+
+
+
+
+
+
+
◆ operator[]() [2/2]
+
+
+
+
+template<typename T >
+
+
+ const T & Vector2::operator[]
+ (
+ std::size_t
+ idx )
+ const
+
+
+
+
+
Definition at line 281 of file Vector2.cpp .
+
+
+
+
+
+
+
+
+
290 throw std::out_of_range(
"Array descriptor on Vector2<T> out of range!" );
+
+
+
+
+
+
+
◆ Similar()
+
+
+
+
+template<typename T >
+
+
+ bool Vector2::Similar
+ (
+ const Vector2 < T > &
+ other ,
+
+
+
+
+ double
+ epsilon = 0.00001
+
+
+
+ )
+ const
+
+
+
+
+
Will compare if two vectors are similar to a certain epsilon value.
+
+
Definition at line 295 of file Vector2.cpp .
+
+
+
+
299 (::Math::Similar(
y , other.
y , epsilon))
+
+
+
+
+
+
+
◆ SqrMagnitude()
+
+
+
+
+template<typename T >
+
+
+ double Vector2::SqrMagnitude
+ (
+ )
+ const
+
+
+
+
+
Will compute the square magnitude.
+
+
Definition at line 83 of file Vector2.cpp .
+
+
85 int iSqrMag =
x *
x +
y *
y ;
+
86 return (
double )iSqrMag;
+
+
+
+
+
+
◆ ToDouble()
+
+
+
+
+template<typename T >
+
+
+ Vector2 < double > Vector2::ToDouble
+
+
+
+
+
Will convert this vector to a Vector2d.
+
+
Definition at line 310 of file Vector2.cpp .
+
+
+
+
+
◆ ToInt()
+
+
+
+
+template<typename T >
+
+
+ Vector2 < int > Vector2::ToInt
+
+
+
+
+
Will convert this vector to a Vector2i.
+
+
Definition at line 304 of file Vector2.cpp .
+
+
+
+
+
◆ VectorScale()
+
+
+
+
+template<typename T >
+
+
+ Vector2 < int > Vector2::VectorScale
+ (
+ const Vector2 < T > &
+ scalar )
+ const
+
+
+
+
+
Will scale self.n by scalar.n.
+
+
Definition at line 127 of file Vector2.cpp .
+
+
+
+
+
+
◆ operator<< [1/2]
+
+
+
+
+template<typename T >
+
+
+
+
+
+ std::ostream& operator<<
+ (
+ std::ostream &
+ os ,
+
+
+
+
+ const Vector2 < T > &
+ v
+
+
+
+ )
+
+
+
+
+
+friend
+
+
+
+
+
Definition at line 80 of file Vector2.h .
+
+
82 return os <<
"[x: " << v.x <<
" y: " << v.y <<
"]" ;
+
+
+
+
+
+
◆ operator<< [2/2]
+
+
+
+
+template<typename T >
+
+
+
+
+
+ std::wostream& operator<<
+ (
+ std::wostream &
+ os ,
+
+
+
+
+ const Vector2 < T > &
+ v
+
+
+
+ )
+
+
+
+
+
+friend
+
+
+
+
+
Definition at line 84 of file Vector2.h .
+
+
86 return os << L
"[x: " << v.x << L
" y: " << v.y << L
"]" ;
+
+
+
+
+
+
+
◆ down
+
+
+
+
+template<typename T >
+
+
+
+
+
+ const Vector2 < double > Vector2::down
+
+
+
+
+static
+
+
+
+
+
+
◆ left
+
+
+
+
+template<typename T >
+
+
+
+
+
+ const Vector2 < double > Vector2::left
+
+
+
+
+static
+
+
+
+
+
+
◆ one
+
+
+
+
+template<typename T >
+
+
+
+
+
+ const Vector2 < double > Vector2::one
+
+
+
+
+static
+
+
+
+
+
+
◆ right
+
+
+
+
+template<typename T >
+
+
+
+
+
+ const Vector2 < double > Vector2::right
+
+
+
+
+static
+
+
+
+
+
+
◆ up
+
+
+
+
+template<typename T >
+
+
+
+
+
+ const Vector2 < double > Vector2::up
+
+
+
+
+static
+
+
+
+
+
+
+
+
+
+
+template<typename T >
+
+
+
+
+
+
+
+
+
+template<typename T >
+
+
+
+
+
◆ zero
+
+
+
+
+template<typename T >
+
+
+
+
+
+ const Vector2 < double > Vector2::zero
+
+
+
+
+static
+
+
+
+
+
The documentation for this class was generated from the following files:
+
+Representation of a 3d vector.
+double SqrMagnitude() const
Will compute the square magnitude.
+Vector2< double > ToDouble() const
Will convert this vector to a Vector2d.
+
+
+
+static constexpr bool Similar(const double a, const double b, const double epsilon=0.00001)
Compares two double values with a given accuracy.
+bool operator==(const Vector2< T > &other) const
+Representation of a 4d vector.
+
+
+
+
diff --git a/Doxygen/build/classEule_1_1Vector3-members.html b/Doxygen/build/classEule_1_1Vector3-members.html
new file mode 100644
index 0000000..7a65cec
--- /dev/null
+++ b/Doxygen/build/classEule_1_1Vector3-members.html
@@ -0,0 +1,139 @@
+
+
+
+
+
+
+
+Leonetienne/Eule: Member List
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Leonetienne/Eule
+
+ Homemade math library, mainly targetted towards computer graphics
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
This is the complete list of members for Eule::Vector3< T > , including all inherited members.
+
+
+
+
+
diff --git a/Doxygen/build/classEule_1_1Vector3.html b/Doxygen/build/classEule_1_1Vector3.html
new file mode 100644
index 0000000..b39913c
--- /dev/null
+++ b/Doxygen/build/classEule_1_1Vector3.html
@@ -0,0 +1,1672 @@
+
+
+
+
+
+
+
+Leonetienne/Eule: Eule::Vector3< T > Class Template Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Leonetienne/Eule
+
+ Homemade math library, mainly targetted towards computer graphics
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Representation of a 3d vector.
+ More...
+
+
#include <Matrix4x4.h >
+
+
+
+
+
template<typename T>
+class Eule::Vector3< T >
+
+
Representation of a 3d vector.
+
Contains a lot of utility methods.
+
+
Definition at line 9 of file Matrix4x4.h .
+
+
+
◆ Vector3() [1/4]
+
+
+
+
+template<typename T >
+
+
+
+
Definition at line 20 of file Vector3.h .
+
20 :
x { 0 },
y { 0 },
z { 0 } {}
+
+
+
+
+
◆ Vector3() [2/4]
+
+
+
+
+template<typename T >
+
+
+
+
Definition at line 21 of file Vector3.h .
+
21 :
x { _x },
y { _y },
z { _z } {}
+
+
+
+
+
◆ Vector3() [3/4]
+
+
+
+
+template<typename T >
+
+
+
+
+
+
+
◆ Vector3() [4/4]
+
+
+
+
+template<typename T >
+
+
+
+
+
+
+default noexcept
+
+
+
+
+
+
+
+
+
◆ CrossProduct()
+
+
+
+
+template<typename T >
+
+
+ Vector3 < double > Vector3::CrossProduct
+ (
+ const Vector3 < T > &
+ other )
+ const
+
+
+
+
+
Will compute the cross product to another Vector3 .
+
+
Definition at line 68 of file Vector3.cpp .
+
+
+
71 cp.
x = ((double)
y * (
double )other.
z ) - ((
double )
z * (double)other.
y );
+
72 cp.
y = ((double)
z * (
double )other.
x ) - ((
double )
x * (double)other.
z );
+
73 cp.
z = ((double)
x * (
double )other.
y ) - ((
double )
y * (double)other.
x );
+
+
+
+
+
+
+
+
◆ DotProduct()
+
+
+
+
+template<typename T >
+
+
+ double Vector3::DotProduct
+ (
+ const Vector3 < T > &
+ other )
+ const
+
+
+
+
+
Will compute the dot product to another Vector3 .
+
+
Definition at line 48 of file Vector3.cpp .
+
+
50 int iDot = (
x * other.
x ) + (
y * other.
y ) + (
z * other.
z );
+
+
+
+
+
+
+
◆ Lerp()
+
+
+
+
+template<typename T >
+
+
+ Vector3 < double > Vector3::Lerp
+ (
+ const Vector3 < T > &
+ other ,
+
+
+
+
+ double
+ t
+
+
+
+ )
+ const
+
+
+
+
+
Will return a lerp result between this and another vector.
+
+
Definition at line 330 of file Vector3.cpp .
+
+
+
+
+
◆ LerpSelf()
+
+
+
+
+template<typename T >
+
+
+ void Vector3::LerpSelf
+ (
+ const Vector3 < T > &
+ other ,
+
+
+
+
+ double
+ t
+
+
+
+ )
+
+
+
+
+
+
Will lerp itself towards other by t.
+
+
Definition at line 311 of file Vector3.cpp .
+
+
313 const double it = 1.0 - t;
+
+
315 x = (int)(it * (
double )
x + t * (double)other.
x );
+
316 y = (int)(it * (
double )
y + t * (double)other.
y );
+
317 z = (int)(it * (
double )
z + t * (double)other.
z );
+
+
+
+
+
+
+
+
◆ Magnitude()
+
+
+
+
+template<typename T >
+
+
+ double Vector3::Magnitude
+
+
+
+
+
Will compute the magnitude.
+
+
Definition at line 95 of file Vector3.cpp .
+
+
+
+
+
◆ Normalize()
+
+
+
+
+template<typename T >
+
+
+ Vector3 < double > Vector3::Normalize
+
+
+
+
+
Will return the normalization of this vector.
+
+
Definition at line 147 of file Vector3.cpp .
+
+
+
150 norm.NormalizeSelf();
+
+
+
+
+
+
+
+
◆ NormalizeSelf()
+
+
+
+
+template<typename T >
+
+
+ void Vector3::NormalizeSelf
+ (
+ )
+
+
+
+
+
+
Will normalize this vector.
+
+
Definition at line 200 of file Vector3.cpp .
+
+
202 std::cerr <<
"Stop normalizing int-vectors!!" << std::endl;
+
+
+
+
+
+
+
+
+
+
+
◆ operator Vector2< T >()
+
+
+
+
+template<typename T >
+
+
+ Vector3::operator Vector2 < T >
+
+
+
+
+
+
◆ operator Vector4< T >()
+
+
+
+
+template<typename T >
+
+
+ Vector3::operator Vector4 < T >
+
+
+
+
+
Conversion method.
+
+
Definition at line 879 of file Vector3.cpp .
+
+
+
+
+
◆ operator!=()
+
+
+
+
+template<typename T >
+
+
+ bool Vector3::operator!=
+ (
+ const Vector3 < T > &
+ other )
+ const
+
+
+
+
+
+
◆ operator*() [1/2]
+
+
+
+
+template<typename T >
+
+
+ Vector3 < int > Vector3::operator*
+ (
+ const Matrix4x4 &
+ mat )
+ const
+
+
+
+
+
Definition at line 731 of file Vector3.cpp .
+
+
+
+
+
736 newVec.
x = ((mat[0][0] *
x ) + (mat[1][0] *
y ) + (mat[2][0] *
z ));
+
737 newVec.
y = ((mat[0][1] *
x ) + (mat[1][1] *
y ) + (mat[2][1] *
z ));
+
738 newVec.
z = ((mat[0][2] *
x ) + (mat[1][2] *
y ) + (mat[2][2] *
z ));
+
+
+
741 newVec.
x += mat[0][3];
+
742 newVec.
y += mat[1][3];
+
743 newVec.
z += mat[2][3];
+
+
+
+
+
+
+
+
+
+
+
+
◆ operator*() [2/2]
+
+
+
+
+template<typename T >
+
+
+ Vector3 < T > Vector3::operator*
+ (
+ const T
+ scale )
+ const
+
+
+
+
+
+
◆ operator*=() [1/2]
+
+
+
+
+template<typename T >
+
+
+ void Vector3::operator*=
+ (
+ const Matrix4x4 &
+ mat )
+
+
+
+
+
+
Definition at line 836 of file Vector3.cpp .
+
+
+
+
840 x = (int)((mat[0][0] * buffer.x) + (mat[0][1] * buffer.y) + (mat[0][2] * buffer.z));
+
841 y = (int)((mat[1][0] * buffer.x) + (mat[1][1] * buffer.y) + (mat[1][2] * buffer.z));
+
842 z = (int)((mat[2][0] * buffer.x) + (mat[2][1] * buffer.y) + (mat[2][2] * buffer.z));
+
+
+
+
+
+
+
+
+
+
+
+
+
◆ operator*=() [2/2]
+
+
+
+
+template<typename T >
+
+
+ void Vector3::operator*=
+ (
+ const T
+ scale )
+
+
+
+
+
+
+
◆ operator+()
+
+
+
+
+template<typename T >
+
+
+ Vector3 < T > Vector3::operator+
+ (
+ const Vector3 < T > &
+ other )
+ const
+
+
+
+
+
+
◆ operator+=()
+
+
+
+
+template<typename T >
+
+
+ void Vector3::operator+=
+ (
+ const Vector3 < T > &
+ other )
+
+
+
+
+
+
+
◆ operator-() [1/2]
+
+
+
+
+template<typename T >
+
+
+ Vector3 < T > Vector3::operator-
+
+
+
+
+
+
◆ operator-() [2/2]
+
+
+
+
+template<typename T >
+
+
+ Vector3 < T > Vector3::operator-
+ (
+ const Vector3 < T > &
+ other )
+ const
+
+
+
+
+
+
◆ operator-=()
+
+
+
+
+template<typename T >
+
+
+ void Vector3::operator-=
+ (
+ const Vector3 < T > &
+ other )
+
+
+
+
+
+
+
◆ operator/()
+
+
+
+
+template<typename T >
+
+
+ Vector3 < T > Vector3::operator/
+ (
+ const T
+ scale )
+ const
+
+
+
+
+
+
◆ operator/=()
+
+
+
+
+template<typename T >
+
+
+ void Vector3::operator/=
+ (
+ const T
+ scale )
+
+
+
+
+
+
+
◆ operator=() [1/2]
+
+
+
+
+template<typename T >
+
+
+ void Vector3::operator=
+ (
+ const Vector3 < T > &
+ other )
+
+
+
+
+
+
Conversion method.
+
+
Definition at line 816 of file Vector3.cpp .
+
+
+
+
+
◆ operator=() [2/2]
+
+
+
+
+template<typename T >
+
+
+
+
+
+ void Vector3::operator=
+ (
+ Vector3 < T > &&
+ other )
+
+
+
+
+
+noexcept
+
+
+
+
+
Definition at line 826 of file Vector3.cpp .
+
+
828 x = std::move(other.
x );
+
829 y = std::move(other.
y );
+
830 z = std::move(other.
z );
+
+
+
+
+
+
+
+
◆ operator==()
+
+
+
+
+template<typename T >
+
+
+ bool Vector3::operator==
+ (
+ const Vector3 < T > &
+ other )
+ const
+
+
+
+
+
+
◆ operator[]() [1/2]
+
+
+
+
+template<typename T >
+
+
+ T & Vector3::operator[]
+ (
+ std::size_t
+ idx )
+
+
+
+
+
+
Definition at line 235 of file Vector3.cpp .
+
+
+
+
+
+
+
+
+
+
+
246 throw std::out_of_range(
"Array descriptor on Vector3<T> out of range!" );
+
+
+
+
+
+
+
◆ operator[]() [2/2]
+
+
+
+
+template<typename T >
+
+
+ const T & Vector3::operator[]
+ (
+ std::size_t
+ idx )
+ const
+
+
+
+
+
Definition at line 251 of file Vector3.cpp .
+
+
+
+
+
+
+
+
+
+
+
262 throw std::out_of_range(
"Array descriptor on Vector3<T> out of range!" );
+
+
+
+
+
+
+
◆ Similar()
+
+
+
+
+template<typename T >
+
+
+ bool Vector3::Similar
+ (
+ const Vector3 < T > &
+ other ,
+
+
+
+
+ double
+ epsilon = 0.00001
+
+
+
+ )
+ const
+
+
+
+
+
Will compare if two vectors are similar to a certain epsilon value.
+
+
Definition at line 213 of file Vector3.cpp .
+
+
+
+
217 (::Math::Similar(
y , other.
y , epsilon)) &&
+
+
+
+
+
+
+
+
◆ SqrMagnitude()
+
+
+
+
+template<typename T >
+
+
+ double Vector3::SqrMagnitude
+ (
+ )
+ const
+
+
+
+
+
Will compute the square magnitude.
+
+
Definition at line 88 of file Vector3.cpp .
+
+
90 int iSqrMag =
x *
x +
y *
y +
z *
z ;
+
91 return (
double )iSqrMag;
+
+
+
+
+
+
◆ ToDouble()
+
+
+
+
+template<typename T >
+
+
+ Vector3 < double > Vector3::ToDouble
+
+
+
+
+
Will convert this vector to a Vector3d.
+
+
Definition at line 229 of file Vector3.cpp .
+
+
+
+
+
◆ ToInt()
+
+
+
+
+template<typename T >
+
+
+ Vector3 < int > Vector3::ToInt
+
+
+
+
+
Will convert this vector to a Vector3i.
+
+
Definition at line 223 of file Vector3.cpp .
+
+
+
+
+
◆ VectorScale()
+
+
+
+
+template<typename T >
+
+
+ Vector3 < int > Vector3::VectorScale
+ (
+ const Vector3 < T > &
+ scalar )
+ const
+
+
+
+
+
Will scale self.n by scalar.n.
+
+
Definition at line 135 of file Vector3.cpp .
+
+
+
+
+
+
◆ operator<< [1/2]
+
+
+
+
+template<typename T >
+
+
+
+
+
+ std::ostream& operator<<
+ (
+ std::ostream &
+ os ,
+
+
+
+
+ const Vector3 < T > &
+ v
+
+
+
+ )
+
+
+
+
+
+friend
+
+
+
+
+
Definition at line 85 of file Vector3.h .
+
+
87 return os <<
"[x: " << v.x <<
" y: " << v.y <<
" z: " << v.z <<
"]" ;
+
+
+
+
+
+
◆ operator<< [2/2]
+
+
+
+
+template<typename T >
+
+
+
+
+
+ std::wostream& operator<<
+ (
+ std::wostream &
+ os ,
+
+
+
+
+ const Vector3 < T > &
+ v
+
+
+
+ )
+
+
+
+
+
+friend
+
+
+
+
+
Definition at line 89 of file Vector3.h .
+
+
91 return os << L
"[x: " << v.x << L
" y: " << v.y << L
" z: " << v.z << L
"]" ;
+
+
+
+
+
+
+
◆ backward
+
+
+
+
+template<typename T >
+
+
+
+
+
+ const Vector3 < double > Vector3::backward
+
+
+
+
+static
+
+
+
+
+
+
◆ down
+
+
+
+
+template<typename T >
+
+
+
+
+
+ const Vector3 < double > Vector3::down
+
+
+
+
+static
+
+
+
+
+
+
◆ forward
+
+
+
+
+template<typename T >
+
+
+
+
+
+ const Vector3 < double > Vector3::forward
+
+
+
+
+static
+
+
+
+
+
+
◆ left
+
+
+
+
+template<typename T >
+
+
+
+
+
+ const Vector3 < double > Vector3::left
+
+
+
+
+static
+
+
+
+
+
+
◆ one
+
+
+
+
+template<typename T >
+
+
+
+
+
+ const Vector3 < double > Vector3::one
+
+
+
+
+static
+
+
+
+
+
+
◆ right
+
+
+
+
+template<typename T >
+
+
+
+
+
+ const Vector3 < double > Vector3::right
+
+
+
+
+static
+
+
+
+
+
+
◆ up
+
+
+
+
+template<typename T >
+
+
+
+
+
+ const Vector3 < double > Vector3::up
+
+
+
+
+static
+
+
+
+
+
+
+
+
+
+
+template<typename T >
+
+
+
+
+
+
+
+
+
+template<typename T >
+
+
+
+
+
+
+
+
+
+template<typename T >
+
+
+
+
+
◆ zero
+
+
+
+
+template<typename T >
+
+
+
+
+
+ const Vector3 < double > Vector3::zero
+
+
+
+
+static
+
+
+
+
+
The documentation for this class was generated from the following files:
+
+
+Vector3< double > ToDouble() const
Will convert this vector to a Vector3d.
+bool operator==(const Vector3< T > &other) const
+
+
+Representation of a 2d vector.
+double SqrMagnitude() const
Will compute the square magnitude.
+static constexpr bool Similar(const double a, const double b, const double epsilon=0.00001)
Compares two double values with a given accuracy.
+
+Representation of a 4d vector.
+
+
+
+
diff --git a/Doxygen/build/classEule_1_1Vector3__coll__graph.map b/Doxygen/build/classEule_1_1Vector3__coll__graph.map
new file mode 100644
index 0000000..1e1b359
--- /dev/null
+++ b/Doxygen/build/classEule_1_1Vector3__coll__graph.map
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/Doxygen/build/classEule_1_1Vector3__coll__graph.md5 b/Doxygen/build/classEule_1_1Vector3__coll__graph.md5
new file mode 100644
index 0000000..71ea584
--- /dev/null
+++ b/Doxygen/build/classEule_1_1Vector3__coll__graph.md5
@@ -0,0 +1 @@
+b3a7a2417e6523c8919c534d316cd3d7
\ No newline at end of file
diff --git a/Doxygen/build/classEule_1_1Vector3__coll__graph.png b/Doxygen/build/classEule_1_1Vector3__coll__graph.png
new file mode 100644
index 0000000..2a8937b
Binary files /dev/null and b/Doxygen/build/classEule_1_1Vector3__coll__graph.png differ
diff --git a/Doxygen/build/classEule_1_1Vector4-members.html b/Doxygen/build/classEule_1_1Vector4-members.html
new file mode 100644
index 0000000..3b17a2d
--- /dev/null
+++ b/Doxygen/build/classEule_1_1Vector4-members.html
@@ -0,0 +1,140 @@
+
+
+
+
+
+
+
+Leonetienne/Eule: Member List
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Leonetienne/Eule
+
+ Homemade math library, mainly targetted towards computer graphics
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
This is the complete list of members for Eule::Vector4< T > , including all inherited members.
+
+
+
+
+
diff --git a/Doxygen/build/classEule_1_1Vector4.html b/Doxygen/build/classEule_1_1Vector4.html
new file mode 100644
index 0000000..08822ad
--- /dev/null
+++ b/Doxygen/build/classEule_1_1Vector4.html
@@ -0,0 +1,1703 @@
+
+
+
+
+
+
+
+Leonetienne/Eule: Eule::Vector4< T > Class Template Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Leonetienne/Eule
+
+ Homemade math library, mainly targetted towards computer graphics
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Representation of a 4d vector.
+ More...
+
+
#include <Vector2.h >
+
+
+
+
+T x
+
+T y
+
+T z
+
+T w
+
+
+
+
template<typename T>
+class Eule::Vector4< T >
+
+
Representation of a 4d vector.
+
Contains a lot of utility methods.
+
+
Definition at line 8 of file Vector2.h .
+
+
+
◆ Vector4() [1/4]
+
+
+
+
+template<typename T >
+
+
+
+
Definition at line 20 of file Vector4.h .
+
20 :
x { 0 },
y { 0 },
z { 0 },
w { 0 } {}
+
+
+
+
+
◆ Vector4() [2/4]
+
+
+
+
+template<typename T >
+
+
+
+
+
+ Eule::Vector4 < T >::Vector4
+ (
+ T
+ _x ,
+
+
+
+
+ T
+ _y ,
+
+
+
+
+ T
+ _z ,
+
+
+
+
+ T
+ _w
+
+
+
+ )
+
+
+
+
+
+inline
+
+
+
+
+
Definition at line 21 of file Vector4.h .
+
21 :
x { _x },
y { _y },
z { _z },
w { _w } {}
+
+
+
+
+
◆ Vector4() [3/4]
+
+
+
+
+template<typename T >
+
+
+
+
+
+
+
◆ Vector4() [4/4]
+
+
+
+
+template<typename T >
+
+
+
+
+
+
+default noexcept
+
+
+
+
+
+
+
+
+
◆ Lerp()
+
+
+
+
+template<typename T >
+
+
+ Vector4 < double > Vector4::Lerp
+ (
+ const Vector4 < T > &
+ other ,
+
+
+
+
+ double
+ t
+
+
+
+ )
+ const
+
+
+
+
+
Will return a lerp result between this and another vector.
+
+
Definition at line 287 of file Vector4.cpp .
+
+
+
+
+
◆ LerpSelf()
+
+
+
+
+template<typename T >
+
+
+ void Vector4::LerpSelf
+ (
+ const Vector4 < T > &
+ other ,
+
+
+
+
+ double
+ t
+
+
+
+ )
+
+
+
+
+
+
Will lerp itself towards other by t.
+
+
Definition at line 267 of file Vector4.cpp .
+
+
269 const double it = 1.0 - t;
+
+
271 x = (int)(it * (
double )
x + t * (double)other.
x );
+
272 y = (int)(it * (
double )
y + t * (double)other.
y );
+
273 z = (int)(it * (
double )
z + t * (double)other.
z );
+
274 w = (int)(it * (
double )
w + t * (double)other.
w );
+
+
+
+
+
+
+
+
◆ Magnitude()
+
+
+
+
+template<typename T >
+
+
+ double Vector4::Magnitude
+
+
+
+
+
Will compute the magnitude.
+
+
Definition at line 38 of file Vector4.cpp .
+
+
+
+
+
◆ Normalize()
+
+
+
+
+template<typename T >
+
+
+ Vector4 < double > Vector4::Normalize
+
+
+
+
+
Will return the normalization of this vector.
+
+
Definition at line 92 of file Vector4.cpp .
+
+
+
+
+
◆ NormalizeSelf()
+
+
+
+
+template<typename T >
+
+
+ void Vector4::NormalizeSelf
+ (
+ )
+
+
+
+
+
+
Will normalize this vector.
+
+
Definition at line 148 of file Vector4.cpp .
+
+
150 std::cerr <<
"Stop normalizing int-vectors!!" << std::endl;
+
+
+
+
+
+
+
+
+
+
+
+
◆ operator Vector2< T >()
+
+
+
+
+template<typename T >
+
+
+ Vector4::operator Vector2 < T >
+
+
+
+
+
+
◆ operator Vector3< T >()
+
+
+
+
+template<typename T >
+
+
+ Vector4::operator Vector3 < T >
+
+
+
+
+
Conversion method.
+
+
Definition at line 781 of file Vector4.cpp .
+
+
+
+
+
◆ operator!=()
+
+
+
+
+template<typename T >
+
+
+ bool Vector4::operator!=
+ (
+ const Vector4 < T > &
+ other )
+ const
+
+
+
+
+
+
◆ operator*() [1/2]
+
+
+
+
+template<typename T >
+
+
+ Vector4 < int > Vector4::operator*
+ (
+ const Matrix4x4 &
+ mat )
+ const
+
+
+
+
+
Definition at line 684 of file Vector4.cpp .
+
+
+
+
688 newVec.
x = (mat[0][0] *
x ) + (mat[0][1] *
y ) + (mat[0][2] *
z ) + (mat[0][3] *
w );
+
689 newVec.
y = (mat[1][0] *
x ) + (mat[1][1] *
y ) + (mat[1][2] *
z ) + (mat[1][3] *
w );
+
690 newVec.
z = (mat[2][0] *
x ) + (mat[2][1] *
y ) + (mat[2][2] *
z ) + (mat[2][3] *
w );
+
691 newVec.
w = (mat[3][0] *
x ) + (mat[3][1] *
y ) + (mat[3][2] *
z ) + (mat[3][3] *
w );
+
+
+
+
+
+
+
+
+
+
+
+
+
◆ operator*() [2/2]
+
+
+
+
+template<typename T >
+
+
+ Vector4 < T > Vector4::operator*
+ (
+ const T
+ scale )
+ const
+
+
+
+
+
+
◆ operator*=() [1/2]
+
+
+
+
+template<typename T >
+
+
+ void Vector4::operator*=
+ (
+ const Matrix4x4 &
+ mat )
+
+
+
+
+
+
Definition at line 752 of file Vector4.cpp .
+
+
+
+
+
+
758 x = (int)((mat[0][0] * buffer.x) + (mat[0][1] * buffer.y) + (mat[0][2] * buffer.z) + (mat[0][3] * buffer.w));
+
759 y = (int)((mat[1][0] * buffer.x) + (mat[1][1] * buffer.y) + (mat[1][2] * buffer.z) + (mat[1][3] * buffer.w));
+
760 z = (int)((mat[2][0] * buffer.x) + (mat[2][1] * buffer.y) + (mat[2][2] * buffer.z) + (mat[2][3] * buffer.w));
+
761 w = (int)((mat[3][0] * buffer.x) + (mat[3][1] * buffer.y) + (mat[3][2] * buffer.z) + (mat[3][3] * buffer.w));
+
+
+
+
+
+
+
+
◆ operator*=() [2/2]
+
+
+
+
+template<typename T >
+
+
+ void Vector4::operator*=
+ (
+ const T
+ scale )
+
+
+
+
+
+
+
◆ operator+()
+
+
+
+
+template<typename T >
+
+
+ Vector4 < T > Vector4::operator+
+ (
+ const Vector4 < T > &
+ other )
+ const
+
+
+
+
+
+
◆ operator+=()
+
+
+
+
+template<typename T >
+
+
+ void Vector4::operator+=
+ (
+ const Vector4 < T > &
+ other )
+
+
+
+
+
+
+
◆ operator-() [1/2]
+
+
+
+
+template<typename T >
+
+
+ Vector4 < T > Vector4::operator-
+
+
+
+
+
+
◆ operator-() [2/2]
+
+
+
+
+template<typename T >
+
+
+ Vector4 < T > Vector4::operator-
+ (
+ const Vector4 < T > &
+ other )
+ const
+
+
+
+
+
+
◆ operator-=()
+
+
+
+
+template<typename T >
+
+
+ void Vector4::operator-=
+ (
+ const Vector4 < T > &
+ other )
+
+
+
+
+
+
+
◆ operator/()
+
+
+
+
+template<typename T >
+
+
+ Vector4 < T > Vector4::operator/
+ (
+ const T
+ scale )
+ const
+
+
+
+
+
+
◆ operator/=()
+
+
+
+
+template<typename T >
+
+
+ void Vector4::operator/=
+ (
+ const T
+ scale )
+
+
+
+
+
+
+
◆ operator=() [1/2]
+
+
+
+
+template<typename T >
+
+
+ void Vector4::operator=
+ (
+ const Vector4 < T > &
+ other )
+
+
+
+
+
+
Conversion method.
+
+
Definition at line 730 of file Vector4.cpp .
+
+
+
+
+
◆ operator=() [2/2]
+
+
+
+
+template<typename T >
+
+
+
+
+
+ void Vector4::operator=
+ (
+ Vector4 < T > &&
+ other )
+
+
+
+
+
+noexcept
+
+
+
+
+
Definition at line 741 of file Vector4.cpp .
+
+
743 x = std::move(other.
x );
+
744 y = std::move(other.
y );
+
745 z = std::move(other.
z );
+
746 w = std::move(other.
w );
+
+
+
+
+
+
+
+
◆ operator==()
+
+
+
+
+template<typename T >
+
+
+ bool Vector4::operator==
+ (
+ const Vector4 < T > &
+ other )
+ const
+
+
+
+
+
+
◆ operator[]() [1/2]
+
+
+
+
+template<typename T >
+
+
+ T & Vector4::operator[]
+ (
+ std::size_t
+ idx )
+
+
+
+
+
+
Definition at line 185 of file Vector4.cpp .
+
+
+
+
+
+
+
+
+
+
+
+
+
198 throw std::out_of_range(
"Array descriptor on Vector4<T> out of range!" );
+
+
+
+
+
+
+
◆ operator[]() [2/2]
+
+
+
+
+template<typename T >
+
+
+ const T & Vector4::operator[]
+ (
+ std::size_t
+ idx )
+ const
+
+
+
+
+
Definition at line 203 of file Vector4.cpp .
+
+
+
+
+
+
+
+
+
+
+
+
+
216 throw std::out_of_range(
"Array descriptor on Vector4<T> out of range!" );
+
+
+
+
+
+
+
◆ Similar()
+
+
+
+
+template<typename T >
+
+
+ bool Vector4::Similar
+ (
+ const Vector4 < T > &
+ other ,
+
+
+
+
+ double
+ epsilon = 0.00001
+
+
+
+ )
+ const
+
+
+
+
+
Will compare if two vectors are similar to a certain epsilon value.
+
+
Definition at line 162 of file Vector4.cpp .
+
+
+
+
166 (::Math::Similar(
y , other.
y , epsilon)) &&
+
+
+
+
+
+
+
+
+
◆ SqrMagnitude()
+
+
+
+
+template<typename T >
+
+
+ double Vector4::SqrMagnitude
+ (
+ )
+ const
+
+
+
+
+
Will compute the square magnitude.
+
+
Definition at line 31 of file Vector4.cpp .
+
+
+
34 return (
double )iSqrMag;
+
+
+
+
+
+
◆ ToDouble()
+
+
+
+
+template<typename T >
+
+
+ Vector4 < double > Vector4::ToDouble
+
+
+
+
+
Will convert this vector to a Vector4d.
+
+
Definition at line 179 of file Vector4.cpp .
+
+
+
+
+
◆ ToInt()
+
+
+
+
+template<typename T >
+
+
+ Vector4 < int > Vector4::ToInt
+
+
+
+
+
Will convert this vector to a Vector4i.
+
+
Definition at line 173 of file Vector4.cpp .
+
+
+
+
+
◆ VectorScale()
+
+
+
+
+template<typename T >
+
+
+ Vector4 < int > Vector4::VectorScale
+ (
+ const Vector4 < T > &
+ scalar )
+ const
+
+
+
+
+
Will scale self.n by scalar.n.
+
+
Definition at line 79 of file Vector4.cpp .
+
+
+
+
+
+
◆ operator<< [1/2]
+
+
+
+
+template<typename T >
+
+
+
+
+
+ std::ostream& operator<<
+ (
+ std::ostream &
+ os ,
+
+
+
+
+ const Vector4 < T > &
+ v
+
+
+
+ )
+
+
+
+
+
+friend
+
+
+
+
+
Definition at line 79 of file Vector4.h .
+
+
81 return os <<
"[x: " << v.x <<
" y: " << v.y <<
" z: " << v.z <<
" w: " << v.w <<
"]" ;
+
+
+
+
+
+
◆ operator<< [2/2]
+
+
+
+
+template<typename T >
+
+
+
+
+
+ std::wostream& operator<<
+ (
+ std::wostream &
+ os ,
+
+
+
+
+ const Vector4 < T > &
+ v
+
+
+
+ )
+
+
+
+
+
+friend
+
+
+
+
+
Definition at line 83 of file Vector4.h .
+
+
85 return os << L
"[x: " << v.x << L
" y: " << v.y << L
" z: " << v.z << L
" w: " << v.w << L
"]" ;
+
+
+
+
+
+
+
◆ backward
+
+
+
+
+template<typename T >
+
+
+
+
+
+ const Vector4 < double > Vector4::backward
+
+
+
+
+static
+
+
+
+
+
+
◆ down
+
+
+
+
+template<typename T >
+
+
+
+
+
+ const Vector4 < double > Vector4::down
+
+
+
+
+static
+
+
+
+
+
+
◆ forward
+
+
+
+
+template<typename T >
+
+
+
+
+
+ const Vector4 < double > Vector4::forward
+
+
+
+
+static
+
+
+
+
+
+
◆ future
+
+
+
+
+template<typename T >
+
+
+
+
+
+ const Vector4 < double > Vector4::future
+
+
+
+
+static
+
+
+
+
+
+
◆ left
+
+
+
+
+template<typename T >
+
+
+
+
+
+ const Vector4 < double > Vector4::left
+
+
+
+
+static
+
+
+
+
+
+
◆ one
+
+
+
+
+template<typename T >
+
+
+
+
+
+ const Vector4 < double > Vector4::one
+
+
+
+
+static
+
+
+
+
+
+
◆ past
+
+
+
+
+template<typename T >
+
+
+
+
+
+ const Vector4 < double > Vector4::past
+
+
+
+
+static
+
+
+
+
+
+
◆ right
+
+
+
+
+template<typename T >
+
+
+
+
+
+ const Vector4 < double > Vector4::right
+
+
+
+
+static
+
+
+
+
+
+
◆ up
+
+
+
+
+template<typename T >
+
+
+
+
+
+ const Vector4 < double > Vector4::up
+
+
+
+
+static
+
+
+
+
+
+
+
+
+
+
+template<typename T >
+
+
+
+
+
+
+
+
+
+template<typename T >
+
+
+
+
+
+
+
+
+
+template<typename T >
+
+
+
+
+
+
+
+
+
+template<typename T >
+
+
+
+
+
◆ zero
+
+
+
+
+template<typename T >
+
+
+
+
+
+ const Vector4 < double > Vector4::zero
+
+
+
+
+static
+
+
+
+
+
The documentation for this class was generated from the following files:
+
+Representation of a 3d vector.
+
+
+
+Vector4< double > ToDouble() const
Will convert this vector to a Vector4d.
+Representation of a 2d vector.
+bool operator==(const Vector4< T > &other) const
+double SqrMagnitude() const
Will compute the square magnitude.
+static constexpr bool Similar(const double a, const double b, const double epsilon=0.00001)
Compares two double values with a given accuracy.
+
+
+
+
+
+
diff --git a/Doxygen/build/classEule_1_1Vector4__coll__graph.map b/Doxygen/build/classEule_1_1Vector4__coll__graph.map
new file mode 100644
index 0000000..4c69d0c
--- /dev/null
+++ b/Doxygen/build/classEule_1_1Vector4__coll__graph.map
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/Doxygen/build/classEule_1_1Vector4__coll__graph.md5 b/Doxygen/build/classEule_1_1Vector4__coll__graph.md5
new file mode 100644
index 0000000..f5ae0ed
--- /dev/null
+++ b/Doxygen/build/classEule_1_1Vector4__coll__graph.md5
@@ -0,0 +1 @@
+09796771b7af89436ab56cfd53f68a29
\ No newline at end of file
diff --git a/Doxygen/build/classEule_1_1Vector4__coll__graph.png b/Doxygen/build/classEule_1_1Vector4__coll__graph.png
new file mode 100644
index 0000000..fe84cea
Binary files /dev/null and b/Doxygen/build/classEule_1_1Vector4__coll__graph.png differ
diff --git a/Doxygen/build/classes.html b/Doxygen/build/classes.html
new file mode 100644
index 0000000..3884a99
--- /dev/null
+++ b/Doxygen/build/classes.html
@@ -0,0 +1,117 @@
+
+
+
+
+
+
+
+Leonetienne/Eule: Class Index
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Leonetienne/Eule
+
+ Homemade math library, mainly targetted towards computer graphics
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Doxygen/build/closed.png b/Doxygen/build/closed.png
new file mode 100644
index 0000000..98cc2c9
Binary files /dev/null and b/Doxygen/build/closed.png differ
diff --git a/Doxygen/build/dir_1fefb9009d41306f82e23dc917083c9e.html b/Doxygen/build/dir_1fefb9009d41306f82e23dc917083c9e.html
new file mode 100644
index 0000000..2d95d71
--- /dev/null
+++ b/Doxygen/build/dir_1fefb9009d41306f82e23dc917083c9e.html
@@ -0,0 +1,88 @@
+
+
+
+
+
+
+
+Leonetienne/Eule: Eule/x64/Release Directory Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Leonetienne/Eule
+
+ Homemade math library, mainly targetted towards computer graphics
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Doxygen/build/dir_29a3c7679fa29c698d8a016dea7d0b26.html b/Doxygen/build/dir_29a3c7679fa29c698d8a016dea7d0b26.html
new file mode 100644
index 0000000..51dd381
--- /dev/null
+++ b/Doxygen/build/dir_29a3c7679fa29c698d8a016dea7d0b26.html
@@ -0,0 +1,135 @@
+
+
+
+
+
+
+
+Leonetienne/Eule: Eule Directory Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Leonetienne/Eule
+
+ Homemade math library, mainly targetted towards computer graphics
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Doxygen/build/dir_b9243fac9f130637c8e868960898670e.html b/Doxygen/build/dir_b9243fac9f130637c8e868960898670e.html
new file mode 100644
index 0000000..2ea8d6e
--- /dev/null
+++ b/Doxygen/build/dir_b9243fac9f130637c8e868960898670e.html
@@ -0,0 +1,96 @@
+
+
+
+
+
+
+
+Leonetienne/Eule: Eule/x64 Directory Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Leonetienne/Eule
+
+ Homemade math library, mainly targetted towards computer graphics
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Doxygen/build/dir_c806cfdecfdfd6ea1cddf5ffe1bf0281.html b/Doxygen/build/dir_c806cfdecfdfd6ea1cddf5ffe1bf0281.html
new file mode 100644
index 0000000..a947677
--- /dev/null
+++ b/Doxygen/build/dir_c806cfdecfdfd6ea1cddf5ffe1bf0281.html
@@ -0,0 +1,88 @@
+
+
+
+
+
+
+
+Leonetienne/Eule: Eule/Debug Directory Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Leonetienne/Eule
+
+ Homemade math library, mainly targetted towards computer graphics
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Doxygen/build/dir_e847076a3068559a2237d545d5d06d37.html b/Doxygen/build/dir_e847076a3068559a2237d545d5d06d37.html
new file mode 100644
index 0000000..b658d6e
--- /dev/null
+++ b/Doxygen/build/dir_e847076a3068559a2237d545d5d06d37.html
@@ -0,0 +1,88 @@
+
+
+
+
+
+
+
+Leonetienne/Eule: Eule/x64/Debug Directory Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Leonetienne/Eule
+
+ Homemade math library, mainly targetted towards computer graphics
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Doxygen/build/doc.png b/Doxygen/build/doc.png
new file mode 100644
index 0000000..17edabf
Binary files /dev/null and b/Doxygen/build/doc.png differ
diff --git a/Doxygen/build/doxygen.css b/Doxygen/build/doxygen.css
new file mode 100644
index 0000000..73ecbb2
--- /dev/null
+++ b/Doxygen/build/doxygen.css
@@ -0,0 +1,1771 @@
+/* The standard CSS for doxygen 1.8.17 */
+
+body, table, div, p, dl {
+ font: 400 14px/22px Roboto,sans-serif;
+}
+
+p.reference, p.definition {
+ font: 400 14px/22px Roboto,sans-serif;
+}
+
+/* @group Heading Levels */
+
+h1.groupheader {
+ font-size: 150%;
+}
+
+.title {
+ font: 400 14px/28px Roboto,sans-serif;
+ font-size: 150%;
+ font-weight: bold;
+ margin: 10px 2px;
+}
+
+h2.groupheader {
+ border-bottom: 1px solid #879ECB;
+ color: #354C7B;
+ font-size: 150%;
+ font-weight: normal;
+ margin-top: 1.75em;
+ padding-top: 8px;
+ padding-bottom: 4px;
+ width: 100%;
+}
+
+h3.groupheader {
+ font-size: 100%;
+}
+
+h1, h2, h3, h4, h5, h6 {
+ -webkit-transition: text-shadow 0.5s linear;
+ -moz-transition: text-shadow 0.5s linear;
+ -ms-transition: text-shadow 0.5s linear;
+ -o-transition: text-shadow 0.5s linear;
+ transition: text-shadow 0.5s linear;
+ margin-right: 15px;
+}
+
+h1.glow, h2.glow, h3.glow, h4.glow, h5.glow, h6.glow {
+ text-shadow: 0 0 15px cyan;
+}
+
+dt {
+ font-weight: bold;
+}
+
+ul.multicol {
+ -moz-column-gap: 1em;
+ -webkit-column-gap: 1em;
+ column-gap: 1em;
+ -moz-column-count: 3;
+ -webkit-column-count: 3;
+ column-count: 3;
+}
+
+p.startli, p.startdd {
+ margin-top: 2px;
+}
+
+th p.starttd, p.intertd, p.endtd {
+ font-size: 100%;
+ font-weight: 700;
+}
+
+p.starttd {
+ margin-top: 0px;
+}
+
+p.endli {
+ margin-bottom: 0px;
+}
+
+p.enddd {
+ margin-bottom: 4px;
+}
+
+p.endtd {
+ margin-bottom: 2px;
+}
+
+p.interli {
+}
+
+p.interdd {
+}
+
+p.intertd {
+}
+
+/* @end */
+
+caption {
+ font-weight: bold;
+}
+
+span.legend {
+ font-size: 70%;
+ text-align: center;
+}
+
+h3.version {
+ font-size: 90%;
+ text-align: center;
+}
+
+div.qindex, div.navtab{
+ background-color: #EBEFF6;
+ border: 1px solid #A3B4D7;
+ text-align: center;
+}
+
+div.qindex, div.navpath {
+ width: 100%;
+ line-height: 140%;
+}
+
+div.navtab {
+ margin-right: 15px;
+}
+
+/* @group Link Styling */
+
+a {
+ color: #3D578C;
+ font-weight: normal;
+ text-decoration: none;
+}
+
+.contents a:visited {
+ color: #4665A2;
+}
+
+a:hover {
+ text-decoration: underline;
+}
+
+a.qindex {
+ font-weight: bold;
+}
+
+a.qindexHL {
+ font-weight: bold;
+ background-color: #9CAFD4;
+ color: #FFFFFF;
+ border: 1px double #869DCA;
+}
+
+.contents a.qindexHL:visited {
+ color: #FFFFFF;
+}
+
+a.el {
+ font-weight: bold;
+}
+
+a.elRef {
+}
+
+a.code, a.code:visited, a.line, a.line:visited {
+ color: #4665A2;
+}
+
+a.codeRef, a.codeRef:visited, a.lineRef, a.lineRef:visited {
+ color: #4665A2;
+}
+
+/* @end */
+
+dl.el {
+ margin-left: -1cm;
+}
+
+ul {
+ overflow: hidden; /*Fixed: list item bullets overlap floating elements*/
+}
+
+#side-nav ul {
+ overflow: visible; /* reset ul rule for scroll bar in GENERATE_TREEVIEW window */
+}
+
+#main-nav ul {
+ overflow: visible; /* reset ul rule for the navigation bar drop down lists */
+}
+
+.fragment {
+ text-align: left;
+ direction: ltr;
+ overflow-x: auto; /*Fixed: fragment lines overlap floating elements*/
+ overflow-y: hidden;
+}
+
+pre.fragment {
+ border: 1px solid #C4CFE5;
+ background-color: #FBFCFD;
+ padding: 4px 6px;
+ margin: 4px 8px 4px 2px;
+ overflow: auto;
+ word-wrap: break-word;
+ font-size: 9pt;
+ line-height: 125%;
+ font-family: monospace, fixed;
+ font-size: 105%;
+}
+
+div.fragment {
+ padding: 0 0 1px 0; /*Fixed: last line underline overlap border*/
+ margin: 4px 8px 4px 2px;
+ background-color: #FBFCFD;
+ border: 1px solid #C4CFE5;
+}
+
+div.line {
+ font-family: monospace, fixed;
+ font-size: 13px;
+ min-height: 13px;
+ line-height: 1.0;
+ text-wrap: unrestricted;
+ white-space: -moz-pre-wrap; /* Moz */
+ white-space: -pre-wrap; /* Opera 4-6 */
+ white-space: -o-pre-wrap; /* Opera 7 */
+ white-space: pre-wrap; /* CSS3 */
+ word-wrap: break-word; /* IE 5.5+ */
+ text-indent: -53px;
+ padding-left: 53px;
+ padding-bottom: 0px;
+ margin: 0px;
+ -webkit-transition-property: background-color, box-shadow;
+ -webkit-transition-duration: 0.5s;
+ -moz-transition-property: background-color, box-shadow;
+ -moz-transition-duration: 0.5s;
+ -ms-transition-property: background-color, box-shadow;
+ -ms-transition-duration: 0.5s;
+ -o-transition-property: background-color, box-shadow;
+ -o-transition-duration: 0.5s;
+ transition-property: background-color, box-shadow;
+ transition-duration: 0.5s;
+}
+
+div.line:after {
+ content:"\000A";
+ white-space: pre;
+}
+
+div.line.glow {
+ background-color: cyan;
+ box-shadow: 0 0 10px cyan;
+}
+
+
+span.lineno {
+ padding-right: 4px;
+ text-align: right;
+ border-right: 2px solid #0F0;
+ background-color: #E8E8E8;
+ white-space: pre;
+}
+span.lineno a {
+ background-color: #D8D8D8;
+}
+
+span.lineno a:hover {
+ background-color: #C8C8C8;
+}
+
+.lineno {
+ -webkit-touch-callout: none;
+ -webkit-user-select: none;
+ -khtml-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+}
+
+div.ah, span.ah {
+ background-color: black;
+ font-weight: bold;
+ color: #FFFFFF;
+ margin-bottom: 3px;
+ margin-top: 3px;
+ padding: 0.2em;
+ border: solid thin #333;
+ border-radius: 0.5em;
+ -webkit-border-radius: .5em;
+ -moz-border-radius: .5em;
+ box-shadow: 2px 2px 3px #999;
+ -webkit-box-shadow: 2px 2px 3px #999;
+ -moz-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 2px;
+ background-image: -webkit-gradient(linear, left top, left bottom, from(#eee), to(#000),color-stop(0.3, #444));
+ background-image: -moz-linear-gradient(center top, #eee 0%, #444 40%, #000 110%);
+}
+
+div.classindex ul {
+ list-style: none;
+ padding-left: 0;
+}
+
+div.classindex span.ai {
+ display: inline-block;
+}
+
+div.groupHeader {
+ margin-left: 16px;
+ margin-top: 12px;
+ font-weight: bold;
+}
+
+div.groupText {
+ margin-left: 16px;
+ font-style: italic;
+}
+
+body {
+ background-color: white;
+ color: black;
+ margin: 0;
+}
+
+div.contents {
+ margin-top: 10px;
+ margin-left: 12px;
+ margin-right: 8px;
+}
+
+td.indexkey {
+ background-color: #EBEFF6;
+ font-weight: bold;
+ border: 1px solid #C4CFE5;
+ margin: 2px 0px 2px 0;
+ padding: 2px 10px;
+ white-space: nowrap;
+ vertical-align: top;
+}
+
+td.indexvalue {
+ background-color: #EBEFF6;
+ border: 1px solid #C4CFE5;
+ padding: 2px 10px;
+ margin: 2px 0px;
+}
+
+tr.memlist {
+ background-color: #EEF1F7;
+}
+
+p.formulaDsp {
+ text-align: center;
+}
+
+img.formulaDsp {
+
+}
+
+img.formulaInl, img.inline {
+ vertical-align: middle;
+}
+
+div.center {
+ text-align: center;
+ margin-top: 0px;
+ margin-bottom: 0px;
+ padding: 0px;
+}
+
+div.center img {
+ border: 0px;
+}
+
+address.footer {
+ text-align: right;
+ padding-right: 12px;
+}
+
+img.footer {
+ border: 0px;
+ vertical-align: middle;
+}
+
+/* @group Code Colorization */
+
+span.keyword {
+ color: #008000
+}
+
+span.keywordtype {
+ color: #604020
+}
+
+span.keywordflow {
+ color: #e08000
+}
+
+span.comment {
+ color: #800000
+}
+
+span.preprocessor {
+ color: #806020
+}
+
+span.stringliteral {
+ color: #002080
+}
+
+span.charliteral {
+ color: #008080
+}
+
+span.vhdldigit {
+ color: #ff00ff
+}
+
+span.vhdlchar {
+ color: #000000
+}
+
+span.vhdlkeyword {
+ color: #700070
+}
+
+span.vhdllogic {
+ color: #ff0000
+}
+
+blockquote {
+ background-color: #F7F8FB;
+ border-left: 2px solid #9CAFD4;
+ margin: 0 24px 0 4px;
+ padding: 0 12px 0 16px;
+}
+
+blockquote.DocNodeRTL {
+ border-left: 0;
+ border-right: 2px solid #9CAFD4;
+ margin: 0 4px 0 24px;
+ padding: 0 16px 0 12px;
+}
+
+/* @end */
+
+/*
+.search {
+ color: #003399;
+ font-weight: bold;
+}
+
+form.search {
+ margin-bottom: 0px;
+ margin-top: 0px;
+}
+
+input.search {
+ font-size: 75%;
+ color: #000080;
+ font-weight: normal;
+ background-color: #e8eef2;
+}
+*/
+
+td.tiny {
+ font-size: 75%;
+}
+
+.dirtab {
+ padding: 4px;
+ border-collapse: collapse;
+ border: 1px solid #A3B4D7;
+}
+
+th.dirtab {
+ background: #EBEFF6;
+ font-weight: bold;
+}
+
+hr {
+ height: 0px;
+ border: none;
+ border-top: 1px solid #4A6AAA;
+}
+
+hr.footer {
+ height: 1px;
+}
+
+/* @group Member Descriptions */
+
+table.memberdecls {
+ border-spacing: 0px;
+ padding: 0px;
+}
+
+.memberdecls td, .fieldtable tr {
+ -webkit-transition-property: background-color, box-shadow;
+ -webkit-transition-duration: 0.5s;
+ -moz-transition-property: background-color, box-shadow;
+ -moz-transition-duration: 0.5s;
+ -ms-transition-property: background-color, box-shadow;
+ -ms-transition-duration: 0.5s;
+ -o-transition-property: background-color, box-shadow;
+ -o-transition-duration: 0.5s;
+ transition-property: background-color, box-shadow;
+ transition-duration: 0.5s;
+}
+
+.memberdecls td.glow, .fieldtable tr.glow {
+ background-color: cyan;
+ box-shadow: 0 0 15px cyan;
+}
+
+.mdescLeft, .mdescRight,
+.memItemLeft, .memItemRight,
+.memTemplItemLeft, .memTemplItemRight, .memTemplParams {
+ background-color: #F9FAFC;
+ border: none;
+ margin: 4px;
+ padding: 1px 0 0 8px;
+}
+
+.mdescLeft, .mdescRight {
+ padding: 0px 8px 4px 8px;
+ color: #555;
+}
+
+.memSeparator {
+ border-bottom: 1px solid #DEE4F0;
+ line-height: 1px;
+ margin: 0px;
+ padding: 0px;
+}
+
+.memItemLeft, .memTemplItemLeft {
+ white-space: nowrap;
+}
+
+.memItemRight, .memTemplItemRight {
+ width: 100%;
+}
+
+.memTemplParams {
+ color: #4665A2;
+ white-space: nowrap;
+ font-size: 80%;
+}
+
+/* @end */
+
+/* @group Member Details */
+
+/* Styles for detailed member documentation */
+
+.memtitle {
+ padding: 8px;
+ border-top: 1px solid #A8B8D9;
+ border-left: 1px solid #A8B8D9;
+ border-right: 1px solid #A8B8D9;
+ border-top-right-radius: 4px;
+ border-top-left-radius: 4px;
+ margin-bottom: -1px;
+ background-image: url('nav_f.png');
+ background-repeat: repeat-x;
+ background-color: #E2E8F2;
+ line-height: 1.25;
+ font-weight: 300;
+ float:left;
+}
+
+.permalink
+{
+ font-size: 65%;
+ display: inline-block;
+ vertical-align: middle;
+}
+
+.memtemplate {
+ font-size: 80%;
+ color: #4665A2;
+ font-weight: normal;
+ margin-left: 9px;
+}
+
+.memnav {
+ background-color: #EBEFF6;
+ border: 1px solid #A3B4D7;
+ text-align: center;
+ margin: 2px;
+ margin-right: 15px;
+ padding: 2px;
+}
+
+.mempage {
+ width: 100%;
+}
+
+.memitem {
+ padding: 0;
+ margin-bottom: 10px;
+ margin-right: 5px;
+ -webkit-transition: box-shadow 0.5s linear;
+ -moz-transition: box-shadow 0.5s linear;
+ -ms-transition: box-shadow 0.5s linear;
+ -o-transition: box-shadow 0.5s linear;
+ transition: box-shadow 0.5s linear;
+ display: table !important;
+ width: 100%;
+}
+
+.memitem.glow {
+ box-shadow: 0 0 15px cyan;
+}
+
+.memname {
+ font-weight: 400;
+ margin-left: 6px;
+}
+
+.memname td {
+ vertical-align: bottom;
+}
+
+.memproto, dl.reflist dt {
+ border-top: 1px solid #A8B8D9;
+ border-left: 1px solid #A8B8D9;
+ border-right: 1px solid #A8B8D9;
+ padding: 6px 0px 6px 0px;
+ color: #253555;
+ font-weight: bold;
+ text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9);
+ background-color: #DFE5F1;
+ /* opera specific markup */
+ box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15);
+ border-top-right-radius: 4px;
+ /* firefox specific markup */
+ -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px;
+ -moz-border-radius-topright: 4px;
+ /* webkit specific markup */
+ -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15);
+ -webkit-border-top-right-radius: 4px;
+
+}
+
+.overload {
+ font-family: "courier new",courier,monospace;
+ font-size: 65%;
+}
+
+.memdoc, dl.reflist dd {
+ border-bottom: 1px solid #A8B8D9;
+ border-left: 1px solid #A8B8D9;
+ border-right: 1px solid #A8B8D9;
+ padding: 6px 10px 2px 10px;
+ background-color: #FBFCFD;
+ border-top-width: 0;
+ background-image:url('nav_g.png');
+ background-repeat:repeat-x;
+ background-color: #FFFFFF;
+ /* opera specific markup */
+ border-bottom-left-radius: 4px;
+ border-bottom-right-radius: 4px;
+ box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15);
+ /* firefox specific markup */
+ -moz-border-radius-bottomleft: 4px;
+ -moz-border-radius-bottomright: 4px;
+ -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px;
+ /* webkit specific markup */
+ -webkit-border-bottom-left-radius: 4px;
+ -webkit-border-bottom-right-radius: 4px;
+ -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15);
+}
+
+dl.reflist dt {
+ padding: 5px;
+}
+
+dl.reflist dd {
+ margin: 0px 0px 10px 0px;
+ padding: 5px;
+}
+
+.paramkey {
+ text-align: right;
+}
+
+.paramtype {
+ white-space: nowrap;
+}
+
+.paramname {
+ color: #602020;
+ white-space: nowrap;
+}
+.paramname em {
+ font-style: normal;
+}
+.paramname code {
+ line-height: 14px;
+}
+
+.params, .retval, .exception, .tparams {
+ margin-left: 0px;
+ padding-left: 0px;
+}
+
+.params .paramname, .retval .paramname, .tparams .paramname, .exception .paramname {
+ font-weight: bold;
+ vertical-align: top;
+}
+
+.params .paramtype, .tparams .paramtype {
+ font-style: italic;
+ vertical-align: top;
+}
+
+.params .paramdir, .tparams .paramdir {
+ font-family: "courier new",courier,monospace;
+ vertical-align: top;
+}
+
+table.mlabels {
+ border-spacing: 0px;
+}
+
+td.mlabels-left {
+ width: 100%;
+ padding: 0px;
+}
+
+td.mlabels-right {
+ vertical-align: bottom;
+ padding: 0px;
+ white-space: nowrap;
+}
+
+span.mlabels {
+ margin-left: 8px;
+}
+
+span.mlabel {
+ background-color: #728DC1;
+ border-top:1px solid #5373B4;
+ border-left:1px solid #5373B4;
+ border-right:1px solid #C4CFE5;
+ border-bottom:1px solid #C4CFE5;
+ text-shadow: none;
+ color: white;
+ margin-right: 4px;
+ padding: 2px 3px;
+ border-radius: 3px;
+ font-size: 7pt;
+ white-space: nowrap;
+ vertical-align: middle;
+}
+
+
+
+/* @end */
+
+/* these are for tree view inside a (index) page */
+
+div.directory {
+ margin: 10px 0px;
+ border-top: 1px solid #9CAFD4;
+ border-bottom: 1px solid #9CAFD4;
+ width: 100%;
+}
+
+.directory table {
+ border-collapse:collapse;
+}
+
+.directory td {
+ margin: 0px;
+ padding: 0px;
+ vertical-align: top;
+}
+
+.directory td.entry {
+ white-space: nowrap;
+ padding-right: 6px;
+ padding-top: 3px;
+}
+
+.directory td.entry a {
+ outline:none;
+}
+
+.directory td.entry a img {
+ border: none;
+}
+
+.directory td.desc {
+ width: 100%;
+ padding-left: 6px;
+ padding-right: 6px;
+ padding-top: 3px;
+ border-left: 1px solid rgba(0,0,0,0.05);
+}
+
+.directory tr.even {
+ padding-left: 6px;
+ background-color: #F7F8FB;
+}
+
+.directory img {
+ vertical-align: -30%;
+}
+
+.directory .levels {
+ white-space: nowrap;
+ width: 100%;
+ text-align: right;
+ font-size: 9pt;
+}
+
+.directory .levels span {
+ cursor: pointer;
+ padding-left: 2px;
+ padding-right: 2px;
+ color: #3D578C;
+}
+
+.arrow {
+ color: #9CAFD4;
+ -webkit-user-select: none;
+ -khtml-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+ cursor: pointer;
+ font-size: 80%;
+ display: inline-block;
+ width: 16px;
+ height: 22px;
+}
+
+.icon {
+ font-family: Arial, Helvetica;
+ font-weight: bold;
+ font-size: 12px;
+ height: 14px;
+ width: 16px;
+ display: inline-block;
+ background-color: #728DC1;
+ color: white;
+ text-align: center;
+ border-radius: 4px;
+ margin-left: 2px;
+ margin-right: 2px;
+}
+
+.icona {
+ width: 24px;
+ height: 22px;
+ display: inline-block;
+}
+
+.iconfopen {
+ width: 24px;
+ height: 18px;
+ margin-bottom: 4px;
+ background-image:url('folderopen.png');
+ background-position: 0px -4px;
+ background-repeat: repeat-y;
+ vertical-align:top;
+ display: inline-block;
+}
+
+.iconfclosed {
+ width: 24px;
+ height: 18px;
+ margin-bottom: 4px;
+ background-image:url('folderclosed.png');
+ background-position: 0px -4px;
+ background-repeat: repeat-y;
+ vertical-align:top;
+ display: inline-block;
+}
+
+.icondoc {
+ width: 24px;
+ height: 18px;
+ margin-bottom: 4px;
+ background-image:url('doc.png');
+ background-position: 0px -4px;
+ background-repeat: repeat-y;
+ vertical-align:top;
+ display: inline-block;
+}
+
+table.directory {
+ font: 400 14px Roboto,sans-serif;
+}
+
+/* @end */
+
+div.dynheader {
+ margin-top: 8px;
+ -webkit-touch-callout: none;
+ -webkit-user-select: none;
+ -khtml-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+}
+
+address {
+ font-style: normal;
+ color: #2A3D61;
+}
+
+table.doxtable caption {
+ caption-side: top;
+}
+
+table.doxtable {
+ border-collapse:collapse;
+ margin-top: 4px;
+ margin-bottom: 4px;
+}
+
+table.doxtable td, table.doxtable th {
+ border: 1px solid #2D4068;
+ padding: 3px 7px 2px;
+}
+
+table.doxtable th {
+ background-color: #374F7F;
+ color: #FFFFFF;
+ font-size: 110%;
+ padding-bottom: 4px;
+ padding-top: 5px;
+}
+
+table.fieldtable {
+ /*width: 100%;*/
+ margin-bottom: 10px;
+ border: 1px solid #A8B8D9;
+ border-spacing: 0px;
+ -moz-border-radius: 4px;
+ -webkit-border-radius: 4px;
+ border-radius: 4px;
+ -moz-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 2px;
+ -webkit-box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15);
+ box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15);
+}
+
+.fieldtable td, .fieldtable th {
+ padding: 3px 7px 2px;
+}
+
+.fieldtable td.fieldtype, .fieldtable td.fieldname {
+ white-space: nowrap;
+ border-right: 1px solid #A8B8D9;
+ border-bottom: 1px solid #A8B8D9;
+ vertical-align: top;
+}
+
+.fieldtable td.fieldname {
+ padding-top: 3px;
+}
+
+.fieldtable td.fielddoc {
+ border-bottom: 1px solid #A8B8D9;
+ /*width: 100%;*/
+}
+
+.fieldtable td.fielddoc p:first-child {
+ margin-top: 0px;
+}
+
+.fieldtable td.fielddoc p:last-child {
+ margin-bottom: 2px;
+}
+
+.fieldtable tr:last-child td {
+ border-bottom: none;
+}
+
+.fieldtable th {
+ background-image:url('nav_f.png');
+ background-repeat:repeat-x;
+ background-color: #E2E8F2;
+ font-size: 90%;
+ color: #253555;
+ padding-bottom: 4px;
+ padding-top: 5px;
+ text-align:left;
+ font-weight: 400;
+ -moz-border-radius-topleft: 4px;
+ -moz-border-radius-topright: 4px;
+ -webkit-border-top-left-radius: 4px;
+ -webkit-border-top-right-radius: 4px;
+ border-top-left-radius: 4px;
+ border-top-right-radius: 4px;
+ border-bottom: 1px solid #A8B8D9;
+}
+
+
+.tabsearch {
+ top: 0px;
+ left: 10px;
+ height: 36px;
+ background-image: url('tab_b.png');
+ z-index: 101;
+ overflow: hidden;
+ font-size: 13px;
+}
+
+.navpath ul
+{
+ font-size: 11px;
+ background-image:url('tab_b.png');
+ background-repeat:repeat-x;
+ background-position: 0 -5px;
+ height:30px;
+ line-height:30px;
+ color:#8AA0CC;
+ border:solid 1px #C2CDE4;
+ overflow:hidden;
+ margin:0px;
+ padding:0px;
+}
+
+.navpath li
+{
+ list-style-type:none;
+ float:left;
+ padding-left:10px;
+ padding-right:15px;
+ background-image:url('bc_s.png');
+ background-repeat:no-repeat;
+ background-position:right;
+ color:#364D7C;
+}
+
+.navpath li.navelem a
+{
+ height:32px;
+ display:block;
+ text-decoration: none;
+ outline: none;
+ color: #283A5D;
+ font-family: 'Lucida Grande',Geneva,Helvetica,Arial,sans-serif;
+ text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9);
+ text-decoration: none;
+}
+
+.navpath li.navelem a:hover
+{
+ color:#6884BD;
+}
+
+.navpath li.footer
+{
+ list-style-type:none;
+ float:right;
+ padding-left:10px;
+ padding-right:15px;
+ background-image:none;
+ background-repeat:no-repeat;
+ background-position:right;
+ color:#364D7C;
+ font-size: 8pt;
+}
+
+
+div.summary
+{
+ float: right;
+ font-size: 8pt;
+ padding-right: 5px;
+ width: 50%;
+ text-align: right;
+}
+
+div.summary a
+{
+ white-space: nowrap;
+}
+
+table.classindex
+{
+ margin: 10px;
+ white-space: nowrap;
+ margin-left: 3%;
+ margin-right: 3%;
+ width: 94%;
+ border: 0;
+ border-spacing: 0;
+ padding: 0;
+}
+
+div.ingroups
+{
+ font-size: 8pt;
+ width: 50%;
+ text-align: left;
+}
+
+div.ingroups a
+{
+ white-space: nowrap;
+}
+
+div.header
+{
+ background-image:url('nav_h.png');
+ background-repeat:repeat-x;
+ background-color: #F9FAFC;
+ margin: 0px;
+ border-bottom: 1px solid #C4CFE5;
+}
+
+div.headertitle
+{
+ padding: 5px 5px 5px 10px;
+}
+
+.PageDocRTL-title div.headertitle {
+ text-align: right;
+ direction: rtl;
+}
+
+dl {
+ padding: 0 0 0 0;
+}
+
+/* dl.note, dl.warning, dl.attention, dl.pre, dl.post, dl.invariant, dl.deprecated, dl.todo, dl.test, dl.bug, dl.examples */
+dl.section {
+ margin-left: 0px;
+ padding-left: 0px;
+}
+
+dl.section.DocNodeRTL {
+ margin-right: 0px;
+ padding-right: 0px;
+}
+
+dl.note {
+ margin-left: -7px;
+ padding-left: 3px;
+ border-left: 4px solid;
+ border-color: #D0C000;
+}
+
+dl.note.DocNodeRTL {
+ margin-left: 0;
+ padding-left: 0;
+ border-left: 0;
+ margin-right: -7px;
+ padding-right: 3px;
+ border-right: 4px solid;
+ border-color: #D0C000;
+}
+
+dl.warning, dl.attention {
+ margin-left: -7px;
+ padding-left: 3px;
+ border-left: 4px solid;
+ border-color: #FF0000;
+}
+
+dl.warning.DocNodeRTL, dl.attention.DocNodeRTL {
+ margin-left: 0;
+ padding-left: 0;
+ border-left: 0;
+ margin-right: -7px;
+ padding-right: 3px;
+ border-right: 4px solid;
+ border-color: #FF0000;
+}
+
+dl.pre, dl.post, dl.invariant {
+ margin-left: -7px;
+ padding-left: 3px;
+ border-left: 4px solid;
+ border-color: #00D000;
+}
+
+dl.pre.DocNodeRTL, dl.post.DocNodeRTL, dl.invariant.DocNodeRTL {
+ margin-left: 0;
+ padding-left: 0;
+ border-left: 0;
+ margin-right: -7px;
+ padding-right: 3px;
+ border-right: 4px solid;
+ border-color: #00D000;
+}
+
+dl.deprecated {
+ margin-left: -7px;
+ padding-left: 3px;
+ border-left: 4px solid;
+ border-color: #505050;
+}
+
+dl.deprecated.DocNodeRTL {
+ margin-left: 0;
+ padding-left: 0;
+ border-left: 0;
+ margin-right: -7px;
+ padding-right: 3px;
+ border-right: 4px solid;
+ border-color: #505050;
+}
+
+dl.todo {
+ margin-left: -7px;
+ padding-left: 3px;
+ border-left: 4px solid;
+ border-color: #00C0E0;
+}
+
+dl.todo.DocNodeRTL {
+ margin-left: 0;
+ padding-left: 0;
+ border-left: 0;
+ margin-right: -7px;
+ padding-right: 3px;
+ border-right: 4px solid;
+ border-color: #00C0E0;
+}
+
+dl.test {
+ margin-left: -7px;
+ padding-left: 3px;
+ border-left: 4px solid;
+ border-color: #3030E0;
+}
+
+dl.test.DocNodeRTL {
+ margin-left: 0;
+ padding-left: 0;
+ border-left: 0;
+ margin-right: -7px;
+ padding-right: 3px;
+ border-right: 4px solid;
+ border-color: #3030E0;
+}
+
+dl.bug {
+ margin-left: -7px;
+ padding-left: 3px;
+ border-left: 4px solid;
+ border-color: #C08050;
+}
+
+dl.bug.DocNodeRTL {
+ margin-left: 0;
+ padding-left: 0;
+ border-left: 0;
+ margin-right: -7px;
+ padding-right: 3px;
+ border-right: 4px solid;
+ border-color: #C08050;
+}
+
+dl.section dd {
+ margin-bottom: 6px;
+}
+
+
+#projectlogo
+{
+ text-align: center;
+ vertical-align: bottom;
+ border-collapse: separate;
+}
+
+#projectlogo img
+{
+ border: 0px none;
+}
+
+#projectalign
+{
+ vertical-align: middle;
+}
+
+#projectname
+{
+ font: 300% Tahoma, Arial,sans-serif;
+ margin: 0px;
+ padding: 2px 0px;
+}
+
+#projectbrief
+{
+ font: 120% Tahoma, Arial,sans-serif;
+ margin: 0px;
+ padding: 0px;
+}
+
+#projectnumber
+{
+ font: 50% Tahoma, Arial,sans-serif;
+ margin: 0px;
+ padding: 0px;
+}
+
+#titlearea
+{
+ padding: 0px;
+ margin: 0px;
+ width: 100%;
+ border-bottom: 1px solid #5373B4;
+}
+
+.image
+{
+ text-align: center;
+}
+
+.dotgraph
+{
+ text-align: center;
+}
+
+.mscgraph
+{
+ text-align: center;
+}
+
+.plantumlgraph
+{
+ text-align: center;
+}
+
+.diagraph
+{
+ text-align: center;
+}
+
+.caption
+{
+ font-weight: bold;
+}
+
+div.zoom
+{
+ border: 1px solid #90A5CE;
+}
+
+dl.citelist {
+ margin-bottom:50px;
+}
+
+dl.citelist dt {
+ color:#334975;
+ float:left;
+ font-weight:bold;
+ margin-right:10px;
+ padding:5px;
+}
+
+dl.citelist dd {
+ margin:2px 0;
+ padding:5px 0;
+}
+
+div.toc {
+ padding: 14px 25px;
+ background-color: #F4F6FA;
+ border: 1px solid #D8DFEE;
+ border-radius: 7px 7px 7px 7px;
+ float: right;
+ height: auto;
+ margin: 0 8px 10px 10px;
+ width: 200px;
+}
+
+.PageDocRTL-title div.toc {
+ float: left !important;
+ text-align: right;
+}
+
+div.toc li {
+ background: url("bdwn.png") no-repeat scroll 0 5px transparent;
+ font: 10px/1.2 Verdana,DejaVu Sans,Geneva,sans-serif;
+ margin-top: 5px;
+ padding-left: 10px;
+ padding-top: 2px;
+}
+
+.PageDocRTL-title div.toc li {
+ background-position-x: right !important;
+ padding-left: 0 !important;
+ padding-right: 10px;
+}
+
+div.toc h3 {
+ font: bold 12px/1.2 Arial,FreeSans,sans-serif;
+ color: #4665A2;
+ border-bottom: 0 none;
+ margin: 0;
+}
+
+div.toc ul {
+ list-style: none outside none;
+ border: medium none;
+ padding: 0px;
+}
+
+div.toc li.level1 {
+ margin-left: 0px;
+}
+
+div.toc li.level2 {
+ margin-left: 15px;
+}
+
+div.toc li.level3 {
+ margin-left: 30px;
+}
+
+div.toc li.level4 {
+ margin-left: 45px;
+}
+
+.PageDocRTL-title div.toc li.level1 {
+ margin-left: 0 !important;
+ margin-right: 0;
+}
+
+.PageDocRTL-title div.toc li.level2 {
+ margin-left: 0 !important;
+ margin-right: 15px;
+}
+
+.PageDocRTL-title div.toc li.level3 {
+ margin-left: 0 !important;
+ margin-right: 30px;
+}
+
+.PageDocRTL-title div.toc li.level4 {
+ margin-left: 0 !important;
+ margin-right: 45px;
+}
+
+.inherit_header {
+ font-weight: bold;
+ color: gray;
+ cursor: pointer;
+ -webkit-touch-callout: none;
+ -webkit-user-select: none;
+ -khtml-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+}
+
+.inherit_header td {
+ padding: 6px 0px 2px 5px;
+}
+
+.inherit {
+ display: none;
+}
+
+tr.heading h2 {
+ margin-top: 12px;
+ margin-bottom: 4px;
+}
+
+/* tooltip related style info */
+
+.ttc {
+ position: absolute;
+ display: none;
+}
+
+#powerTip {
+ cursor: default;
+ white-space: nowrap;
+ background-color: white;
+ border: 1px solid gray;
+ border-radius: 4px 4px 4px 4px;
+ box-shadow: 1px 1px 7px gray;
+ display: none;
+ font-size: smaller;
+ max-width: 80%;
+ opacity: 0.9;
+ padding: 1ex 1em 1em;
+ position: absolute;
+ z-index: 2147483647;
+}
+
+#powerTip div.ttdoc {
+ color: grey;
+ font-style: italic;
+}
+
+#powerTip div.ttname a {
+ font-weight: bold;
+}
+
+#powerTip div.ttname {
+ font-weight: bold;
+}
+
+#powerTip div.ttdeci {
+ color: #006318;
+}
+
+#powerTip div {
+ margin: 0px;
+ padding: 0px;
+ font: 12px/16px Roboto,sans-serif;
+}
+
+#powerTip:before, #powerTip:after {
+ content: "";
+ position: absolute;
+ margin: 0px;
+}
+
+#powerTip.n:after, #powerTip.n:before,
+#powerTip.s:after, #powerTip.s:before,
+#powerTip.w:after, #powerTip.w:before,
+#powerTip.e:after, #powerTip.e:before,
+#powerTip.ne:after, #powerTip.ne:before,
+#powerTip.se:after, #powerTip.se:before,
+#powerTip.nw:after, #powerTip.nw:before,
+#powerTip.sw:after, #powerTip.sw:before {
+ border: solid transparent;
+ content: " ";
+ height: 0;
+ width: 0;
+ position: absolute;
+}
+
+#powerTip.n:after, #powerTip.s:after,
+#powerTip.w:after, #powerTip.e:after,
+#powerTip.nw:after, #powerTip.ne:after,
+#powerTip.sw:after, #powerTip.se:after {
+ border-color: rgba(255, 255, 255, 0);
+}
+
+#powerTip.n:before, #powerTip.s:before,
+#powerTip.w:before, #powerTip.e:before,
+#powerTip.nw:before, #powerTip.ne:before,
+#powerTip.sw:before, #powerTip.se:before {
+ border-color: rgba(128, 128, 128, 0);
+}
+
+#powerTip.n:after, #powerTip.n:before,
+#powerTip.ne:after, #powerTip.ne:before,
+#powerTip.nw:after, #powerTip.nw:before {
+ top: 100%;
+}
+
+#powerTip.n:after, #powerTip.ne:after, #powerTip.nw:after {
+ border-top-color: #FFFFFF;
+ border-width: 10px;
+ margin: 0px -10px;
+}
+#powerTip.n:before {
+ border-top-color: #808080;
+ border-width: 11px;
+ margin: 0px -11px;
+}
+#powerTip.n:after, #powerTip.n:before {
+ left: 50%;
+}
+
+#powerTip.nw:after, #powerTip.nw:before {
+ right: 14px;
+}
+
+#powerTip.ne:after, #powerTip.ne:before {
+ left: 14px;
+}
+
+#powerTip.s:after, #powerTip.s:before,
+#powerTip.se:after, #powerTip.se:before,
+#powerTip.sw:after, #powerTip.sw:before {
+ bottom: 100%;
+}
+
+#powerTip.s:after, #powerTip.se:after, #powerTip.sw:after {
+ border-bottom-color: #FFFFFF;
+ border-width: 10px;
+ margin: 0px -10px;
+}
+
+#powerTip.s:before, #powerTip.se:before, #powerTip.sw:before {
+ border-bottom-color: #808080;
+ border-width: 11px;
+ margin: 0px -11px;
+}
+
+#powerTip.s:after, #powerTip.s:before {
+ left: 50%;
+}
+
+#powerTip.sw:after, #powerTip.sw:before {
+ right: 14px;
+}
+
+#powerTip.se:after, #powerTip.se:before {
+ left: 14px;
+}
+
+#powerTip.e:after, #powerTip.e:before {
+ left: 100%;
+}
+#powerTip.e:after {
+ border-left-color: #FFFFFF;
+ border-width: 10px;
+ top: 50%;
+ margin-top: -10px;
+}
+#powerTip.e:before {
+ border-left-color: #808080;
+ border-width: 11px;
+ top: 50%;
+ margin-top: -11px;
+}
+
+#powerTip.w:after, #powerTip.w:before {
+ right: 100%;
+}
+#powerTip.w:after {
+ border-right-color: #FFFFFF;
+ border-width: 10px;
+ top: 50%;
+ margin-top: -10px;
+}
+#powerTip.w:before {
+ border-right-color: #808080;
+ border-width: 11px;
+ top: 50%;
+ margin-top: -11px;
+}
+
+@media print
+{
+ #top { display: none; }
+ #side-nav { display: none; }
+ #nav-path { display: none; }
+ body { overflow:visible; }
+ h1, h2, h3, h4, h5, h6 { page-break-after: avoid; }
+ .summary { display: none; }
+ .memitem { page-break-inside: avoid; }
+ #doc-content
+ {
+ margin-left:0 !important;
+ height:auto !important;
+ width:auto !important;
+ overflow:inherit;
+ display:inline;
+ }
+}
+
+/* @group Markdown */
+
+/*
+table.markdownTable {
+ border-collapse:collapse;
+ margin-top: 4px;
+ margin-bottom: 4px;
+}
+
+table.markdownTable td, table.markdownTable th {
+ border: 1px solid #2D4068;
+ padding: 3px 7px 2px;
+}
+
+table.markdownTableHead tr {
+}
+
+table.markdownTableBodyLeft td, table.markdownTable th {
+ border: 1px solid #2D4068;
+ padding: 3px 7px 2px;
+}
+
+th.markdownTableHeadLeft th.markdownTableHeadRight th.markdownTableHeadCenter th.markdownTableHeadNone {
+ background-color: #374F7F;
+ color: #FFFFFF;
+ font-size: 110%;
+ padding-bottom: 4px;
+ padding-top: 5px;
+}
+
+th.markdownTableHeadLeft {
+ text-align: left
+}
+
+th.markdownTableHeadRight {
+ text-align: right
+}
+
+th.markdownTableHeadCenter {
+ text-align: center
+}
+*/
+
+table.markdownTable {
+ border-collapse:collapse;
+ margin-top: 4px;
+ margin-bottom: 4px;
+}
+
+table.markdownTable td, table.markdownTable th {
+ border: 1px solid #2D4068;
+ padding: 3px 7px 2px;
+}
+
+table.markdownTable tr {
+}
+
+th.markdownTableHeadLeft, th.markdownTableHeadRight, th.markdownTableHeadCenter, th.markdownTableHeadNone {
+ background-color: #374F7F;
+ color: #FFFFFF;
+ font-size: 110%;
+ padding-bottom: 4px;
+ padding-top: 5px;
+}
+
+th.markdownTableHeadLeft, td.markdownTableBodyLeft {
+ text-align: left
+}
+
+th.markdownTableHeadRight, td.markdownTableBodyRight {
+ text-align: right
+}
+
+th.markdownTableHeadCenter, td.markdownTableBodyCenter {
+ text-align: center
+}
+
+.DocNodeRTL {
+ text-align: right;
+ direction: rtl;
+}
+
+.DocNodeLTR {
+ text-align: left;
+ direction: ltr;
+}
+
+table.DocNodeRTL {
+ width: auto;
+ margin-right: 0;
+ margin-left: auto;
+}
+
+table.DocNodeLTR {
+ width: auto;
+ margin-right: auto;
+ margin-left: 0;
+}
+
+tt, code, kbd, samp
+{
+ display: inline-block;
+ direction:ltr;
+}
+/* @end */
+
+u {
+ text-decoration: underline;
+}
+
diff --git a/Doxygen/build/doxygen.png b/Doxygen/build/doxygen.png
new file mode 100644
index 0000000..3ff17d8
Binary files /dev/null and b/Doxygen/build/doxygen.png differ
diff --git a/Doxygen/build/dynsections.js b/Doxygen/build/dynsections.js
new file mode 100644
index 0000000..c8e84aa
--- /dev/null
+++ b/Doxygen/build/dynsections.js
@@ -0,0 +1,127 @@
+/*
+ @licstart The following is the entire license notice for the
+ JavaScript code in this file.
+
+ Copyright (C) 1997-2017 by Dimitri van Heesch
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License along
+ with this program; if not, write to the Free Software Foundation, Inc.,
+ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+ @licend The above is the entire license notice
+ for the JavaScript code in this file
+ */
+function toggleVisibility(linkObj)
+{
+ var base = $(linkObj).attr('id');
+ var summary = $('#'+base+'-summary');
+ var content = $('#'+base+'-content');
+ var trigger = $('#'+base+'-trigger');
+ var src=$(trigger).attr('src');
+ if (content.is(':visible')===true) {
+ content.hide();
+ summary.show();
+ $(linkObj).addClass('closed').removeClass('opened');
+ $(trigger).attr('src',src.substring(0,src.length-8)+'closed.png');
+ } else {
+ content.show();
+ summary.hide();
+ $(linkObj).removeClass('closed').addClass('opened');
+ $(trigger).attr('src',src.substring(0,src.length-10)+'open.png');
+ }
+ return false;
+}
+
+function updateStripes()
+{
+ $('table.directory tr').
+ removeClass('even').filter(':visible:even').addClass('even');
+}
+
+function toggleLevel(level)
+{
+ $('table.directory tr').each(function() {
+ var l = this.id.split('_').length-1;
+ var i = $('#img'+this.id.substring(3));
+ var a = $('#arr'+this.id.substring(3));
+ if (l
+
+
+
+
+
+
+Leonetienne/Eule: File List
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Leonetienne/Eule
+
+ Homemade math library, mainly targetted towards computer graphics
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Here is a list of all files with brief descriptions:
+
+
+
+
+
diff --git a/Doxygen/build/folderclosed.png b/Doxygen/build/folderclosed.png
new file mode 100644
index 0000000..bb8ab35
Binary files /dev/null and b/Doxygen/build/folderclosed.png differ
diff --git a/Doxygen/build/folderopen.png b/Doxygen/build/folderopen.png
new file mode 100644
index 0000000..d6c7f67
Binary files /dev/null and b/Doxygen/build/folderopen.png differ
diff --git a/Doxygen/build/functions.html b/Doxygen/build/functions.html
new file mode 100644
index 0000000..8285919
--- /dev/null
+++ b/Doxygen/build/functions.html
@@ -0,0 +1,96 @@
+
+
+
+
+
+
+
+Leonetienne/Eule: Class Members
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Leonetienne/Eule
+
+ Homemade math library, mainly targetted towards computer graphics
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Here is a list of all class members with links to the classes they belong to:
+
+
- a -
+
+
+
+
+
diff --git a/Doxygen/build/functions_b.html b/Doxygen/build/functions_b.html
new file mode 100644
index 0000000..b04f2ff
--- /dev/null
+++ b/Doxygen/build/functions_b.html
@@ -0,0 +1,97 @@
+
+
+
+
+
+
+
+Leonetienne/Eule: Class Members
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Leonetienne/Eule
+
+ Homemade math library, mainly targetted towards computer graphics
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Here is a list of all class members with links to the classes they belong to:
+
+
- b -
+
+
+
+
+
diff --git a/Doxygen/build/functions_c.html b/Doxygen/build/functions_c.html
new file mode 100644
index 0000000..e1e0e12
--- /dev/null
+++ b/Doxygen/build/functions_c.html
@@ -0,0 +1,101 @@
+
+
+
+
+
+
+
+Leonetienne/Eule: Class Members
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Leonetienne/Eule
+
+ Homemade math library, mainly targetted towards computer graphics
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Here is a list of all class members with links to the classes they belong to:
+
+
- c -
+
+
+
+
+
diff --git a/Doxygen/build/functions_d.html b/Doxygen/build/functions_d.html
new file mode 100644
index 0000000..88c242a
--- /dev/null
+++ b/Doxygen/build/functions_d.html
@@ -0,0 +1,102 @@
+
+
+
+
+
+
+
+Leonetienne/Eule: Class Members
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Leonetienne/Eule
+
+ Homemade math library, mainly targetted towards computer graphics
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Here is a list of all class members with links to the classes they belong to:
+
+
- d -
+
+
+
+
+
diff --git a/Doxygen/build/functions_e.html b/Doxygen/build/functions_e.html
new file mode 100644
index 0000000..38f36f6
--- /dev/null
+++ b/Doxygen/build/functions_e.html
@@ -0,0 +1,87 @@
+
+
+
+
+
+
+
+Leonetienne/Eule: Class Members
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Leonetienne/Eule
+
+ Homemade math library, mainly targetted towards computer graphics
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Here is a list of all class members with links to the classes they belong to:
+
+
- e -
+
+
+
+
+
diff --git a/Doxygen/build/functions_f.html b/Doxygen/build/functions_f.html
new file mode 100644
index 0000000..ededa47
--- /dev/null
+++ b/Doxygen/build/functions_f.html
@@ -0,0 +1,97 @@
+
+
+
+
+
+
+
+Leonetienne/Eule: Class Members
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Leonetienne/Eule
+
+ Homemade math library, mainly targetted towards computer graphics
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Here is a list of all class members with links to the classes they belong to:
+
+
- f -
+
+
+
+
+
diff --git a/Doxygen/build/functions_func.html b/Doxygen/build/functions_func.html
new file mode 100644
index 0000000..166181b
--- /dev/null
+++ b/Doxygen/build/functions_func.html
@@ -0,0 +1,428 @@
+
+
+
+
+
+
+
+Leonetienne/Eule: Class Members - Functions
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Leonetienne/Eule
+
+ Homemade math library, mainly targetted towards computer graphics
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
- a -
+
+
+
- c -
+
+
+
- d -
+
+
+
- g -
+
+
+
- i -
+
+
+
- l -
+
+
+
- m -
+
+
+
- n -
+
+
+
- o -
+operator Vector2< T >()
+: Eule::Vector3< T >
+, Eule::Vector4< T >
+
+operator Vector3< T >()
+: Eule::Vector2< T >
+, Eule::Vector4< T >
+
+operator Vector4< T >()
+: Eule::Vector2< T >
+, Eule::Vector3< T >
+
+operator!=()
+: Eule::Matrix4x4
+, Eule::Quaternion
+, Eule::Vector2< T >
+, Eule::Vector3< T >
+, Eule::Vector4< T >
+
+operator*()
+: Eule::Matrix4x4
+, Eule::Quaternion
+, Eule::Vector2< T >
+, Eule::Vector3< T >
+, Eule::Vector4< T >
+
+operator*=()
+: Eule::Matrix4x4
+, Eule::Quaternion
+, Eule::Vector2< T >
+, Eule::Vector3< T >
+, Eule::Vector4< T >
+
+operator+()
+: Eule::Matrix4x4
+, Eule::Vector2< T >
+, Eule::Vector3< T >
+, Eule::Vector4< T >
+
+operator+=()
+: Eule::Matrix4x4
+, Eule::Vector2< T >
+, Eule::Vector3< T >
+, Eule::Vector4< T >
+
+operator-()
+: Eule::Matrix4x4
+, Eule::Vector2< T >
+, Eule::Vector3< T >
+, Eule::Vector4< T >
+
+operator-=()
+: Eule::Matrix4x4
+, Eule::Vector2< T >
+, Eule::Vector3< T >
+, Eule::Vector4< T >
+
+operator/()
+: Eule::Matrix4x4
+, Eule::Quaternion
+, Eule::Vector2< T >
+, Eule::Vector3< T >
+, Eule::Vector4< T >
+
+operator/=()
+: Eule::Matrix4x4
+, Eule::Quaternion
+, Eule::Vector2< T >
+, Eule::Vector3< T >
+, Eule::Vector4< T >
+
+operator=()
+: Eule::Matrix4x4
+, Eule::Quaternion
+, Eule::TrapazoidalPrismCollider
+, Eule::Vector2< T >
+, Eule::Vector3< T >
+, Eule::Vector4< T >
+
+operator==()
+: Eule::Matrix4x4
+, Eule::Quaternion
+, Eule::Vector2< T >
+, Eule::Vector3< T >
+, Eule::Vector4< T >
+
+operator[]()
+: Eule::Matrix4x4
+, Eule::Vector2< T >
+, Eule::Vector3< T >
+, Eule::Vector4< T >
+
+Oscillate()
+: Eule::Math
+
+
+
+
+
- q -
+
+
+
- r -
+
+
+
- s -
+
+
+
- t -
+
+
+
- u -
+
+
+
- v -
+
+
+
- ~ -
+
+
+
+
+
diff --git a/Doxygen/build/functions_g.html b/Doxygen/build/functions_g.html
new file mode 100644
index 0000000..1a811f1
--- /dev/null
+++ b/Doxygen/build/functions_g.html
@@ -0,0 +1,99 @@
+
+
+
+
+
+
+
+Leonetienne/Eule: Class Members
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Leonetienne/Eule
+
+ Homemade math library, mainly targetted towards computer graphics
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Here is a list of all class members with links to the classes they belong to:
+
+
- g -
+
+
+
+
+
diff --git a/Doxygen/build/functions_h.html b/Doxygen/build/functions_h.html
new file mode 100644
index 0000000..30c2a60
--- /dev/null
+++ b/Doxygen/build/functions_h.html
@@ -0,0 +1,87 @@
+
+
+
+
+
+
+
+Leonetienne/Eule: Class Members
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Leonetienne/Eule
+
+ Homemade math library, mainly targetted towards computer graphics
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Here is a list of all class members with links to the classes they belong to:
+
+
- h -
+
+
+
+
+
diff --git a/Doxygen/build/functions_i.html b/Doxygen/build/functions_i.html
new file mode 100644
index 0000000..8cd289e
--- /dev/null
+++ b/Doxygen/build/functions_i.html
@@ -0,0 +1,102 @@
+
+
+
+
+
+
+
+Leonetienne/Eule: Class Members
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Leonetienne/Eule
+
+ Homemade math library, mainly targetted towards computer graphics
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Here is a list of all class members with links to the classes they belong to:
+
+
- i -
+
+
+
+
+
diff --git a/Doxygen/build/functions_j.html b/Doxygen/build/functions_j.html
new file mode 100644
index 0000000..a916671
--- /dev/null
+++ b/Doxygen/build/functions_j.html
@@ -0,0 +1,87 @@
+
+
+
+
+
+
+
+Leonetienne/Eule: Class Members
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Leonetienne/Eule
+
+ Homemade math library, mainly targetted towards computer graphics
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Here is a list of all class members with links to the classes they belong to:
+
+
- j -
+
+
+
+
+
diff --git a/Doxygen/build/functions_k.html b/Doxygen/build/functions_k.html
new file mode 100644
index 0000000..afdb2d2
--- /dev/null
+++ b/Doxygen/build/functions_k.html
@@ -0,0 +1,87 @@
+
+
+
+
+
+
+
+Leonetienne/Eule: Class Members
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Leonetienne/Eule
+
+ Homemade math library, mainly targetted towards computer graphics
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Here is a list of all class members with links to the classes they belong to:
+
+
- k -
+
+
+
+
+
diff --git a/Doxygen/build/functions_l.html b/Doxygen/build/functions_l.html
new file mode 100644
index 0000000..25c5ba0
--- /dev/null
+++ b/Doxygen/build/functions_l.html
@@ -0,0 +1,107 @@
+
+
+
+
+
+
+
+Leonetienne/Eule: Class Members
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Leonetienne/Eule
+
+ Homemade math library, mainly targetted towards computer graphics
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Here is a list of all class members with links to the classes they belong to:
+
+
- l -
+
+
+
+
+
diff --git a/Doxygen/build/functions_m.html b/Doxygen/build/functions_m.html
new file mode 100644
index 0000000..bb17537
--- /dev/null
+++ b/Doxygen/build/functions_m.html
@@ -0,0 +1,104 @@
+
+
+
+
+
+
+
+Leonetienne/Eule: Class Members
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Leonetienne/Eule
+
+ Homemade math library, mainly targetted towards computer graphics
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Here is a list of all class members with links to the classes they belong to:
+
+
- m -
+
+
+
+
+
diff --git a/Doxygen/build/functions_n.html b/Doxygen/build/functions_n.html
new file mode 100644
index 0000000..1e11bf9
--- /dev/null
+++ b/Doxygen/build/functions_n.html
@@ -0,0 +1,97 @@
+
+
+
+
+
+
+
+Leonetienne/Eule: Class Members
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Leonetienne/Eule
+
+ Homemade math library, mainly targetted towards computer graphics
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Here is a list of all class members with links to the classes they belong to:
+
+
- n -
+
+
+
+
+
diff --git a/Doxygen/build/functions_o.html b/Doxygen/build/functions_o.html
new file mode 100644
index 0000000..6510862
--- /dev/null
+++ b/Doxygen/build/functions_o.html
@@ -0,0 +1,194 @@
+
+
+
+
+
+
+
+Leonetienne/Eule: Class Members
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Leonetienne/Eule
+
+ Homemade math library, mainly targetted towards computer graphics
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Here is a list of all class members with links to the classes they belong to:
+
+
- o -
+o
+: Eule::Matrix4x4
+
+one
+: Eule::Vector2< T >
+, Eule::Vector3< T >
+, Eule::Vector4< T >
+
+operator Vector2< T >()
+: Eule::Vector3< T >
+, Eule::Vector4< T >
+
+operator Vector3< T >()
+: Eule::Vector2< T >
+, Eule::Vector4< T >
+
+operator Vector4< T >()
+: Eule::Vector2< T >
+, Eule::Vector3< T >
+
+operator!=()
+: Eule::Matrix4x4
+, Eule::Quaternion
+, Eule::Vector2< T >
+, Eule::Vector3< T >
+, Eule::Vector4< T >
+
+operator*()
+: Eule::Matrix4x4
+, Eule::Quaternion
+, Eule::Vector2< T >
+, Eule::Vector3< T >
+, Eule::Vector4< T >
+
+operator*=()
+: Eule::Matrix4x4
+, Eule::Quaternion
+, Eule::Vector2< T >
+, Eule::Vector3< T >
+, Eule::Vector4< T >
+
+operator+()
+: Eule::Matrix4x4
+, Eule::Vector2< T >
+, Eule::Vector3< T >
+, Eule::Vector4< T >
+
+operator+=()
+: Eule::Matrix4x4
+, Eule::Vector2< T >
+, Eule::Vector3< T >
+, Eule::Vector4< T >
+
+operator-()
+: Eule::Matrix4x4
+, Eule::Vector2< T >
+, Eule::Vector3< T >
+, Eule::Vector4< T >
+
+operator-=()
+: Eule::Matrix4x4
+, Eule::Vector2< T >
+, Eule::Vector3< T >
+, Eule::Vector4< T >
+
+operator/()
+: Eule::Matrix4x4
+, Eule::Quaternion
+, Eule::Vector2< T >
+, Eule::Vector3< T >
+, Eule::Vector4< T >
+
+operator/=()
+: Eule::Matrix4x4
+, Eule::Quaternion
+, Eule::Vector2< T >
+, Eule::Vector3< T >
+, Eule::Vector4< T >
+
+operator<<
+: Eule::Matrix4x4
+, Eule::Quaternion
+, Eule::Vector2< T >
+, Eule::Vector3< T >
+, Eule::Vector4< T >
+
+operator=()
+: Eule::Matrix4x4
+, Eule::Quaternion
+, Eule::TrapazoidalPrismCollider
+, Eule::Vector2< T >
+, Eule::Vector3< T >
+, Eule::Vector4< T >
+
+operator==()
+: Eule::Matrix4x4
+, Eule::Quaternion
+, Eule::Vector2< T >
+, Eule::Vector3< T >
+, Eule::Vector4< T >
+
+operator[]()
+: Eule::Matrix4x4
+, Eule::Vector2< T >
+, Eule::Vector3< T >
+, Eule::Vector4< T >
+
+Oscillate()
+: Eule::Math
+
+
+
+
+
+
+
diff --git a/Doxygen/build/functions_p.html b/Doxygen/build/functions_p.html
new file mode 100644
index 0000000..2ba886d
--- /dev/null
+++ b/Doxygen/build/functions_p.html
@@ -0,0 +1,93 @@
+
+
+
+
+
+
+
+Leonetienne/Eule: Class Members
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Leonetienne/Eule
+
+ Homemade math library, mainly targetted towards computer graphics
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Here is a list of all class members with links to the classes they belong to:
+
+
- p -
+
+
+
+
+
diff --git a/Doxygen/build/functions_q.html b/Doxygen/build/functions_q.html
new file mode 100644
index 0000000..996bbbe
--- /dev/null
+++ b/Doxygen/build/functions_q.html
@@ -0,0 +1,87 @@
+
+
+
+
+
+
+
+Leonetienne/Eule: Class Members
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Leonetienne/Eule
+
+ Homemade math library, mainly targetted towards computer graphics
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Here is a list of all class members with links to the classes they belong to:
+
+
- q -
+
+
+
+
+
diff --git a/Doxygen/build/functions_r.html b/Doxygen/build/functions_r.html
new file mode 100644
index 0000000..e383c4a
--- /dev/null
+++ b/Doxygen/build/functions_r.html
@@ -0,0 +1,113 @@
+
+
+
+
+
+
+
+Leonetienne/Eule: Class Members
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Leonetienne/Eule
+
+ Homemade math library, mainly targetted towards computer graphics
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Here is a list of all class members with links to the classes they belong to:
+
+
- r -
+
+
+
+
+
diff --git a/Doxygen/build/functions_rela.html b/Doxygen/build/functions_rela.html
new file mode 100644
index 0000000..a05267d
--- /dev/null
+++ b/Doxygen/build/functions_rela.html
@@ -0,0 +1,89 @@
+
+
+
+
+
+
+
+Leonetienne/Eule: Class Members - Related Functions
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Leonetienne/Eule
+
+ Homemade math library, mainly targetted towards computer graphics
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Doxygen/build/functions_s.html b/Doxygen/build/functions_s.html
new file mode 100644
index 0000000..fa0980f
--- /dev/null
+++ b/Doxygen/build/functions_s.html
@@ -0,0 +1,108 @@
+
+
+
+
+
+
+
+Leonetienne/Eule: Class Members
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Leonetienne/Eule
+
+ Homemade math library, mainly targetted towards computer graphics
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Here is a list of all class members with links to the classes they belong to:
+
+
- s -
+
+
+
+
+
diff --git a/Doxygen/build/functions_t.html b/Doxygen/build/functions_t.html
new file mode 100644
index 0000000..14eee67
--- /dev/null
+++ b/Doxygen/build/functions_t.html
@@ -0,0 +1,112 @@
+
+
+
+
+
+
+
+Leonetienne/Eule: Class Members
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Leonetienne/Eule
+
+ Homemade math library, mainly targetted towards computer graphics
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Here is a list of all class members with links to the classes they belong to:
+
+
- t -
+
+
+
+
+
diff --git a/Doxygen/build/functions_u.html b/Doxygen/build/functions_u.html
new file mode 100644
index 0000000..2a2d7b3
--- /dev/null
+++ b/Doxygen/build/functions_u.html
@@ -0,0 +1,92 @@
+
+
+
+
+
+
+
+Leonetienne/Eule: Class Members
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Leonetienne/Eule
+
+ Homemade math library, mainly targetted towards computer graphics
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Here is a list of all class members with links to the classes they belong to:
+
+
- u -
+
+
+
+
+
diff --git a/Doxygen/build/functions_v.html b/Doxygen/build/functions_v.html
new file mode 100644
index 0000000..7f0aa9e
--- /dev/null
+++ b/Doxygen/build/functions_v.html
@@ -0,0 +1,101 @@
+
+
+
+
+
+
+
+Leonetienne/Eule: Class Members
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Leonetienne/Eule
+
+ Homemade math library, mainly targetted towards computer graphics
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Here is a list of all class members with links to the classes they belong to:
+
+
- v -
+
+
+
+
+
diff --git a/Doxygen/build/functions_vars.html b/Doxygen/build/functions_vars.html
new file mode 100644
index 0000000..7d31058
--- /dev/null
+++ b/Doxygen/build/functions_vars.html
@@ -0,0 +1,316 @@
+
+
+
+
+
+
+
+Leonetienne/Eule: Class Members - Variables
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Leonetienne/Eule
+
+ Homemade math library, mainly targetted towards computer graphics
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
- a -
+
+
+
- b -
+
+
+
- c -
+
+
+
- d -
+
+
+
- e -
+
+
+
- f -
+
+
+
- g -
+
+
+
- h -
+
+
+
- i -
+
+
+
- j -
+
+
+
- k -
+
+
+
- l -
+
+
+
- m -
+
+
+
- n -
+
+
+
- o -
+
+
+
- p -
+
+
+
- r -
+
+
+
- s -
+
+
+
- t -
+
+
+
- u -
+
+
+
- v -
+
+
+
- w -
+
+
+
- x -
+
+
+
- y -
+
+
+
- z -
+
+
+
+
+
diff --git a/Doxygen/build/functions_w.html b/Doxygen/build/functions_w.html
new file mode 100644
index 0000000..24f19aa
--- /dev/null
+++ b/Doxygen/build/functions_w.html
@@ -0,0 +1,87 @@
+
+
+
+
+
+
+
+Leonetienne/Eule: Class Members
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Leonetienne/Eule
+
+ Homemade math library, mainly targetted towards computer graphics
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Here is a list of all class members with links to the classes they belong to:
+
+
- w -
+
+
+
+
+
diff --git a/Doxygen/build/functions_x.html b/Doxygen/build/functions_x.html
new file mode 100644
index 0000000..1169760
--- /dev/null
+++ b/Doxygen/build/functions_x.html
@@ -0,0 +1,89 @@
+
+
+
+
+
+
+
+Leonetienne/Eule: Class Members
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Leonetienne/Eule
+
+ Homemade math library, mainly targetted towards computer graphics
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Here is a list of all class members with links to the classes they belong to:
+
+
- x -
+
+
+
+
+
diff --git a/Doxygen/build/functions_y.html b/Doxygen/build/functions_y.html
new file mode 100644
index 0000000..703a0f7
--- /dev/null
+++ b/Doxygen/build/functions_y.html
@@ -0,0 +1,89 @@
+
+
+
+
+
+
+
+Leonetienne/Eule: Class Members
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Leonetienne/Eule
+
+ Homemade math library, mainly targetted towards computer graphics
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Here is a list of all class members with links to the classes they belong to:
+
+
- y -
+
+
+
+
+
diff --git a/Doxygen/build/functions_z.html b/Doxygen/build/functions_z.html
new file mode 100644
index 0000000..8fd38aa
--- /dev/null
+++ b/Doxygen/build/functions_z.html
@@ -0,0 +1,93 @@
+
+
+
+
+
+
+
+Leonetienne/Eule: Class Members
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Leonetienne/Eule
+
+ Homemade math library, mainly targetted towards computer graphics
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Here is a list of all class members with links to the classes they belong to:
+
+
- z -
+
+
+
+
+
diff --git a/Doxygen/build/functions_~.html b/Doxygen/build/functions_~.html
new file mode 100644
index 0000000..33131f7
--- /dev/null
+++ b/Doxygen/build/functions_~.html
@@ -0,0 +1,87 @@
+
+
+
+
+
+
+
+Leonetienne/Eule: Class Members
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Leonetienne/Eule
+
+ Homemade math library, mainly targetted towards computer graphics
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Here is a list of all class members with links to the classes they belong to:
+
+
- ~ -
+
+
+
+
+
diff --git a/Doxygen/build/globals.html b/Doxygen/build/globals.html
new file mode 100644
index 0000000..0336f46
--- /dev/null
+++ b/Doxygen/build/globals.html
@@ -0,0 +1,97 @@
+
+
+
+
+
+
+
+Leonetienne/Eule: File Members
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Leonetienne/Eule
+
+ Homemade math library, mainly targetted towards computer graphics
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Here is a list of all file members with links to the files they belong to:
+
+
+
+
+
diff --git a/Doxygen/build/globals_defs.html b/Doxygen/build/globals_defs.html
new file mode 100644
index 0000000..3acdd0e
--- /dev/null
+++ b/Doxygen/build/globals_defs.html
@@ -0,0 +1,97 @@
+
+
+
+
+
+
+
+Leonetienne/Eule: File Members
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Leonetienne/Eule
+
+ Homemade math library, mainly targetted towards computer graphics
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Doxygen/build/graph_legend.html b/Doxygen/build/graph_legend.html
new file mode 100644
index 0000000..e49e39c
--- /dev/null
+++ b/Doxygen/build/graph_legend.html
@@ -0,0 +1,144 @@
+
+
+
+
+
+
+
+Leonetienne/Eule: Graph Legend
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Leonetienne/Eule
+
+ Homemade math library, mainly targetted towards computer graphics
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
This page explains how to interpret the graphs that are generated by doxygen.
+
Consider the following example:
+
class Invisible { };
+
+
+
class Truncated : public Invisible { };
+
+
+
class Undocumented { };
+
+
+
class PublicBase : public Truncated { };
+
+
+
template <class T> class Templ { };
+
+
+
class ProtectedBase { };
+
+
+
class PrivateBase { };
+
+
+
class Used { };
+
+
+
class Inherited : public PublicBase,
+
protected ProtectedBase,
+
private PrivateBase,
+
public Undocumented,
+
public Templ<int>
+
{
+
private :
+
Used *m_usedClass;
+
};
+
This will result in the following graph:
+
The boxes in the above graph have the following meaning:
+
+
+A filled gray box represents the struct or class for which the graph is generated.
+
+A box with a black border denotes a documented struct or class.
+
+A box with a gray border denotes an undocumented struct or class.
+
+A box with a red border denotes a documented struct or class forwhich not all inheritance/containment relations are shown. A graph is truncated if it does not fit within the specified boundaries.
+
+
The arrows have the following meaning:
+
+
+A dark blue arrow is used to visualize a public inheritance relation between two classes.
+
+A dark green arrow is used for protected inheritance.
+
+A dark red arrow is used for private inheritance.
+
+A purple dashed arrow is used if a class is contained or used by another class. The arrow is labelled with the variable(s) through which the pointed class or struct is accessible.
+
+A yellow dashed arrow denotes a relation between a template instance and the template class it was instantiated from. The arrow is labelled with the template parameters of the instance.
+
+
+
+
+
+
diff --git a/Doxygen/build/graph_legend.md5 b/Doxygen/build/graph_legend.md5
new file mode 100644
index 0000000..8fcdccd
--- /dev/null
+++ b/Doxygen/build/graph_legend.md5
@@ -0,0 +1 @@
+f51bf6e9a10430aafef59831b08dcbfe
\ No newline at end of file
diff --git a/Doxygen/build/graph_legend.png b/Doxygen/build/graph_legend.png
new file mode 100644
index 0000000..7e2cbcf
Binary files /dev/null and b/Doxygen/build/graph_legend.png differ
diff --git a/Doxygen/build/hierarchy.html b/Doxygen/build/hierarchy.html
new file mode 100644
index 0000000..ae2b2ae
--- /dev/null
+++ b/Doxygen/build/hierarchy.html
@@ -0,0 +1,102 @@
+
+
+
+
+
+
+
+Leonetienne/Eule: Class Hierarchy
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Leonetienne/Eule
+
+ Homemade math library, mainly targetted towards computer graphics
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Go to the graphical class hierarchy
+This inheritance list is sorted roughly, but not completely, alphabetically:
+
+
+
+
+
diff --git a/Doxygen/build/index.html b/Doxygen/build/index.html
new file mode 100644
index 0000000..ae08c61
--- /dev/null
+++ b/Doxygen/build/index.html
@@ -0,0 +1,84 @@
+
+
+
+
+
+
+
+Leonetienne/Eule: Main Page
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Leonetienne/Eule
+
+ Homemade math library, mainly targetted towards computer graphics
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Doxygen/build/inherit_graph_0.map b/Doxygen/build/inherit_graph_0.map
new file mode 100644
index 0000000..40c0fac
--- /dev/null
+++ b/Doxygen/build/inherit_graph_0.map
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/Doxygen/build/inherit_graph_0.md5 b/Doxygen/build/inherit_graph_0.md5
new file mode 100644
index 0000000..92d61c3
--- /dev/null
+++ b/Doxygen/build/inherit_graph_0.md5
@@ -0,0 +1 @@
+faecc536e16ff6fdde92040a1b4025d5
\ No newline at end of file
diff --git a/Doxygen/build/inherit_graph_0.png b/Doxygen/build/inherit_graph_0.png
new file mode 100644
index 0000000..3d3407f
Binary files /dev/null and b/Doxygen/build/inherit_graph_0.png differ
diff --git a/Doxygen/build/inherit_graph_1.map b/Doxygen/build/inherit_graph_1.map
new file mode 100644
index 0000000..3819e40
--- /dev/null
+++ b/Doxygen/build/inherit_graph_1.map
@@ -0,0 +1,3 @@
+
+
+
diff --git a/Doxygen/build/inherit_graph_1.md5 b/Doxygen/build/inherit_graph_1.md5
new file mode 100644
index 0000000..183b95f
--- /dev/null
+++ b/Doxygen/build/inherit_graph_1.md5
@@ -0,0 +1 @@
+55775381c0d6f713bcc2b3c47ff21c8f
\ No newline at end of file
diff --git a/Doxygen/build/inherit_graph_1.png b/Doxygen/build/inherit_graph_1.png
new file mode 100644
index 0000000..0c7dd1a
Binary files /dev/null and b/Doxygen/build/inherit_graph_1.png differ
diff --git a/Doxygen/build/inherit_graph_10.map b/Doxygen/build/inherit_graph_10.map
new file mode 100644
index 0000000..30fc0c2
--- /dev/null
+++ b/Doxygen/build/inherit_graph_10.map
@@ -0,0 +1,3 @@
+
+
+
diff --git a/Doxygen/build/inherit_graph_10.md5 b/Doxygen/build/inherit_graph_10.md5
new file mode 100644
index 0000000..daa19f2
--- /dev/null
+++ b/Doxygen/build/inherit_graph_10.md5
@@ -0,0 +1 @@
+7155a82293b3a5bd041fc17368c37b0b
\ No newline at end of file
diff --git a/Doxygen/build/inherit_graph_10.png b/Doxygen/build/inherit_graph_10.png
new file mode 100644
index 0000000..dac0139
Binary files /dev/null and b/Doxygen/build/inherit_graph_10.png differ
diff --git a/Doxygen/build/inherit_graph_2.map b/Doxygen/build/inherit_graph_2.map
new file mode 100644
index 0000000..0c0c201
--- /dev/null
+++ b/Doxygen/build/inherit_graph_2.map
@@ -0,0 +1,3 @@
+
+
+
diff --git a/Doxygen/build/inherit_graph_2.md5 b/Doxygen/build/inherit_graph_2.md5
new file mode 100644
index 0000000..81fa185
--- /dev/null
+++ b/Doxygen/build/inherit_graph_2.md5
@@ -0,0 +1 @@
+da8ec51f432ceed38d2a3ba830433862
\ No newline at end of file
diff --git a/Doxygen/build/inherit_graph_2.png b/Doxygen/build/inherit_graph_2.png
new file mode 100644
index 0000000..b5f1e4c
Binary files /dev/null and b/Doxygen/build/inherit_graph_2.png differ
diff --git a/Doxygen/build/inherit_graph_3.map b/Doxygen/build/inherit_graph_3.map
new file mode 100644
index 0000000..00d562a
--- /dev/null
+++ b/Doxygen/build/inherit_graph_3.map
@@ -0,0 +1,3 @@
+
+
+
diff --git a/Doxygen/build/inherit_graph_3.md5 b/Doxygen/build/inherit_graph_3.md5
new file mode 100644
index 0000000..e78feaa
--- /dev/null
+++ b/Doxygen/build/inherit_graph_3.md5
@@ -0,0 +1 @@
+d1f60b83f5f2b808ebacc2a8461bbcf1
\ No newline at end of file
diff --git a/Doxygen/build/inherit_graph_3.png b/Doxygen/build/inherit_graph_3.png
new file mode 100644
index 0000000..98925f5
Binary files /dev/null and b/Doxygen/build/inherit_graph_3.png differ
diff --git a/Doxygen/build/inherit_graph_4.map b/Doxygen/build/inherit_graph_4.map
new file mode 100644
index 0000000..bc2ad07
--- /dev/null
+++ b/Doxygen/build/inherit_graph_4.map
@@ -0,0 +1,3 @@
+
+
+
diff --git a/Doxygen/build/inherit_graph_4.md5 b/Doxygen/build/inherit_graph_4.md5
new file mode 100644
index 0000000..c38e462
--- /dev/null
+++ b/Doxygen/build/inherit_graph_4.md5
@@ -0,0 +1 @@
+b877581d0cf44caf9f55600648999181
\ No newline at end of file
diff --git a/Doxygen/build/inherit_graph_4.png b/Doxygen/build/inherit_graph_4.png
new file mode 100644
index 0000000..b4259b1
Binary files /dev/null and b/Doxygen/build/inherit_graph_4.png differ
diff --git a/Doxygen/build/inherit_graph_5.map b/Doxygen/build/inherit_graph_5.map
new file mode 100644
index 0000000..023aec9
--- /dev/null
+++ b/Doxygen/build/inherit_graph_5.map
@@ -0,0 +1,3 @@
+
+
+
diff --git a/Doxygen/build/inherit_graph_5.md5 b/Doxygen/build/inherit_graph_5.md5
new file mode 100644
index 0000000..2a70403
--- /dev/null
+++ b/Doxygen/build/inherit_graph_5.md5
@@ -0,0 +1 @@
+0c13f6ce1f78441ee21cf9d1c45e1908
\ No newline at end of file
diff --git a/Doxygen/build/inherit_graph_5.png b/Doxygen/build/inherit_graph_5.png
new file mode 100644
index 0000000..d5c92c8
Binary files /dev/null and b/Doxygen/build/inherit_graph_5.png differ
diff --git a/Doxygen/build/inherit_graph_6.map b/Doxygen/build/inherit_graph_6.map
new file mode 100644
index 0000000..68566a6
--- /dev/null
+++ b/Doxygen/build/inherit_graph_6.map
@@ -0,0 +1,3 @@
+
+
+
diff --git a/Doxygen/build/inherit_graph_6.md5 b/Doxygen/build/inherit_graph_6.md5
new file mode 100644
index 0000000..bcc4c49
--- /dev/null
+++ b/Doxygen/build/inherit_graph_6.md5
@@ -0,0 +1 @@
+d94d4c448319ade5856fe16313cdaf90
\ No newline at end of file
diff --git a/Doxygen/build/inherit_graph_6.png b/Doxygen/build/inherit_graph_6.png
new file mode 100644
index 0000000..432d70c
Binary files /dev/null and b/Doxygen/build/inherit_graph_6.png differ
diff --git a/Doxygen/build/inherit_graph_7.map b/Doxygen/build/inherit_graph_7.map
new file mode 100644
index 0000000..1b6f392
--- /dev/null
+++ b/Doxygen/build/inherit_graph_7.map
@@ -0,0 +1,3 @@
+
+
+
diff --git a/Doxygen/build/inherit_graph_7.md5 b/Doxygen/build/inherit_graph_7.md5
new file mode 100644
index 0000000..68acb99
--- /dev/null
+++ b/Doxygen/build/inherit_graph_7.md5
@@ -0,0 +1 @@
+6ba22a43115dfe6a9765ea4069b86b04
\ No newline at end of file
diff --git a/Doxygen/build/inherit_graph_7.png b/Doxygen/build/inherit_graph_7.png
new file mode 100644
index 0000000..f6283ce
Binary files /dev/null and b/Doxygen/build/inherit_graph_7.png differ
diff --git a/Doxygen/build/inherit_graph_8.map b/Doxygen/build/inherit_graph_8.map
new file mode 100644
index 0000000..46bb199
--- /dev/null
+++ b/Doxygen/build/inherit_graph_8.map
@@ -0,0 +1,3 @@
+
+
+
diff --git a/Doxygen/build/inherit_graph_8.md5 b/Doxygen/build/inherit_graph_8.md5
new file mode 100644
index 0000000..1f180c8
--- /dev/null
+++ b/Doxygen/build/inherit_graph_8.md5
@@ -0,0 +1 @@
+519b7766a67ae2440b4386b052cd2b9d
\ No newline at end of file
diff --git a/Doxygen/build/inherit_graph_8.png b/Doxygen/build/inherit_graph_8.png
new file mode 100644
index 0000000..1b5d9a6
Binary files /dev/null and b/Doxygen/build/inherit_graph_8.png differ
diff --git a/Doxygen/build/inherit_graph_9.map b/Doxygen/build/inherit_graph_9.map
new file mode 100644
index 0000000..640de15
--- /dev/null
+++ b/Doxygen/build/inherit_graph_9.map
@@ -0,0 +1,3 @@
+
+
+
diff --git a/Doxygen/build/inherit_graph_9.md5 b/Doxygen/build/inherit_graph_9.md5
new file mode 100644
index 0000000..8dcd915
--- /dev/null
+++ b/Doxygen/build/inherit_graph_9.md5
@@ -0,0 +1 @@
+432c836055c60e0a7148cd35fe49ed41
\ No newline at end of file
diff --git a/Doxygen/build/inherit_graph_9.png b/Doxygen/build/inherit_graph_9.png
new file mode 100644
index 0000000..a0707c5
Binary files /dev/null and b/Doxygen/build/inherit_graph_9.png differ
diff --git a/Doxygen/build/inherits.html b/Doxygen/build/inherits.html
new file mode 100644
index 0000000..b86a1eb
--- /dev/null
+++ b/Doxygen/build/inherits.html
@@ -0,0 +1,144 @@
+
+
+
+
+
+
+
+Leonetienne/Eule: Class Hierarchy
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Leonetienne/Eule
+
+ Homemade math library, mainly targetted towards computer graphics
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Doxygen/build/jquery.js b/Doxygen/build/jquery.js
new file mode 100644
index 0000000..103c32d
--- /dev/null
+++ b/Doxygen/build/jquery.js
@@ -0,0 +1,35 @@
+/*! jQuery v3.4.1 | (c) JS Foundation and other contributors | jquery.org/license */
+!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(C,e){"use strict";var t=[],E=C.document,r=Object.getPrototypeOf,s=t.slice,g=t.concat,u=t.push,i=t.indexOf,n={},o=n.toString,v=n.hasOwnProperty,a=v.toString,l=a.call(Object),y={},m=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType},x=function(e){return null!=e&&e===e.window},c={type:!0,src:!0,nonce:!0,noModule:!0};function b(e,t,n){var r,i,o=(n=n||E).createElement("script");if(o.text=e,t)for(r in c)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function w(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[o.call(e)]||"object":typeof e}var f="3.4.1",k=function(e,t){return new k.fn.init(e,t)},p=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g;function d(e){var t=!!e&&"length"in e&&e.length,n=w(e);return!m(e)&&!x(e)&&("array"===n||0===t||"number"==typeof t&&0+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp($),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+$),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\([\\da-f]{1,6}"+M+"?|("+M+")|.)","ig"),ne=function(e,t,n){var r="0x"+t-65536;return r!=r||n?t:r<0?String.fromCharCode(r+65536):String.fromCharCode(r>>10|55296,1023&r|56320)},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(m.childNodes),m.childNodes),t[m.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&((e?e.ownerDocument||e:m)!==C&&T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&y(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!A[t+" "]&&(!v||!v.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&U.test(t)){(s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=k),o=(l=h(t)).length;while(o--)l[o]="#"+s+" "+xe(l[o]);c=l.join(","),f=ee.test(t)&&ye(e.parentNode)||e}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){A(t,!0)}finally{s===k&&e.removeAttribute("id")}}}return g(t.replace(B,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[k]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ve(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ye(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e.namespaceURI,n=(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:m;return r!==C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),m!==C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=k,!C.getElementsByName||!C.getElementsByName(k).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],v=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){a.appendChild(e).innerHTML=" ",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+k+"-]").length||v.push("~="),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+k+"+*").length||v.push(".#.+[+~]")}),ce(function(e){e.innerHTML=" ";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",$)}),v=v.length&&new RegExp(v.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),y=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},D=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)===(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e===C||e.ownerDocument===m&&y(m,e)?-1:t===C||t.ownerDocument===m&&y(m,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e===C?-1:t===C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]===m?-1:s[r]===m?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if((e.ownerDocument||e)!==C&&T(e),d.matchesSelector&&E&&!A[t+" "]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){A(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=p[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&p(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,n,r){return m(n)?k.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?k.grep(e,function(e){return e===n!==r}):"string"!=typeof n?k.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(k.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||q,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:L.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof k?t[0]:t,k.merge(this,k.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),D.test(r[1])&&k.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(k):k.makeArray(e,this)}).prototype=k.fn,q=k(E);var H=/^(?:parents|prev(?:Until|All))/,O={children:!0,contents:!0,next:!0,prev:!0};function P(e,t){while((e=e[t])&&1!==e.nodeType);return e}k.fn.extend({has:function(e){var t=k(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i,ge={option:[1,""," "],thead:[1,""],col:[2,""],tr:[2,""],td:[3,""],_default:[0,"",""]};function ve(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?k.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;nx",y.noCloneChecked=!!me.cloneNode(!0).lastChild.defaultValue;var Te=/^key/,Ce=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,Ee=/^([^.]*)(?:\.(.+)|)/;function ke(){return!0}function Se(){return!1}function Ne(e,t){return e===function(){try{return E.activeElement}catch(e){}}()==("focus"===t)}function Ae(e,t,n,r,i,o){var a,s;if("object"==typeof t){for(s in"string"!=typeof n&&(r=r||n,n=void 0),t)Ae(e,s,n,r,t[s],o);return e}if(null==r&&null==i?(i=n,r=n=void 0):null==i&&("string"==typeof n?(i=r,r=void 0):(i=r,r=n,n=void 0)),!1===i)i=Se;else if(!i)return e;return 1===o&&(a=i,(i=function(e){return k().off(e),a.apply(this,arguments)}).guid=a.guid||(a.guid=k.guid++)),e.each(function(){k.event.add(this,t,i,r,n)})}function De(e,i,o){o?(Q.set(e,i,!1),k.event.add(e,i,{namespace:!1,handler:function(e){var t,n,r=Q.get(this,i);if(1&e.isTrigger&&this[i]){if(r.length)(k.event.special[i]||{}).delegateType&&e.stopPropagation();else if(r=s.call(arguments),Q.set(this,i,r),t=o(this,i),this[i](),r!==(n=Q.get(this,i))||t?Q.set(this,i,!1):n={},r!==n)return e.stopImmediatePropagation(),e.preventDefault(),n.value}else r.length&&(Q.set(this,i,{value:k.event.trigger(k.extend(r[0],k.Event.prototype),r.slice(1),this)}),e.stopImmediatePropagation())}})):void 0===Q.get(e,i)&&k.event.add(e,i,ke)}k.event={global:{},add:function(t,e,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=Q.get(t);if(v){n.handler&&(n=(o=n).handler,i=o.selector),i&&k.find.matchesSelector(ie,i),n.guid||(n.guid=k.guid++),(u=v.events)||(u=v.events={}),(a=v.handle)||(a=v.handle=function(e){return"undefined"!=typeof k&&k.event.triggered!==e.type?k.event.dispatch.apply(t,arguments):void 0}),l=(e=(e||"").match(R)||[""]).length;while(l--)d=g=(s=Ee.exec(e[l])||[])[1],h=(s[2]||"").split(".").sort(),d&&(f=k.event.special[d]||{},d=(i?f.delegateType:f.bindType)||d,f=k.event.special[d]||{},c=k.extend({type:d,origType:g,data:r,handler:n,guid:n.guid,selector:i,needsContext:i&&k.expr.match.needsContext.test(i),namespace:h.join(".")},o),(p=u[d])||((p=u[d]=[]).delegateCount=0,f.setup&&!1!==f.setup.call(t,r,h,a)||t.addEventListener&&t.addEventListener(d,a)),f.add&&(f.add.call(t,c),c.handler.guid||(c.handler.guid=n.guid)),i?p.splice(p.delegateCount++,0,c):p.push(c),k.event.global[d]=!0)}},remove:function(e,t,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=Q.hasData(e)&&Q.get(e);if(v&&(u=v.events)){l=(t=(t||"").match(R)||[""]).length;while(l--)if(d=g=(s=Ee.exec(t[l])||[])[1],h=(s[2]||"").split(".").sort(),d){f=k.event.special[d]||{},p=u[d=(r?f.delegateType:f.bindType)||d]||[],s=s[2]&&new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"),a=o=p.length;while(o--)c=p[o],!i&&g!==c.origType||n&&n.guid!==c.guid||s&&!s.test(c.namespace)||r&&r!==c.selector&&("**"!==r||!c.selector)||(p.splice(o,1),c.selector&&p.delegateCount--,f.remove&&f.remove.call(e,c));a&&!p.length&&(f.teardown&&!1!==f.teardown.call(e,h,v.handle)||k.removeEvent(e,d,v.handle),delete u[d])}else for(d in u)k.event.remove(e,d+t[l],n,r,!0);k.isEmptyObject(u)&&Q.remove(e,"handle events")}},dispatch:function(e){var t,n,r,i,o,a,s=k.event.fix(e),u=new Array(arguments.length),l=(Q.get(this,"events")||{})[s.type]||[],c=k.event.special[s.type]||{};for(u[0]=s,t=1;t\x20\t\r\n\f]*)[^>]*)\/>/gi,qe=/
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Leonetienne/Eule
+
+ Homemade math library, mainly targetted towards computer graphics
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
◆ Vector2d
+
+
+
+
◆ Vector2i
+
+
+
+
◆ Vector3d
+
+
+
+
◆ Vector3i
+
+
+
+
◆ Vector4d
+
+
+
+
◆ Vector4i
+
+
+
+
+
◆ operator<<() [1/4]
+
+
+
+
+
+ std::ostream& Eule::operator<<
+ (
+ std::ostream &
+ os ,
+
+
+
+
+ const Matrix4x4 &
+ m
+
+
+
+ )
+
+
+
+
+
+
Definition at line 620 of file Matrix4x4.cpp .
+
+
+
+
624 for (std::size_t y = 0; y < 4; y++)
+
+
626 for (std::size_t x = 0; x < 4; x++)
+
627 os <<
" | " << m[y][x];
+
+
629 os <<
" |" << std::endl;
+
+
+
+
+
+
+
+
+
◆ operator<<() [2/4]
+
+
+
+
+
+ std::ostream& Eule::operator<<
+ (
+ std::ostream &
+ os ,
+
+
+
+
+ const Quaternion &
+ q
+
+
+
+ )
+
+
+
+
+
+
Definition at line 325 of file Quaternion.cpp .
+
+
327 os <<
"[" << q.v <<
"]" ;
+
+
+
+
+
+
+
◆ operator<<() [3/4]
+
+
+
+
+
+ std::wostream& Eule::operator<<
+ (
+ std::wostream &
+ os ,
+
+
+
+
+ const Matrix4x4 &
+ m
+
+
+
+ )
+
+
+
+
+
+
Definition at line 635 of file Matrix4x4.cpp .
+
+
+
+
639 for (std::size_t y = 0; y < 4; y++)
+
+
641 for (std::size_t x = 0; x < 4; x++)
+
642 os << L
" | " << m[y][x];
+
+
644 os << L
" |" << std::endl;
+
+
+
+
+
+
+
+
+
◆ operator<<() [4/4]
+
+
+
+
+
+ std::wostream& Eule::operator<<
+ (
+ std::wostream &
+ os ,
+
+
+
+
+ const Quaternion &
+ q
+
+
+
+ )
+
+
+
+
+
+
Definition at line 331 of file Quaternion.cpp .
+
+
333 os << L
"[" << q.v << L
"]" ;
+
+
+
+
+
+
+
+
+
+