From 2d7ef459830aa1daefcff3f2d19369422b51299d Mon Sep 17 00:00:00 2001 From: Leonetienne Date: Sun, 6 Mar 2022 20:06:27 +0100 Subject: [PATCH] Removed single-header deployment --- INCLUDE/Eule.cpp | 1285 ----------------- INCLUDE/Eule.h | 3274 ------------------------------------------- INCLUDE/deggl | Bin 1322616 -> 0 bytes INCLUDE/generate.sh | 8 - 4 files changed, 4567 deletions(-) delete mode 100644 INCLUDE/Eule.cpp delete mode 100644 INCLUDE/Eule.h delete mode 100755 INCLUDE/deggl delete mode 100755 INCLUDE/generate.sh diff --git a/INCLUDE/Eule.cpp b/INCLUDE/Eule.cpp deleted file mode 100644 index e2fe526..0000000 --- a/INCLUDE/Eule.cpp +++ /dev/null @@ -1,1285 +0,0 @@ -#include "Eule.h" - -/*** ./../Eule/Collider.cpp ***/ - - - -/*** ./../Eule/Math.cpp ***/ - -#include - -using namespace Eule; - -int Math::Mod(const int numerator, const int denominator) -{ - if (denominator == 0) - throw std::logic_error("Division by zero"); - - // Quick optimizations: - - // -> 0/n is always 0 - if (numerator == 0) - return 0; - - // -> operator% works for a > 0 && b > 0 - if (denominator > 0 && numerator > 0) - return numerator % denominator; - - // Else: generalized formula - return (denominator + (numerator % denominator)) % denominator; -} - -double Math::Oscillate(const double a, const double b, const double counter, const double speed) -{ - return (sin(counter * speed * PI - HALF_PI) * 0.5 + 0.5) * (b - a) + a; -} - - -/*** ./../Eule/Matrix4x4.cpp ***/ - - -//#define _EULE_NO_INTRINSICS_ -#ifndef _EULE_NO_INTRINSICS_ -#include -#endif - -using namespace Eule; - -Matrix4x4::Matrix4x4() -{ - // Create identity matrix - for (std::size_t i = 0; i < 4; i++) - for (std::size_t j = 0; j < 4; j++) - v[i][j] = double(i == j); - - return; -} - -Matrix4x4::Matrix4x4(const Matrix4x4& other) -{ - v = other.v; - return; -} - -Matrix4x4::Matrix4x4(Matrix4x4&& other) noexcept -{ - v = std::move(other.v); - return; -} - -Matrix4x4 Matrix4x4::operator*(const Matrix4x4& other) const -{ - Matrix4x4 newMatrix; - newMatrix.p = 1; - - #ifndef _EULE_NO_INTRINSICS_ - - - /* <= Matrix3x3 multiplication => */ - - // Load matrix components - __m256d __va1 = _mm256_set_pd(v[0][0], v[0][0], v[0][0], v[1][0]); - __m256d __va2 = _mm256_set_pd(v[1][0], v[1][0], v[2][0], v[2][0]); - - __m256d __oa1 = _mm256_set_pd(other[0][0], other[0][1], other[0][2], other[0][0]); - __m256d __oa2 = _mm256_set_pd(other[0][1], other[0][2], other[0][0], other[0][1]); - - __m256d __vb1 = _mm256_set_pd(v[0][1], v[0][1], v[0][1], v[1][1]); - __m256d __vb2 = _mm256_set_pd(v[1][1], v[1][1], v[2][1], v[2][1]); - - __m256d __ob1 = _mm256_set_pd(other[1][0], other[1][1], other[1][2], other[1][0]); - __m256d __ob2 = _mm256_set_pd(other[1][1], other[1][2], other[1][0], other[1][1]); - - __m256d __vc1 = _mm256_set_pd(v[0][2], v[0][2], v[0][2], v[1][2]); - __m256d __vc2 = _mm256_set_pd(v[1][2], v[1][2], v[2][2], v[2][2]); - - __m256d __oc1 = _mm256_set_pd(other[2][0], other[2][1], other[2][2], other[2][0]); - __m256d __oc2 = _mm256_set_pd(other[2][1], other[2][2], other[2][0], other[2][1]); - - // Initialize sums - __m256d __sum1 = _mm256_set1_pd(0); - __m256d __sum2 = _mm256_set1_pd(0); - - // Let's multiply-add them together - // First, the first block - __sum1 = _mm256_fmadd_pd(__va1, __oa1, __sum1); - __sum1 = _mm256_fmadd_pd(__vb1, __ob1, __sum1); - __sum1 = _mm256_fmadd_pd(__vc1, __oc1, __sum1); - - // Then the second block - __sum2 = _mm256_fmadd_pd(__va2, __oa2, __sum2); - __sum2 = _mm256_fmadd_pd(__vb2, __ob2, __sum2); - __sum2 = _mm256_fmadd_pd(__vc2, __oc2, __sum2); - - // Retrieve results - double sum1[4]; - double sum2[4]; - - _mm256_storeu_pd(sum1, __sum1); - _mm256_storeu_pd(sum2, __sum2); - - // Apply results - // Block 1 - newMatrix[0][0] = sum1[3]; - newMatrix[0][1] = sum1[2]; - newMatrix[0][2] = sum1[1]; - newMatrix[1][0] = sum1[0]; - - // Block 2 - newMatrix[1][1] = sum2[3]; - newMatrix[1][2] = sum2[2]; - newMatrix[2][0] = sum2[1]; - newMatrix[2][1] = sum2[0]; - - // Does not fit in the intrinsic calculation. Might just calculate 'by hand'. - newMatrix[2][2] = (v[2][0] * other[0][2]) + (v[2][1] * other[1][2]) + (v[2][2] * other[2][2]); - - - /* <= Translation component => */ - - // Load translation components into registers - __m256d __transSelf = _mm256_set_pd(0, l, h, d); - __m256d __transOther = _mm256_set_pd(0, other.l, other.h, other.d); - - // Let's add them - __m256d __sum = _mm256_add_pd(__transSelf, __transOther); - - // Retrieve results - double sum[4]; - _mm256_storeu_pd(sum, __sum); - - // Apply them - newMatrix.d = sum[0]; - newMatrix.h = sum[1]; - newMatrix.l = sum[2]; - - #else - - - // Rotation, Scaling - newMatrix[0][0] = (v[0][0] * other[0][0]) + (v[0][1] * other[1][0]) + (v[0][2] * other[2][0]); - newMatrix[0][1] = (v[0][0] * other[0][1]) + (v[0][1] * other[1][1]) + (v[0][2] * other[2][1]); - newMatrix[0][2] = (v[0][0] * other[0][2]) + (v[0][1] * other[1][2]) + (v[0][2] * other[2][2]); - - newMatrix[1][0] = (v[1][0] * other[0][0]) + (v[1][1] * other[1][0]) + (v[1][2] * other[2][0]); - newMatrix[1][1] = (v[1][0] * other[0][1]) + (v[1][1] * other[1][1]) + (v[1][2] * other[2][1]); - newMatrix[1][2] = (v[1][0] * other[0][2]) + (v[1][1] * other[1][2]) + (v[1][2] * other[2][2]); - - newMatrix[2][0] = (v[2][0] * other[0][0]) + (v[2][1] * other[1][0]) + (v[2][2] * other[2][0]); - newMatrix[2][1] = (v[2][0] * other[0][1]) + (v[2][1] * other[1][1]) + (v[2][2] * other[2][1]); - newMatrix[2][2] = (v[2][0] * other[0][2]) + (v[2][1] * other[1][2]) + (v[2][2] * other[2][2]); - - - // Translation - newMatrix[0][3] = v[0][3] + other[0][3]; - newMatrix[1][3] = v[1][3] + other[1][3]; - newMatrix[2][3] = v[2][3] + other[2][3]; - - #endif - - return newMatrix; -} - -void Matrix4x4::operator*=(const Matrix4x4& other) -{ - *this = *this * other; - return; -} - -Matrix4x4 Matrix4x4::operator/(const Matrix4x4& other) const -{ - return *this * other.Inverse3x3(); -} - -void Matrix4x4::operator/=(const Matrix4x4& other) -{ - *this = *this * other.Inverse3x3(); - return; -} - -Matrix4x4 Matrix4x4::operator*(const double scalar) const -{ - Matrix4x4 m; - - #ifndef _EULE_NO_INTRINSICS_ - - // Load matrix rows - __m256d __row0 = _mm256_set_pd(v[0][3], v[0][2], v[0][1], v[0][0]); - __m256d __row1 = _mm256_set_pd(v[1][3], v[1][2], v[1][1], v[1][0]); - __m256d __row2 = _mm256_set_pd(v[2][3], v[2][2], v[2][1], v[2][0]); - __m256d __row3 = _mm256_set_pd(v[3][3], v[3][2], v[3][1], v[3][0]); - - // Load scalar - __m256d __scalar = _mm256_set1_pd(scalar); - - // Scale values - __m256d __sr0 = _mm256_mul_pd(__row0, __scalar); - __m256d __sr1 = _mm256_mul_pd(__row1, __scalar); - __m256d __sr2 = _mm256_mul_pd(__row2, __scalar); - __m256d __sr3 = _mm256_mul_pd(__row3, __scalar); - - // Extract results - _mm256_storeu_pd(m.v[0].data(), __sr0); - _mm256_storeu_pd(m.v[1].data(), __sr1); - _mm256_storeu_pd(m.v[2].data(), __sr2); - _mm256_storeu_pd(m.v[3].data(), __sr3); - - #else - - for (std::size_t x = 0; x < 4; x++) - for (std::size_t y = 0; y < 4; y++) - m[x][y] = v[x][y] * scalar; - - #endif - - return m; -} - -void Matrix4x4::operator*=(const double scalar) -{ - *this = *this * scalar; - return; -} - -Matrix4x4 Matrix4x4::operator/(const double denominator) const -{ - const double precomputeDivision = 1.0 / denominator; - - return *this * precomputeDivision; -} - -void Matrix4x4::operator/=(const double denominator) -{ - *this = *this / denominator; - return; -} - -Matrix4x4 Matrix4x4::operator+(const Matrix4x4& other) const -{ - Matrix4x4 m; - - #ifndef _EULE_NO_INTRINSICS_ - - // Load matrix rows - __m256d __row0a = _mm256_set_pd(v[0][3], v[0][2], v[0][1], v[0][0]); - __m256d __row1a = _mm256_set_pd(v[1][3], v[1][2], v[1][1], v[1][0]); - __m256d __row2a = _mm256_set_pd(v[2][3], v[2][2], v[2][1], v[2][0]); - __m256d __row3a = _mm256_set_pd(v[3][3], v[3][2], v[3][1], v[3][0]); - - __m256d __row0b = _mm256_set_pd(other[0][3], other[0][2], other[0][1], other[0][0]); - __m256d __row1b = _mm256_set_pd(other[1][3], other[1][2], other[1][1], other[1][0]); - __m256d __row2b = _mm256_set_pd(other[2][3], other[2][2], other[2][1], other[2][0]); - __m256d __row3b = _mm256_set_pd(other[3][3], other[3][2], other[3][1], other[3][0]); - - // Add rows - __m256d __sr0 = _mm256_add_pd(__row0a, __row0b); - __m256d __sr1 = _mm256_add_pd(__row1a, __row1b); - __m256d __sr2 = _mm256_add_pd(__row2a, __row2b); - __m256d __sr3 = _mm256_add_pd(__row3a, __row3b); - - // Extract results - _mm256_storeu_pd(m.v[0].data(), __sr0); - _mm256_storeu_pd(m.v[1].data(), __sr1); - _mm256_storeu_pd(m.v[2].data(), __sr2); - _mm256_storeu_pd(m.v[3].data(), __sr3); - - #else - - for (std::size_t x = 0; x < 4; x++) - for (std::size_t y = 0; y < 4; y++) - m[x][y] = v[x][y] + other[x][y]; - - #endif - - return m; -} - -void Matrix4x4::operator+=(const Matrix4x4& other) -{ - #ifndef _EULE_NO_INTRINSICS_ - // Doing it again is a tad directer, and thus faster. We avoid an intermittent Matrix4x4 instance - - // Load matrix rows - __m256d __row0a = _mm256_set_pd(v[0][3], v[0][2], v[0][1], v[0][0]); - __m256d __row1a = _mm256_set_pd(v[1][3], v[1][2], v[1][1], v[1][0]); - __m256d __row2a = _mm256_set_pd(v[2][3], v[2][2], v[2][1], v[2][0]); - __m256d __row3a = _mm256_set_pd(v[3][3], v[3][2], v[3][1], v[3][0]); - - __m256d __row0b = _mm256_set_pd(other[0][3], other[0][2], other[0][1], other[0][0]); - __m256d __row1b = _mm256_set_pd(other[1][3], other[1][2], other[1][1], other[1][0]); - __m256d __row2b = _mm256_set_pd(other[2][3], other[2][2], other[2][1], other[2][0]); - __m256d __row3b = _mm256_set_pd(other[3][3], other[3][2], other[3][1], other[3][0]); - - // Add rows - __m256d __sr0 = _mm256_add_pd(__row0a, __row0b); - __m256d __sr1 = _mm256_add_pd(__row1a, __row1b); - __m256d __sr2 = _mm256_add_pd(__row2a, __row2b); - __m256d __sr3 = _mm256_add_pd(__row3a, __row3b); - - // Extract results - _mm256_storeu_pd(v[0].data(), __sr0); - _mm256_storeu_pd(v[1].data(), __sr1); - _mm256_storeu_pd(v[2].data(), __sr2); - _mm256_storeu_pd(v[3].data(), __sr3); - - #else - - *this = *this + other; - - #endif - - return; -} - -Matrix4x4 Matrix4x4::operator-(const Matrix4x4& other) const -{ - Matrix4x4 m; - - #ifndef _EULE_NO_INTRINSICS_ - - // Load matrix rows - __m256d __row0a = _mm256_set_pd(v[0][3], v[0][2], v[0][1], v[0][0]); - __m256d __row1a = _mm256_set_pd(v[1][3], v[1][2], v[1][1], v[1][0]); - __m256d __row2a = _mm256_set_pd(v[2][3], v[2][2], v[2][1], v[2][0]); - __m256d __row3a = _mm256_set_pd(v[3][3], v[3][2], v[3][1], v[3][0]); - - __m256d __row0b = _mm256_set_pd(other[0][3], other[0][2], other[0][1], other[0][0]); - __m256d __row1b = _mm256_set_pd(other[1][3], other[1][2], other[1][1], other[1][0]); - __m256d __row2b = _mm256_set_pd(other[2][3], other[2][2], other[2][1], other[2][0]); - __m256d __row3b = _mm256_set_pd(other[3][3], other[3][2], other[3][1], other[3][0]); - - // Subtract rows - __m256d __sr0 = _mm256_sub_pd(__row0a, __row0b); - __m256d __sr1 = _mm256_sub_pd(__row1a, __row1b); - __m256d __sr2 = _mm256_sub_pd(__row2a, __row2b); - __m256d __sr3 = _mm256_sub_pd(__row3a, __row3b); - - // Extract results - _mm256_storeu_pd(m.v[0].data(), __sr0); - _mm256_storeu_pd(m.v[1].data(), __sr1); - _mm256_storeu_pd(m.v[2].data(), __sr2); - _mm256_storeu_pd(m.v[3].data(), __sr3); - - #else - - for (std::size_t x = 0; x < 4; x++) - for (std::size_t y = 0; y < 4; y++) - m[x][y] = v[x][y] - other[x][y]; - - #endif - - return m; -} - -void Matrix4x4::operator-=(const Matrix4x4& other) -{ - #ifndef _EULE_NO_INTRINSICS_ - // Doing it again is a tad directer, and thus faster. We avoid an intermittent Matrix4x4 instance - - // Load matrix rows - __m256d __row0a = _mm256_set_pd(v[0][3], v[0][2], v[0][1], v[0][0]); - __m256d __row1a = _mm256_set_pd(v[1][3], v[1][2], v[1][1], v[1][0]); - __m256d __row2a = _mm256_set_pd(v[2][3], v[2][2], v[2][1], v[2][0]); - __m256d __row3a = _mm256_set_pd(v[3][3], v[3][2], v[3][1], v[3][0]); - - __m256d __row0b = _mm256_set_pd(other[0][3], other[0][2], other[0][1], other[0][0]); - __m256d __row1b = _mm256_set_pd(other[1][3], other[1][2], other[1][1], other[1][0]); - __m256d __row2b = _mm256_set_pd(other[2][3], other[2][2], other[2][1], other[2][0]); - __m256d __row3b = _mm256_set_pd(other[3][3], other[3][2], other[3][1], other[3][0]); - - // Subtract rows - __m256d __sr0 = _mm256_sub_pd(__row0a, __row0b); - __m256d __sr1 = _mm256_sub_pd(__row1a, __row1b); - __m256d __sr2 = _mm256_sub_pd(__row2a, __row2b); - __m256d __sr3 = _mm256_sub_pd(__row3a, __row3b); - - // Extract results - _mm256_storeu_pd(v[0].data(), __sr0); - _mm256_storeu_pd(v[1].data(), __sr1); - _mm256_storeu_pd(v[2].data(), __sr2); - _mm256_storeu_pd(v[3].data(), __sr3); - - #else - - * this = *this - other; - - #endif - - return; -} - -std::array& Matrix4x4::operator[](std::size_t y) -{ - return v[y]; -} - -const std::array& Matrix4x4::operator[](std::size_t y) const -{ - return v[y]; -} - -void Matrix4x4::operator=(const Matrix4x4& other) -{ - v = other.v; - return; -} - -void Matrix4x4::operator=(Matrix4x4&& other) noexcept -{ - v = std::move(other.v); - return; -} - -bool Matrix4x4::operator==(const Matrix4x4& other) -{ - return v == other.v; -} - -bool Matrix4x4::operator!=(const Matrix4x4& other) -{ - return !operator==(other); -} - -bool Matrix4x4::operator==(const Matrix4x4& other) const -{ - return v == other.v; -} - -bool Matrix4x4::operator!=(const Matrix4x4& other) const -{ - return !operator==(other); -} - -const Vector3d Matrix4x4::GetTranslationComponent() const -{ - return Vector3d(d, h, l); -} - -void Matrix4x4::SetTranslationComponent(const Vector3d& trans) -{ - d = trans.x; - h = trans.y; - l = trans.z; - return; -} - -Matrix4x4 Matrix4x4::DropTranslationComponents() const -{ - Matrix4x4 m(*this); - m.d = 0; - m.h = 0; - m.l = 0; - return m; -} - -Matrix4x4 Matrix4x4::Transpose3x3() const -{ - Matrix4x4 trans(*this); // Keep other cells - - for (std::size_t i = 0; i < 3; i++) - for (std::size_t j = 0; j < 3; j++) - trans[j][i] = v[i][j]; - - return trans; -} - -Matrix4x4 Matrix4x4::Transpose4x4() const -{ - Matrix4x4 trans; - - for (std::size_t i = 0; i < 4; i++) - for (std::size_t j = 0; j < 4; j++) - trans[j][i] = v[i][j]; - - return trans; -} - -Matrix4x4 Matrix4x4::Multiply4x4(const Matrix4x4& o) const -{ - Matrix4x4 m; - - 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]); - 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]); - 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]); - 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]); - - 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]); - 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]); - 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]); - 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]); - - 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]); - 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]); - 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]); - 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]); - - 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]); - 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]); - 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]); - 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]); - - return m; -} - -Matrix4x4 Matrix4x4::GetCofactors(std::size_t p, std::size_t q, std::size_t n) const -{ - if (n > 4) - throw std::runtime_error("Dimension out of range! 0 <= n <= 4"); - - Matrix4x4 cofs; - - std::size_t i = 0; - std::size_t j = 0; - - for (std::size_t y = 0; y < n; y++) - for (std::size_t x = 0; x < n; x++) - { - if ((y != p) && (x != q)) - { - cofs[i][j] = v[y][x]; - j++; - } - - if (j == n - 1) - { - j = 0; - i++; - } - } - - return cofs; -} - -/* -* BEGIN_REF -* https://www.geeksforgeeks.org/adjoint-inverse-matrix/ -*/ -double Matrix4x4::Determinant(std::size_t n) const -{ - if (n > 4) - throw std::runtime_error("Dimension out of range! 0 <= n <= 4"); - - double d = 0; - double sign = 1; - - if (n == 1) - return v[0][0]; - - for (std::size_t x = 0; x < n; x++) - { - Matrix4x4 cofs = GetCofactors(0, x, n); - - d += sign * v[0][x] * cofs.Determinant(n - 1); - sign = -sign; - } - - return d; -} - -Matrix4x4 Matrix4x4::Adjoint(std::size_t n) const -{ - if (n > 4) - throw std::runtime_error("Dimension out of range! 0 <= n <= 4"); - - Matrix4x4 adj; - double sign = 1; - - for (std::size_t i = 0; i < n; i++) - for (std::size_t j = 0; j < n; j++) - { - Matrix4x4 cofs = GetCofactors(i, j, n); - - // sign of adj[j][i] positive if sum of row - // and column indexes is even. - sign = ((i + j) % 2 == 0) ? 1 : -1; - - // Interchanging rows and columns to get the - // transpose of the cofactor matrix - adj[j][i] = sign * (cofs.Determinant(n - 1)); - } - - return adj; -} - -Matrix4x4 Matrix4x4::Inverse3x3() const -{ - Matrix4x4 inv; - - double det = Determinant(3); - if (det == 0.0) - throw std::runtime_error("Matrix3x3 not inversible!"); - - Matrix4x4 adj = Adjoint(3); - - for (std::size_t i = 0; i < 3; i++) - for (std::size_t j = 0; j < 3; j++) - inv[i][j] = adj[i][j] / det; - - inv.SetTranslationComponent(-GetTranslationComponent()); - - return inv; -} - -Matrix4x4 Matrix4x4::Inverse4x4() const -{ - Matrix4x4 inv; - - double det = Determinant(4); - if (det == 0.0) - throw std::runtime_error("Matrix4x4 not inversible!"); - - Matrix4x4 adj = Adjoint(4); - - for (std::size_t i = 0; i < 4; i++) - for (std::size_t j = 0; j < 4; j++) - inv[i][j] = adj[i][j] / det; - - return inv; -} - -/* -* END REF -*/ - -bool Matrix4x4::IsInversible3x3() const -{ - return (Determinant(3) != 0); -} - -bool Matrix4x4::IsInversible4x4() const -{ - return (Determinant(4) != 0); -} - -bool Matrix4x4::Similar(const Matrix4x4& other, double epsilon) const -{ - for (std::size_t i = 0; i < 4; i++) - for (std::size_t j = 0; j < 4; j++) - if (!Math::Similar(v[i][j], other[i][j], epsilon)) - return false; - - return true; -} - -namespace Eule -{ - std::ostream& operator<< (std::ostream& os, const Matrix4x4& m) - { - os << std::endl; - - for (std::size_t y = 0; y < 4; y++) - { - for (std::size_t x = 0; x < 4; x++) - os << " | " << m[y][x]; - - os << " |" << std::endl; - } - - return os; - } - - std::wostream& operator<< (std::wostream& os, const Matrix4x4& m) - { - os << std::endl; - - for (std::size_t y = 0; y < 4; y++) - { - for (std::size_t x = 0; x < 4; x++) - os << L" | " << m[y][x]; - - os << L" |" << std::endl; - } - - return os; - } -} - - -/*** ./../Eule/Quaternion.cpp ***/ - -#include -#include -#include - -//#define _EULE_NO_INTRINSICS_ -#ifndef _EULE_NO_INTRINSICS_ -#include -#endif - -using namespace Eule; - -Quaternion::Quaternion() -{ - v = Vector4d(0, 0, 0, 1); - return; -} - -Quaternion::Quaternion(const Vector4d values) -{ - v = values; - return; -} - -Quaternion::Quaternion(const Quaternion& q) -{ - v = q.v; - return; -} - -Quaternion::Quaternion(const Vector3d eulerAngles) -{ - Vector3d eulerRad = eulerAngles * Deg2Rad; - - #ifndef _EULE_NO_INTRINSICS_ - - // Calculate sine and cos values - __m256d __vec = _mm256_set_pd(0, eulerRad.z, eulerRad.y, eulerRad.x); - __vec = _mm256_mul_pd(__vec, _mm256_set1_pd(0.5)); - __m256d __cos; - __m256d __sin = _mm256_sincos_pd(&__cos, __vec); - - // Create multiplication vectors - double sin[4]; - double cos[4]; - - _mm256_storeu_pd(sin, __sin); - _mm256_storeu_pd(cos, __cos); - - __m256d __a = _mm256_set_pd(cos[0], cos[0], sin[0], cos[0]); - __m256d __b = _mm256_set_pd(cos[1], sin[1], cos[1], cos[1]); - __m256d __c = _mm256_set_pd(sin[2], cos[2], cos[2], cos[2]); - - __m256d __d = _mm256_set_pd(sin[0], sin[0], cos[0], sin[0]); - __m256d __e = _mm256_set_pd(sin[1], cos[1], sin[1], sin[1]); - __m256d __f = _mm256_set_pd(cos[2], sin[2], sin[2], sin[2]); - - // Multiply them - __m256d __abc; - __abc = _mm256_mul_pd(__a, __b); - __abc = _mm256_mul_pd(__abc, __c); - - __m256d __def; - __def = _mm256_mul_pd(__d, __e); - __def = _mm256_mul_pd(__def, __f); - - // Extract results - double abc[4]; - double def[4]; - - _mm256_storeu_pd(abc, __abc); - _mm256_storeu_pd(def, __def); - - // Sum them up - v.w = abc[0] + def[0]; - v.x = abc[1] - def[1]; - v.y = abc[2] + def[2]; - v.z = abc[3] - def[3]; - - #else - - const double cy = cos(eulerRad.z * 0.5); - const double sy = sin(eulerRad.z * 0.5); - const double cp = cos(eulerRad.y * 0.5); - const double sp = sin(eulerRad.y * 0.5); - const double cr = cos(eulerRad.x * 0.5); - const double sr = sin(eulerRad.x * 0.5); - - v.w = cr * cp * cy + sr * sp * sy; - v.x = sr * cp * cy - cr * sp * sy; - v.y = cr * sp * cy + sr * cp * sy; - v.z = cr * cp * sy - sr * sp * cy; - - #endif - - return; -} - -Quaternion::~Quaternion() -{ - return; -} - -Quaternion Quaternion::operator= (const Quaternion& q) -{ - InvalidateCache(); - - v = q.v; - - return (*this); -} - -Quaternion Quaternion::operator* (const Quaternion& q) const -{ - return Quaternion(Vector4d( - v.w * q.v.x + v.x * q.v.w + v.y * q.v.z - v.z * q.v.y, - v.w * q.v.y + v.y * q.v.w + v.z * q.v.x - v.x * q.v.z, - v.w * q.v.z + v.z * q.v.w + v.x * q.v.y - v.y * q.v.x, - v.w * q.v.w - v.x * q.v.x - v.y * q.v.y - v.z * q.v.z - )); -} - -Quaternion Quaternion::operator*(const double scale) const -{ - return Quaternion(v * scale); -} - -Quaternion Quaternion::operator/ (Quaternion& q) const -{ - return ((*this) * (q.Inverse())); -} - -Quaternion& Quaternion::operator*= (const Quaternion& q) -{ - InvalidateCache(); - - Vector4d bufr = v; - v.x = bufr.w * q.v.x + bufr.x * q.v.w + bufr.y * q.v.z - bufr.z * q.v.y; // x - v.y = bufr.w * q.v.y + bufr.y * q.v.w + bufr.z * q.v.x - bufr.x * q.v.z; // y - v.z = bufr.w * q.v.z + bufr.z * q.v.w + bufr.x * q.v.y - bufr.y * q.v.x; // z - v.w = bufr.w * q.v.w - bufr.x * q.v.x - bufr.y * q.v.y - bufr.z * q.v.z; // w - - return (*this); -} - -Quaternion& Quaternion::operator*=(const double scale) -{ - InvalidateCache(); - - v *= scale; - return (*this); -} - -Quaternion& Quaternion::operator/= (const Quaternion& q) -{ - InvalidateCache(); - - (*this) = (*this) * q.Inverse(); - return (*this); -} - -Vector3d Quaternion::operator*(const Vector3d& p) const -{ - return RotateVector(p); -} - -bool Quaternion::operator== (const Quaternion& q) const -{ - return (v.Similar(q.v)) || (v.Similar(q.v * -1)); -} - -bool Quaternion::operator!= (const Quaternion& q) const -{ - return (!v.Similar(q.v)) && (!v.Similar(q.v * -1)); -} - -Quaternion Quaternion::Inverse() const -{ - const std::lock_guard lock(lock_inverseCache); - - if (!isCacheUpToDate_inverse) - { - cache_inverse = (Conjugate() * (1.0 / v.SqrMagnitude())).v; - - isCacheUpToDate_inverse = true; - } - - return Quaternion(cache_inverse); -} - -Quaternion Quaternion::Conjugate() const -{ - return Quaternion(Vector4d(-v.x, -v.y, -v.z, v.w)); -} - -Quaternion Quaternion::UnitQuaternion() const -{ - return (*this) * (1.0 / v.Magnitude()); -} - -Vector3d Quaternion::RotateVector(const Vector3d& vec) const -{ - Quaternion pure(Vector4d(vec.x, vec.y, vec.z, 0)); - - //Quaternion f = Conjugate() * pure * (*this); - //Quaternion f = Inverse().Conjugate() * pure * (this->Inverse()); - - - Quaternion f = Inverse() * pure * (*this); - - Vector3d toRet; - toRet.x = f.v.x; - toRet.y = f.v.y; - toRet.z = f.v.z; - - return toRet; -} - -Vector3d Quaternion::ToEulerAngles() const -{ - const std::lock_guard lock(lock_eulerCache); - - if (!isCacheUpToDate_euler) - { - Vector3d euler; - // roll (x-axis rotation) - double sinr_cosp = 2.0 * (v.w * v.x + v.y * v.z); - double cosr_cosp = 1.0 - 2.0 * (v.x * v.x + v.y * v.y); - euler.x = std::atan2(sinr_cosp, cosr_cosp); - - // pitch (y-axis rotation) - double sinp = 2.0 * (v.w * v.y - v.z * v.x); - if (std::abs(sinp) >= 1) - euler.y = std::copysign(PI / 2, sinp); // use 90 degrees if out of range - else - euler.y = std::asin(sinp); - - // yaw (z-axis rotation) - double siny_cosp = 2.0 * (v.w * v.z + v.x * v.y); - double cosy_cosp = 1.0 - 2.0 * (v.y * v.y + v.z * v.z); - euler.z = std::atan2(siny_cosp, cosy_cosp); - - euler *= Rad2Deg; - - cache_euler = euler; - isCacheUpToDate_matrix = true; - } - - return cache_euler; -} - -Matrix4x4 Quaternion::ToRotationMatrix() const -{ - const std::lock_guard lock(lock_matrixCache); - - if (!isCacheUpToDate_matrix) - { - Matrix4x4 m; - - const double sqx = v.x * v.x; - const double sqy = v.y * v.y; - const double sqz = v.z * v.z; - const double sqw = v.w * v.w; - const double x = v.x; - const double y = v.y; - const double z = v.z; - const double w = v.w; - - // invs (inverse square length) is only required if quaternion is not already normalised - double invs = 1.0 / (sqx + sqy + sqz + sqw); - - // since sqw + sqx + sqy + sqz =1/invs*invs - - // yaw (y) - m.c = ((2 * x * z) - (2 * w * y)) * invs; - m.f = (1 - (2 * sqx) - (2 * sqz)) * invs; - m.i = ((2 * x * z) + (2 * w * y)) * invs; - - // pitch (x) - m.a = (1 - (2 * sqy) - (2 * sqz)) * invs; - m.g = ((2 * y * z) + (2 * w * x)) * invs; - m.j = ((2 * y * z) - (2 * w * x)) * invs; - - // roll (z) - m.b = ((2 * x * v.y) + (2 * w * z)) * invs; - m.e = ((2 * x * v.y) - (2 * w * z)) * invs; - m.k = (1 - (2 * sqx) - (2 * sqy)) * invs; - - m.p = 1; - - cache_matrix = m; - isCacheUpToDate_matrix = true; - } - - return cache_matrix; -} - -Vector4d Quaternion::GetRawValues() const -{ - return v; -} - -Quaternion Quaternion::AngleBetween(const Quaternion& other) const -{ - return other * Conjugate(); -} - -void Quaternion::SetRawValues(const Vector4d values) -{ - InvalidateCache(); - - v = values; - - return; -} - -Quaternion Quaternion::Lerp(const Quaternion& other, double t) const -{ - return Quaternion(v.Lerp(other.v, t)).UnitQuaternion(); -} - -void Quaternion::InvalidateCache() -{ - isCacheUpToDate_euler = false; - isCacheUpToDate_matrix = false; - isCacheUpToDate_inverse = false; - - return; -} - -namespace Eule -{ - std::ostream& operator<< (std::ostream& os, const Quaternion& q) - { - os << "[" << q.v << "]"; - return os; - } - - std::wostream& operator<< (std::wostream& os, const Quaternion& q) - { - os << L"[" << q.v << L"]"; - return os; - } -} - - -/*** ./../Eule/Random.cpp ***/ - -#include - -using namespace Eule; - -// Checks if the random number generator is initialized. Does nothing if it is, initializes if it isn't. -#define MAKE_SURE_RNG_IS_INITIALIZED if (!isRngInitialized) InitRng(); - -void Random::InitRng() -{ - // Create truly random source (from hardware events) - std::random_device randomSource; - - // Generate enough truly random values to populate the entire state of the mersenne twister - std::array seedValues; - std::generate_n(seedValues.data(), seedValues.size(), std::ref(randomSource)); - std::seed_seq seedSequence(seedValues.begin(), seedValues.end()); - - // Seed the mersenne twister with these values - rng = std::mt19937(seedSequence); - - isRngInitialized = true; - - return; -} - -// Will return a random double between 0 and 1 -double Random::RandomFloat() -{ - MAKE_SURE_RNG_IS_INITIALIZED; - - return (rng() % 694206942069ll) / 694206942069.0; -} - -// Will return a random unsigned integer. -unsigned int Random::RandomUint() -{ - MAKE_SURE_RNG_IS_INITIALIZED; - - return rng(); -} - -// Will return a random integer -unsigned int Random::RandomInt() -{ - MAKE_SURE_RNG_IS_INITIALIZED; - - // Since this is supposed to return a random value anyways, - // we can let the random uint overflow without any problems. - return (int)rng(); -} - -// Will return a random double within a range -// These bounds are INCLUSIVE! -double Random::RandomRange(double min, double max) -{ - return (RandomFloat() * (max - min)) + min; -} - -// Will return a random integer within a range. This is faster than '(int)RandomRange(x,y)' -// These bounds are INCLUSIVE! -int Random::RandomIntRange(int min, int max) -{ - MAKE_SURE_RNG_IS_INITIALIZED; - - return (rng() % (max + 1 - min)) + min; -} - -bool Random::RandomChance(const double chance) -{ - return RandomFloat() <= chance; -} - -std::mt19937 Random::rng; -bool Random::isRngInitialized = false; - - -/*** ./../Eule/TrapazoidalPrismCollider.cpp ***/ - - -using namespace Eule; - -TrapazoidalPrismCollider::TrapazoidalPrismCollider() -{ - return; -} - -void TrapazoidalPrismCollider::operator=(const TrapazoidalPrismCollider& other) -{ - vertices = other.vertices; - faceNormals = other.faceNormals; - - return; -} - -void TrapazoidalPrismCollider::operator=(TrapazoidalPrismCollider&& other) noexcept -{ - vertices = std::move(other.vertices); - faceNormals = std::move(other.faceNormals); - - return; -} - -const Vector3d& TrapazoidalPrismCollider::GetVertex(std::size_t index) const -{ - return vertices[index]; -} - -void TrapazoidalPrismCollider::SetVertex(std::size_t index, const Vector3d value) -{ - vertices[index] = value; - GenerateNormalsFromVertices(); - return; -} - -void TrapazoidalPrismCollider::GenerateNormalsFromVertices() -{ - faceNormals[(std::size_t)FACE_NORMALS::LEFT] = - (vertices[BACK|LEFT|BOTTOM] - vertices[FRONT|LEFT|BOTTOM]) - .CrossProduct(vertices[FRONT|LEFT|TOP] - vertices[FRONT|LEFT|BOTTOM]); - - faceNormals[(std::size_t)FACE_NORMALS::RIGHT] = - (vertices[FRONT|RIGHT|TOP] - vertices[FRONT|RIGHT|BOTTOM]) - .CrossProduct(vertices[BACK|RIGHT|BOTTOM] - vertices[FRONT|RIGHT|BOTTOM]); - - faceNormals[(std::size_t)FACE_NORMALS::FRONT] = - (vertices[FRONT|LEFT|TOP] - vertices[FRONT|LEFT|BOTTOM]) - .CrossProduct(vertices[FRONT|RIGHT|BOTTOM] - vertices[FRONT|LEFT|BOTTOM]); - - faceNormals[(std::size_t)FACE_NORMALS::BACK] = - (vertices[BACK|RIGHT|BOTTOM] - vertices[BACK|LEFT|BOTTOM]) - .CrossProduct(vertices[BACK|LEFT|TOP] - vertices[BACK|LEFT|BOTTOM]); - - faceNormals[(std::size_t)FACE_NORMALS::TOP] = - (vertices[BACK|LEFT|TOP] - vertices[FRONT|LEFT|TOP]) - .CrossProduct(vertices[FRONT|RIGHT|TOP] - vertices[FRONT|LEFT|TOP]); - - faceNormals[(std::size_t)FACE_NORMALS::BOTTOM] = - (vertices[FRONT|RIGHT|BOTTOM] - vertices[FRONT|LEFT|BOTTOM]) - .CrossProduct(vertices[BACK|LEFT|BOTTOM] - vertices[FRONT|LEFT|BOTTOM]); - - return; -} - -double TrapazoidalPrismCollider::FaceDot(FACE_NORMALS face, const Vector3d& point) const -{ - // This vertex is the one being used twice to calculate the normals - std::size_t coreVertexIdx; - switch (face) - { - case FACE_NORMALS::LEFT: - coreVertexIdx = FRONT|LEFT|BOTTOM; - break; - - case FACE_NORMALS::RIGHT: - coreVertexIdx = FRONT|RIGHT|BOTTOM; - break; - - case FACE_NORMALS::FRONT: - coreVertexIdx = FRONT|LEFT|BOTTOM; - break; - - case FACE_NORMALS::BACK: - coreVertexIdx = BACK|LEFT|BOTTOM; - break; - - case FACE_NORMALS::TOP: - coreVertexIdx = FRONT|LEFT|TOP; - break; - - case FACE_NORMALS::BOTTOM: - coreVertexIdx = FRONT|LEFT|BOTTOM; - break; - } - - if ((std::size_t)face < 6) - return faceNormals[(std::size_t)face].DotProduct(point - vertices[coreVertexIdx]); - return 1; -} - -bool TrapazoidalPrismCollider::Contains(const Vector3d& point) const -{ - for (std::size_t i = 0; i < 6; i++) - if (FaceDot((FACE_NORMALS)i, point) < 0) - return false; - - return true; -} - - -/*** ./../Eule/Vector2.cpp ***/ - - -template -Eule::Vector2::operator Eule::Vector3() const -{ - return Vector3(x, y, 0); -} - -template -Eule::Vector2::operator Eule::Vector4() const -{ - return Vector4(x, y, 0, 0); -} - - -/*** ./../Eule/Vector3.cpp ***/ - - - - - -template -Eule::Vector3::operator Eule::Vector2() const -{ - return Vector2(x, y); -} - -template -Eule::Vector3::operator Eule::Vector4() const -{ - return Vector4(x, y, z, 0); -} - - -/*** ./../Eule/Vector4.cpp ***/ - - -template -Eule::Vector4::operator Eule::Vector2() const -{ - return Vector2(x, y); -} - -template -Eule::Vector4::operator Eule::Vector3() const -{ - return Vector3(x, y, z); -} - diff --git a/INCLUDE/Eule.h b/INCLUDE/Eule.h deleted file mode 100644 index 795ec80..0000000 --- a/INCLUDE/Eule.h +++ /dev/null @@ -1,3274 +0,0 @@ -#pragma once - -/*** ./../Eule/Matrix4x4.h ***/ - -#pragma once -#include -#include -#include - -namespace Eule -{ - template - class Vector3; - typedef Vector3 Vector3d; - - /** 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 - * | # # # # # # # # # # # - * | # a b c d # - * | # # - * | # e f g h # - * | # # - * V # i j k l # - * # # - * # m n o p # - * # # # # # # # # # # # - * - * ``` - * - * Note: This class can also be used to compute regular 4x4 multiplications. Use Multiply4x4() for that. - */ - - class Matrix4x4 - { - public: - Matrix4x4(); - Matrix4x4(const Matrix4x4& other); - Matrix4x4(Matrix4x4&& other) noexcept; - - //! Array holding the matrices values - std::array, 4> v; - - Matrix4x4 operator*(const Matrix4x4& other) const; - void operator*=(const Matrix4x4& other); - - Matrix4x4 operator/(const Matrix4x4& other) const; - void operator/=(const Matrix4x4& other); - - //! Cellwise scaling - Matrix4x4 operator*(const double scalar) const; - //! Cellwise scaling - void operator*=(const double scalar); - - //! Cellwise division - Matrix4x4 operator/(const double denominator) const; - //! Cellwise division - void operator/=(const double denominator); - - //! Cellwise addition - Matrix4x4 operator+(const Matrix4x4& other) const; - //! Cellwise addition - void operator+=(const Matrix4x4& other); - - //! Cellwise subtraction - Matrix4x4 operator-(const Matrix4x4& other) const; - //! Cellwise subtraction - void operator-=(const Matrix4x4& other); - - - std::array& operator[](std::size_t y); - const std::array& 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; - bool operator!=(const Matrix4x4& other); - bool operator!=(const Matrix4x4& other) const; - - //! Will return d,h,l as a Vector3d(x,y,z) - const Vector3d GetTranslationComponent() const; - //! Will set d,h,l from a Vector3d(x,y,z) - void SetTranslationComponent(const Vector3d& trans); - - //! Will return this Matrix4x4 with d,h,l being set to 0 - Matrix4x4 DropTranslationComponents() const; - - //! Will return the 3x3 transpose of this matrix - Matrix4x4 Transpose3x3() const; - - //! Will return the 4x4 transpose of this matrix - Matrix4x4 Transpose4x4() const; - - //! Will return the Matrix4x4 of an actual 4x4 multiplication. operator* only does a 3x3 - Matrix4x4 Multiply4x4(const Matrix4x4& o) const; - - //! Will return the cofactors of this matrix, by dimension n - Matrix4x4 GetCofactors(std::size_t p, std::size_t q, std::size_t n) const; - - //! Will return the determinant, by dimension n - double Determinant(std::size_t n) const; - - //! Will return the adjoint of this matrix, by dimension n - Matrix4x4 Adjoint(std::size_t n) const; - - //! Will return the 3x3-inverse of this matrix. - //! Meaning, the 3x3 component will be inverted, and the translation component will be negated - Matrix4x4 Inverse3x3() const; - - //! Will return the full 4x4-inverse of this matrix - Matrix4x4 Inverse4x4() const; - - //! Will check if the 3x3-component is inversible - bool IsInversible3x3() const; - - //! Will check if the entire matrix is inversible - bool IsInversible4x4() const; - - //! Will compare if two matrices are similar to a certain epsilon value - bool Similar(const Matrix4x4& other, double epsilon = 0.00001) const; - - friend std::ostream& operator<< (std::ostream& os, const Matrix4x4& m); - friend std::wostream& operator<< (std::wostream& os, const Matrix4x4& m); - - // Shorthands - 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]; - }; -} - -/*** ./../Eule/Math.h ***/ - -#pragma once -#include - -namespace Eule -{ - /** Math utility class containing basic functions. - */ - class Math - { - public: - //! Will return the bigger of two values - [[nodiscard]] static constexpr double Max(const double a, const double b); - - //! Will return the smaller of two values - [[nodiscard]] static constexpr double Min(const double a, const double b); - - //! Will return `v`, but at least `min`, and at most `max` - [[nodiscard]] static constexpr double Clamp(const double v, const double min, const double max); - - //! Will return the linear interpolation between `a` and `b` by `t` - [[nodiscard]] static constexpr double Lerp(double a, double b, double t); - - //! Will return the absolute value of `a` - [[nodiscard]] static constexpr double Abs(const double a); - - //! Compares two double values with a given accuracy - [[nodiscard]] static constexpr bool Similar(const double a, const double b, const double epsilon = 0.00001); - - //! Will compute the actual modulo of a fraction. The % operator returns bs for n<0. - //! May throw division-by-zero std::logic_error - [[nodiscard]] static int Mod(const int numerator, const int denominator); - - //! Kind of like \f$sin(counter)\f$, but it oscillates over \f$[a,b]\f$ instead of \f$[-1,1]\f$, by a given speed. - //! Given that \f$speed = 1\f$, 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 \f$speed = 2\f$ would result in \f$counter=0.5\f$ returning `b`. - static double Oscillate(const double a, const double b, const double counter, const double speed); - - private: - // No instanciation! >:( - Math(); - }; - - - - /* These are just the inline methods. They have to lie in the header file. */ - /* The more sophisticated methods are in the .cpp */ - - constexpr inline double Math::Max(double a, double b) - { - return (a > b) ? a : b; - } - - constexpr inline double Math::Min(double a, double b) - { - return (a < b) ? a : b; - } - - constexpr inline double Math::Clamp(double v, double min, double max) - { - return Max(Min(v, max), min); - } - - constexpr inline double Math::Lerp(double a, double b, double t) - { - const double it = 1.0 - t; - return (a * it) + (b * t); - } - - constexpr inline double Math::Abs(const double a) - { - return (a > 0.0) ? a : -a; - } - - constexpr inline bool Math::Similar(const double a, const double b, const double epsilon) - { - return Abs(a - b) <= epsilon; - } -} - -/*** ./../Eule/Vector2.h ***/ - -#pragma once -#include -#include -#include - -//#define _EULE_NO_INTRINSICS_ -#ifndef _EULE_NO_INTRINSICS_ -#include -#endif - -/* - NOTE: - Here you will find bad, unoptimized methods for T=int. - This is because the compiler needs a method for each type in each instantiation of the template! - I can't generalize the methods when heavily optimizing for doubles. - These functions will get called VERY rarely, if ever at all, for T=int, so it's ok. - The T=int instantiation only exists to store a value-pair of two ints. Not so-much as a vector in terms of vector calculus. -*/ - -namespace Eule -{ - template class Vector3; - template class Vector4; - - /** Representation of a 2d vector. - * Contains a lot of utility methods. - */ - template - class Vector2 - { - public: - Vector2() : x{ 0 }, y{ 0 } {} - Vector2(T _x, T _y) : x{ _x }, y{ _y } {} - Vector2(const Vector2& other) = default; - Vector2(Vector2&& other) noexcept = default; - - //! Will compute the dot product to another Vector2 - double DotProduct(const Vector2& other) const; - - //! Will compute the cross product to another Vector2 - double CrossProduct(const Vector2& other) const; - - //! Will compute the square magnitude - double SqrMagnitude() const; - - //! Will compute the magnitude - double Magnitude() const; - - //! Will return the normalization of this vector - [[nodiscard]] Vector2 Normalize() const; - - //! Will normalize this vector - void NormalizeSelf(); - - //! Will scale self.n by scalar.n - Vector2 VectorScale(const Vector2& scalar) const; - - //! Will lerp itself towards other by t - void LerpSelf(const Vector2& other, double t); - - //! Will return a lerp result between this and another vector - [[nodiscard]] Vector2 Lerp(const Vector2& other, double t) const; - - //! Will compare if two vectors are similar to a certain epsilon value - [[nodiscard]] bool Similar(const Vector2& other, double epsilon = 0.00001) const; - - //! Will convert this vector to a Vector2i - [[nodiscard]] Vector2 ToInt() const; - - //! Will convert this vector to a Vector2d - [[nodiscard]] Vector2 ToDouble() const; - - T& operator[](std::size_t idx); - const T& operator[](std::size_t idx) const; - - Vector2 operator+(const Vector2& other) const; - void operator+=(const Vector2& other); - Vector2 operator-(const Vector2& other) const; - void operator-=(const Vector2& other); - Vector2 operator*(const T scale) const; - void operator*=(const T scale); - Vector2 operator/(const T scale) const; - void operator/=(const T scale); - Vector2 operator-() const; - - operator Vector3() const; //! Conversion method - operator Vector4() const; //! Conversion method - - void operator=(const Vector2& other); - void operator=(Vector2&& other) noexcept; - - bool operator==(const Vector2& other) const; - bool operator!=(const Vector2& other) const; - - friend std::ostream& operator<< (std::ostream& os, const Vector2& v) - { - return os << "[x: " << v.x << " y: " << v.y << "]"; - } - friend std::wostream& operator<< (std::wostream& os, const Vector2& v) - { - return os << L"[x: " << v.x << L" y: " << v.y << L"]"; - } - - T x; - T y; - - // Some handy predefines - static const Vector2 up; - static const Vector2 down; - static const Vector2 right; - static const Vector2 left; - static const Vector2 one; - static const Vector2 zero; - }; - - typedef Vector2 Vector2i; - typedef Vector2 Vector2d; - -// Good, optimized chad version for doubles -template<> -double Vector2::DotProduct(const Vector2& other) const -{ - #ifndef _EULE_NO_INTRINSICS_ - - // Move vector components into registers - __m256 __vector_self = _mm256_set_ps(0,0,0,0,0,0, (float)y, (float)x); - __m256 __vector_other = _mm256_set_ps(0,0,0,0,0,0, (float)other.y, (float)other.x); - - // Define bitmask, and execute computation - const int mask = 0x31; // -> 0011 1000 -> use positions 0011 (last 2) of the vectors supplied, and place them in 1000 (first only) element of __dot - __m256 __dot = _mm256_dp_ps(__vector_self, __vector_other, mask); - - // Retrieve result, and return it - float result[8]; - _mm256_storeu_ps(result, __dot); - - return result[0]; - - #else - return (x * other.x) + - (y * other.y); - #endif -} - -// Slow, lame version for intcels -template<> -double Vector2::DotProduct(const Vector2& other) const -{ - int iDot = (x * other.x) + - (y * other.y); - - return (double)iDot; -} - - - -// Good, optimized chad version for doubles -template<> -double Vector2::CrossProduct(const Vector2& other) const -{ - return (x * other.y) - - (y * other.x); -} - -// Slow, lame version for intcels -template<> -double Vector2::CrossProduct(const Vector2& other) const -{ - int iCross = (x * other.y) - - (y * other.x); - - return (double)iCross; -} - - - -// Good, optimized chad version for doubles -template<> -double Vector2::SqrMagnitude() const -{ - // x.DotProduct(x) == x.SqrMagnitude() - return DotProduct(*this); -} - -// Slow, lame version for intcels -template<> -double Vector2::SqrMagnitude() const -{ - int iSqrMag = x*x + y*y; - return (double)iSqrMag; -} - -template -double Vector2::Magnitude() const -{ - return sqrt(SqrMagnitude()); -} - - -template<> -Vector2 Vector2::VectorScale(const Vector2& scalar) const -{ - #ifndef _EULE_NO_INTRINSICS_ - - // Load vectors into registers - __m256d __vector_self = _mm256_set_pd(0, 0, y, x); - __m256d __vector_scalar = _mm256_set_pd(0, 0, scalar.y, scalar.x); - - // Multiply them - __m256d __product = _mm256_mul_pd(__vector_self, __vector_scalar); - - // Retrieve result - double result[4]; - _mm256_storeu_pd(result, __product); - - // Return value - return Vector2( - result[0], - result[1] - ); - - #else - - return Vector2( - x * scalar.x, - y * scalar.y - ); - #endif -} - -template<> -Vector2 Vector2::VectorScale(const Vector2& scalar) const -{ - return Vector2( - x * scalar.x, - y * scalar.y - ); -} - - -template -Vector2 Vector2::Normalize() const -{ - Vector2 norm(x, y); - norm.NormalizeSelf(); - - return norm; -} - -// Method to normalize a Vector2d -template<> -void Vector2::NormalizeSelf() -{ - double length = Magnitude(); - - // Prevent division by 0 - if (length == 0) - { - x = 0; - y = 0; - } - else - { - #ifndef _EULE_NO_INTRINSICS_ - - // Load vector and length into registers - __m256d __vec = _mm256_set_pd(0, 0, y, x); - __m256d __len = _mm256_set1_pd(length); - - // Divide - __m256d __prod = _mm256_div_pd(__vec, __len); - - // Extract and set values - double prod[4]; - _mm256_storeu_pd(prod, __prod); - - x = prod[0]; - y = prod[1]; - - #else - - x /= length; - y /= length; - - #endif - } - - return; -} - -// You can't normalize an int vector, ffs! -// But we need an implementation for T=int -template<> -void Vector2::NormalizeSelf() -{ - std::cerr << "Stop normalizing int-vectors!!" << std::endl; - x = 0; - y = 0; - - return; -} - - -// Good, optimized chad version for doubles -template<> -void Vector2::LerpSelf(const Vector2& other, double t) -{ - const double it = 1.0 - t; // Inverse t - - #ifndef _EULE_NO_INTRINSICS_ - - // Move vector components and factors into registers - __m256d __vector_self = _mm256_set_pd(0, 0, y, x); - __m256d __vector_other = _mm256_set_pd(0, 0, other.y, other.x); - __m256d __t = _mm256_set1_pd(t); - __m256d __it = _mm256_set1_pd(it); // Inverse t - - // Procedure: - // (__vector_self * __it) + (__vector_other * __t) - - __m256d __sum = _mm256_set1_pd(0); // this will hold the sum of the two multiplications - - __sum = _mm256_fmadd_pd(__vector_self, __it, __sum); - __sum = _mm256_fmadd_pd(__vector_other, __t, __sum); - - // Retrieve result, and apply it - double sum[4]; - _mm256_storeu_pd(sum, __sum); - - x = sum[0]; - y = sum[1]; - - #else - - x = it * x + t * other.x; - y = it * y + t * other.y; - - #endif - - return; -} - - - -// Slow, lame version for intcels -template<> -void Vector2::LerpSelf(const Vector2& other, double t) -{ - const double it = 1.0 - t; // Inverse t - - x = (int)(it * (double)x + t * (double)other.x); - y = (int)(it * (double)y + t * (double)other.y); - - return; -} - -template<> -Vector2 Vector2::Lerp(const Vector2& other, double t) const -{ - Vector2d copy(*this); - copy.LerpSelf(other, t); - - return copy; -} - -template<> -Vector2 Vector2::Lerp(const Vector2& other, double t) const -{ - Vector2d copy(this->ToDouble()); - copy.LerpSelf(other.ToDouble(), t); - - return copy; -} - - - -template -T& Vector2::operator[](std::size_t idx) -{ - switch (idx) - { - case 0: - return x; - case 1: - return y; - default: - throw std::out_of_range("Array descriptor on Vector2 out of range!"); - } -} - -template -const T& Vector2::operator[](std::size_t idx) const -{ - switch (idx) - { - case 0: - return x; - case 1: - return y; - default: - throw std::out_of_range("Array descriptor on Vector2 out of range!"); - } -} - -template -bool Vector2::Similar(const Vector2& other, double epsilon) const -{ - return - (::Eule::Math::Similar(x, other.x, epsilon)) && - (::Eule::Math::Similar(y, other.y, epsilon)) - ; -} - -template -Vector2 Vector2::ToInt() const -{ - return Vector2((int)x, (int)y); -} - -template -Vector2 Vector2::ToDouble() const -{ - return Vector2((double)x, (double)y); -} - -template<> -Vector2 Vector2::operator+(const Vector2& other) const -{ - #ifndef _EULE_NO_INTRINSICS_ - - // Move vector components and factors into registers - __m256d __vector_self = _mm256_set_pd(0, 0, y, x); - __m256d __vector_other = _mm256_set_pd(0, 0, other.y, other.x); - - // Add the components - __m256d __sum = _mm256_add_pd(__vector_self, __vector_other); - - // Retrieve and return these values - double sum[4]; - _mm256_storeu_pd(sum, __sum); - - return Vector2( - sum[0], - sum[1] - ); - - #else - - return Vector2( - x + other.x, - y + other.y - ); - #endif -} - -template -Vector2 Vector2::operator+(const Vector2& other) const -{ - return Vector2( - x + other.x, - y + other.y - ); -} - - - -template<> -void Vector2::operator+=(const Vector2& other) -{ - #ifndef _EULE_NO_INTRINSICS_ - - // Move vector components and factors into registers - __m256d __vector_self = _mm256_set_pd(0, 0, y, x); - __m256d __vector_other = _mm256_set_pd(0, 0, other.y, other.x); - - // Add the components - __m256d __sum = _mm256_add_pd(__vector_self, __vector_other); - - // Retrieve and apply these values - double sum[4]; - _mm256_storeu_pd(sum, __sum); - - x = sum[0]; - y = sum[1]; - - #else - - x += other.x; - y += other.y; - - #endif - - return; -} - -template -void Vector2::operator+=(const Vector2& other) -{ - x += other.x; - y += other.y; - return; -} - - - -template<> -Vector2 Vector2::operator-(const Vector2& other) const -{ - #ifndef _EULE_NO_INTRINSICS_ - - // Move vector components and factors into registers - __m256d __vector_self = _mm256_set_pd(0, 0, y, x); - __m256d __vector_other = _mm256_set_pd(0, 0, other.y, other.x); - - // Subtract the components - __m256d __diff = _mm256_sub_pd(__vector_self, __vector_other); - - // Retrieve and return these values - double diff[4]; - _mm256_storeu_pd(diff, __diff); - - return Vector2( - diff[0], - diff[1] - ); - - #else - - return Vector2( - x - other.x, - y - other.y - ); - #endif -} - -template -Vector2 Vector2::operator-(const Vector2& other) const -{ - return Vector2( - x - other.x, - y - other.y - ); -} - - - -template<> -void Vector2::operator-=(const Vector2& other) -{ - #ifndef _EULE_NO_INTRINSICS_ - - // Move vector components and factors into registers - __m256d __vector_self = _mm256_set_pd(0, 0, y, x); - __m256d __vector_other = _mm256_set_pd(0, 0, other.y, other.x); - - // Subtract the components - __m256d __diff = _mm256_sub_pd(__vector_self, __vector_other); - - // Retrieve and apply these values - double diff[4]; - _mm256_storeu_pd(diff, __diff); - - x = diff[0]; - y = diff[1]; - - #else - - x -= other.x; - y -= other.y; - - #endif - - return; -} - -template -void Vector2::operator-=(const Vector2& other) -{ - x -= other.x; - y -= other.y; - return; -} - - - -template<> -Vector2 Vector2::operator*(const double scale) const -{ - #ifndef _EULE_NO_INTRINSICS_ - - // Move vector components and factors into registers - __m256d __vector_self = _mm256_set_pd(0, 0, y, x); - __m256d __scalar = _mm256_set1_pd(scale); - - // Multiply the components - __m256d __prod = _mm256_mul_pd(__vector_self, __scalar); - - // Retrieve and return these values - double prod[4]; - _mm256_storeu_pd(prod, __prod); - - return Vector2( - prod[0], - prod[1] - ); - - #else - - return Vector2( - x * scale, - y * scale - ); - - #endif -} - -template -Vector2 Vector2::operator*(const T scale) const -{ - return Vector2( - x * scale, - y * scale - ); -} - - - -template<> -void Vector2::operator*=(const double scale) -{ - #ifndef _EULE_NO_INTRINSICS_ - - // Move vector components and factors into registers - __m256d __vector_self = _mm256_set_pd(0, 0, y, x); - __m256d __scalar = _mm256_set1_pd(scale); - - // Multiply the components - __m256d __prod = _mm256_mul_pd(__vector_self, __scalar); - - // Retrieve and apply these values - double prod[4]; - _mm256_storeu_pd(prod, __prod); - - x = prod[0]; - y = prod[1]; - - #else - - x *= scale; - y *= scale; - - #endif - - return; -} - -template -void Vector2::operator*=(const T scale) -{ - x *= scale; - y *= scale; - return; -} - - - -template<> -Vector2 Vector2::operator/(const double scale) const -{ - #ifndef _EULE_NO_INTRINSICS_ - - // Move vector components and factors into registers - __m256d __vector_self = _mm256_set_pd(0, 0, y, x); - __m256d __scalar = _mm256_set1_pd(scale); - - // Divide the components - __m256d __prod = _mm256_div_pd(__vector_self, __scalar); - - // Retrieve and return these values - double prod[4]; - _mm256_storeu_pd(prod, __prod); - - return Vector2( - prod[0], - prod[1] - ); - - #else - - return Vector2( - x / scale, - y / scale - ); - - #endif -} - -template -Vector2 Vector2::operator/(const T scale) const -{ - return Vector2( - x / scale, - y / scale - ); -} - - - -template<> -void Vector2::operator/=(const double scale) -{ - #ifndef _EULE_NO_INTRINSICS_ - - // Move vector components and factors into registers - __m256d __vector_self = _mm256_set_pd(0, 0, y, x); - __m256d __scalar = _mm256_set1_pd(scale); - - // Divide the components - __m256d __prod = _mm256_div_pd(__vector_self, __scalar); - - // Retrieve and apply these values - double prod[4]; - _mm256_storeu_pd(prod, __prod); - - x = prod[0]; - y = prod[1]; - - #else - - x /= scale; - y /= scale; - - #endif - return; -} - -template -void Vector2::operator/=(const T scale) -{ - x /= scale; - y /= scale; - return; -} - - - -template -void Vector2::operator=(const Vector2& other) -{ - x = other.x; - y = other.y; - - return; -} - -template -void Vector2::operator=(Vector2&& other) noexcept -{ - x = std::move(other.x); - y = std::move(other.y); - - return; -} - -template -bool Vector2::operator==(const Vector2& other) const -{ - return - (x == other.x) && - (y == other.y); -} - -template -bool Vector2::operator!=(const Vector2& other) const -{ - return !operator==(other); -} - -template -Vector2 Vector2::operator-() const -{ - return Vector2( - -x, - -y - ); -} - -template class Vector2; -template class Vector2; - -// Some handy predefines -template -const Vector2 Vector2::up(0, 1); -template -const Vector2 Vector2::down(0, -1); -template -const Vector2 Vector2::right(1, 0); -template -const Vector2 Vector2::left(-1, 0); -template -const Vector2 Vector2::one(1, 1); -template -const Vector2 Vector2::zero(0, 0); -} - -/*** ./../Eule/Vector3.h ***/ - -#pragma once -#include -#include -#include -#include - -#include - -//#define _EULE_NO_INTRINSICS_ -#ifndef _EULE_NO_INTRINSICS_ -#include -#endif - -/* - NOTE: - Here you will find bad, unoptimized methods for T=int. - This is because the compiler needs a method for each type in each instantiation of the template! - I can't generalize the methods when heavily optimizing for doubles. - These functions will get called VERY rarely, if ever at all, for T=int, so it's ok. - The T=int instantiation only exists to store a value-pair of two ints. Not so-much as a vector in terms of vector calculus. -*/ - -namespace Eule -{ - template class Vector2; - template class Vector4; - - /** Representation of a 3d vector. - * Contains a lot of utility methods. - */ - template - class Vector3 - { - public: - Vector3() : x{ 0 }, y{ 0 }, z{ 0 } {} - Vector3(T _x, T _y, T _z) : x{ _x }, y{ _y }, z{ _z } {} - Vector3(const Vector3& other) = default; - Vector3(Vector3&& other) noexcept = default; - - //! Will compute the dot product to another Vector3 - double DotProduct(const Vector3& other) const; - - //! Will compute the cross product to another Vector3 - Vector3 CrossProduct(const Vector3& other) const; - - //! Will compute the square magnitude - double SqrMagnitude() const; - - //! Will compute the magnitude - double Magnitude() const; - - //! Will return the normalization of this vector - [[nodiscard]] Vector3 Normalize() const; - - //! Will normalize this vector - void NormalizeSelf(); - - //! Will scale self.n by scalar.n - [[nodiscard]] Vector3 VectorScale(const Vector3& scalar) const; - - //! Will lerp itself towards other by t - void LerpSelf(const Vector3& other, double t); - - //! Will return a lerp result between this and another vector - [[nodiscard]] Vector3 Lerp(const Vector3& other, double t) const; - - //! Will compare if two vectors are similar to a certain epsilon value - [[nodiscard]] bool Similar(const Vector3& other, double epsilon = 0.00001) const; - - //! Will convert this vector to a Vector3i - [[nodiscard]] Vector3 ToInt() const; - - //! Will convert this vector to a Vector3d - [[nodiscard]] Vector3 ToDouble() const; - - T& operator[](std::size_t idx); - const T& operator[](std::size_t idx) const; - - Vector3 operator+(const Vector3& other) const; - void operator+=(const Vector3& other); - Vector3 operator-(const Vector3& other) const; - void operator-=(const Vector3& other); - Vector3 operator*(const T scale) const; - void operator*=(const T scale); - Vector3 operator/(const T scale) const; - void operator/=(const T scale); - Vector3 operator*(const Matrix4x4& mat) const; - void operator*=(const Matrix4x4& mat); - Vector3 operator-() const; - - operator Vector2() const; //! Conversion method - operator Vector4() const; //! Conversion method - - void operator=(const Vector3& other); - void operator=(Vector3&& other) noexcept; - - bool operator==(const Vector3& other) const; - bool operator!=(const Vector3& other) const; - - friend std::ostream& operator << (std::ostream& os, const Vector3& v) - { - return os << "[x: " << v.x << " y: " << v.y << " z: " << v.z << "]"; - } - friend std::wostream& operator << (std::wostream& os, const Vector3& v) - { - return os << L"[x: " << v.x << L" y: " << v.y << L" z: " << v.z << L"]"; - } - - T x; - T y; - T z; - - // Some handy predefines - static const Vector3 up; - static const Vector3 down; - static const Vector3 right; - static const Vector3 left; - static const Vector3 forward; - static const Vector3 backward; - static const Vector3 one; - static const Vector3 zero; - }; - - typedef Vector3 Vector3i; - typedef Vector3 Vector3d; - - // Good, optimized chad version for doubles -template<> -double Vector3::DotProduct(const Vector3& other) const -{ - #ifndef _EULE_NO_INTRINSICS_ - - // Move vector components into registers - __m256 __vector_self = _mm256_set_ps(0,0,0,0,0, (float)z, (float)y, (float)x); - __m256 __vector_other = _mm256_set_ps(0,0,0,0,0, (float)other.z, (float)other.y, (float)other.x); - - // Define bitmask, and execute computation - const int mask = 0x71; // -> 0111 1000 -> use positions 0111 (last 3) of the vectors supplied, and place them in 1000 (first only) element of __dot - __m256 __dot = _mm256_dp_ps(__vector_self, __vector_other, mask); - - // Retrieve result, and return it - float result[8]; - _mm256_storeu_ps(result, __dot); - - return result[0]; - - #else - return (x * other.x) + - (y * other.y) + - (z * other.z); - #endif -} - -// Slow, lame version for intcels -template<> -double Vector3::DotProduct(const Vector3& other) const -{ - int iDot = (x * other.x) + (y * other.y) + (z * other.z); - return (double)iDot; -} - - - -// Good, optimized chad version for doubles -template<> -Vector3 Vector3::CrossProduct(const Vector3& other) const -{ - Vector3 cp; - cp.x = (y * other.z) - (z * other.y); - cp.y = (z * other.x) - (x * other.z); - cp.z = (x * other.y) - (y * other.x); - - return cp; -} - -// Slow, lame version for intcels -template<> -Vector3 Vector3::CrossProduct(const Vector3& other) const -{ - Vector3 cp; - cp.x = ((double)y * (double)other.z) - ((double)z * (double)other.y); - cp.y = ((double)z * (double)other.x) - ((double)x * (double)other.z); - cp.z = ((double)x * (double)other.y) - ((double)y * (double)other.x); - - return cp; -} - - - -// Good, optimized chad version for doubles -template<> -double Vector3::SqrMagnitude() const -{ - // x.DotProduct(x) == x.SqrMagnitude() - return DotProduct(*this); -} - -// Slow, lame version for intcels -template<> -double Vector3::SqrMagnitude() const -{ - int iSqrMag = x*x + y*y + z*z; - return (double)iSqrMag; -} - -template -double Vector3::Magnitude() const -{ - return sqrt(SqrMagnitude()); -} - - - -template<> -Vector3 Vector3::VectorScale(const Vector3& scalar) const -{ - #ifndef _EULE_NO_INTRINSICS_ - - // Load vectors into registers - __m256d __vector_self = _mm256_set_pd(0, z, y, x); - __m256d __vector_scalar = _mm256_set_pd(0, scalar.z, scalar.y, scalar.x); - - // Multiply them - __m256d __product = _mm256_mul_pd(__vector_self, __vector_scalar); - - // Retrieve result - double result[4]; - _mm256_storeu_pd(result, __product); - - // Return value - return Vector3( - result[0], - result[1], - result[2] - ); - - #else - - return Vector3( - x * scalar.x, - y * scalar.y, - z * scalar.z - ); - - #endif -} - -template<> -Vector3 Vector3::VectorScale(const Vector3& scalar) const -{ - return Vector3( - x * scalar.x, - y * scalar.y, - z * scalar.z - ); -} - - - -template -Vector3 Vector3::Normalize() const -{ - Vector3 norm(x, y, z); - norm.NormalizeSelf(); - - return norm; -} - -// Method to normalize a Vector3d -template<> -void Vector3::NormalizeSelf() -{ - const double length = Magnitude(); - - // Prevent division by 0 - if (length == 0) - { - x = 0; - y = 0; - z = 0; - } - else - { - #ifndef _EULE_NO_INTRINSICS_ - - // Load vector and length into registers - __m256d __vec = _mm256_set_pd(0, z, y, x); - __m256d __len = _mm256_set1_pd(length); - - // Divide - __m256d __prod = _mm256_div_pd(__vec, __len); - - // Extract and set values - double prod[4]; - _mm256_storeu_pd(prod, __prod); - - x = prod[0]; - y = prod[1]; - z = prod[2]; - - #else - - x /= length; - y /= length; - z /= length; - - #endif - } - - return; -} - -// You can't normalize an int vector, ffs! -// But we need an implementation for T=int -template<> -void Vector3::NormalizeSelf() -{ - std::cerr << "Stop normalizing int-vectors!!" << std::endl; - x = 0; - y = 0; - z = 0; - - return; -} - - - -template -bool Vector3::Similar(const Vector3& other, double epsilon) const -{ - return - (::Eule::Math::Similar(x, other.x, epsilon)) && - (::Eule::Math::Similar(y, other.y, epsilon)) && - (::Eule::Math::Similar(z, other.z, epsilon)) - ; -} - -template -Vector3 Vector3::ToInt() const -{ - return Vector3((int)x, (int)y, (int)z); -} - -template -Vector3 Vector3::ToDouble() const -{ - return Vector3((double)x, (double)y, (double)z); -} - -template -T& Vector3::operator[](std::size_t idx) -{ - switch (idx) - { - case 0: - return x; - case 1: - return y; - case 2: - return z; - default: - throw std::out_of_range("Array descriptor on Vector3 out of range!"); - } -} - -template -const T& Vector3::operator[](std::size_t idx) const -{ - switch (idx) - { - case 0: - return x; - case 1: - return y; - case 2: - return z; - default: - throw std::out_of_range("Array descriptor on Vector3 out of range!"); - } -} - - - -// Good, optimized chad version for doubles -template<> -void Vector3::LerpSelf(const Vector3& other, double t) -{ - const double it = 1.0 - t; // Inverse t - - #ifndef _EULE_NO_INTRINSICS_ - - // Move vector components and factors into registers - __m256d __vector_self = _mm256_set_pd(0, z, y, x); - __m256d __vector_other = _mm256_set_pd(0, other.z, other.y, other.x); - __m256d __t = _mm256_set1_pd(t); - __m256d __it = _mm256_set1_pd(it); // Inverse t - - // Procedure: - // (__vector_self * __it) + (__vector_other * __t) - - __m256d __sum = _mm256_set1_pd(0); // this will hold the sum of the two multiplications - - __sum = _mm256_fmadd_pd(__vector_self, __it, __sum); - __sum = _mm256_fmadd_pd(__vector_other, __t, __sum); - - // Retrieve result, and apply it - double sum[4]; - _mm256_storeu_pd(sum, __sum); - - x = sum[0]; - y = sum[1]; - z = sum[2]; - - #else - - x = it*x + t*other.x; - y = it*y + t*other.y; - z = it*z + t*other.z; - - #endif - - return; -} - - - -// Slow, lame version for intcels -template<> -void Vector3::LerpSelf(const Vector3& other, double t) -{ - const double it = 1.0 - t; // Inverse t - - x = (int)(it * (double)x + t * (double)other.x); - y = (int)(it * (double)y + t * (double)other.y); - z = (int)(it * (double)z + t * (double)other.z); - - return; -} - -template<> -Vector3 Vector3::Lerp(const Vector3& other, double t) const -{ - Vector3d copy(*this); - copy.LerpSelf(other, t); - - return copy; -} - -template<> -Vector3 Vector3::Lerp(const Vector3& other, double t) const -{ - Vector3d copy(this->ToDouble()); - copy.LerpSelf(other.ToDouble(), t); - - return copy; -} - - - -template<> -Vector3 Vector3::operator+(const Vector3& other) const -{ - #ifndef _EULE_NO_INTRINSICS_ - - // Move vector components and factors into registers - __m256d __vector_self = _mm256_set_pd(0, z, y, x); - __m256d __vector_other = _mm256_set_pd(0, other.z, other.y, other.x); - - // Add the components - __m256d __sum = _mm256_add_pd(__vector_self, __vector_other); - - // Retrieve and return these values - double sum[4]; - _mm256_storeu_pd(sum, __sum); - - return Vector3( - sum[0], - sum[1], - sum[2] - ); - - #else - - return Vector3( - x + other.x, - y + other.y, - z + other.z - ); - #endif -} - -template -Vector3 Vector3::operator+(const Vector3& other) const -{ - return Vector3( - x + other.x, - y + other.y, - z + other.z - ); -} - - - -template<> -void Vector3::operator+=(const Vector3& other) -{ - #ifndef _EULE_NO_INTRINSICS_ - - // Move vector components and factors into registers - __m256d __vector_self = _mm256_set_pd(0, z, y, x); - __m256d __vector_other = _mm256_set_pd(0, other.z, other.y, other.x); - - // Add the components - __m256d __sum = _mm256_add_pd(__vector_self, __vector_other); - - // Retrieve and apply these values - double sum[4]; - _mm256_storeu_pd(sum, __sum); - - x = sum[0]; - y = sum[1]; - z = sum[2]; - - #else - - x += other.x; - y += other.y; - z += other.z; - - #endif - - return; -} - -template -void Vector3::operator+=(const Vector3& other) -{ - x += other.x; - y += other.y; - z += other.z; - return; -} - - - -template<> -Vector3 Vector3::operator-(const Vector3& other) const -{ - #ifndef _EULE_NO_INTRINSICS_ - - // Move vector components and factors into registers - __m256d __vector_self = _mm256_set_pd(0, z, y, x); - __m256d __vector_other = _mm256_set_pd(0, other.z, other.y, other.x); - - // Subtract the components - __m256d __diff = _mm256_sub_pd(__vector_self, __vector_other); - - // Retrieve and return these values - double diff[4]; - _mm256_storeu_pd(diff, __diff); - - return Vector3( - diff[0], - diff[1], - diff[2] - ); - - #else - - return Vector3( - x - other.x, - y - other.y, - z - other.z - ); - #endif -} - -template -Vector3 Vector3::operator-(const Vector3& other) const -{ - return Vector3( - x - other.x, - y - other.y, - z - other.z - ); -} - - - -template<> -void Vector3::operator-=(const Vector3& other) -{ - #ifndef _EULE_NO_INTRINSICS_ - - // Move vector components and factors into registers - __m256d __vector_self = _mm256_set_pd(0, z, y, x); - __m256d __vector_other = _mm256_set_pd(0, other.z, other.y, other.x); - - // Subtract the components - __m256d __diff = _mm256_sub_pd(__vector_self, __vector_other); - - // Retrieve and apply these values - double diff[4]; - _mm256_storeu_pd(diff, __diff); - - x = diff[0]; - y = diff[1]; - z = diff[2]; - - #else - - x -= other.x; - y -= other.y; - z -= other.z; - - #endif - - return; -} - -template -void Vector3::operator-=(const Vector3& other) -{ - x -= other.x; - y -= other.y; - z -= other.z; - return; -} - - - -template<> -Vector3 Vector3::operator*(const double scale) const -{ - #ifndef _EULE_NO_INTRINSICS_ - - // Move vector components and factors into registers - __m256d __vector_self = _mm256_set_pd(0, z, y, x); - __m256d __scalar = _mm256_set1_pd(scale); - - // Multiply the components - __m256d __prod = _mm256_mul_pd(__vector_self, __scalar); - - // Retrieve and return these values - double prod[4]; - _mm256_storeu_pd(prod, __prod); - - return Vector3( - prod[0], - prod[1], - prod[2] - ); - - #else - - return Vector3( - x * scale, - y * scale, - z * scale - ); - - #endif -} - -template -Vector3 Vector3::operator*(const T scale) const -{ - return Vector3( - x * scale, - y * scale, - z * scale - ); -} - - - -template<> -void Vector3::operator*=(const double scale) -{ - #ifndef _EULE_NO_INTRINSICS_ - - // Move vector components and factors into registers - __m256d __vector_self = _mm256_set_pd(0, z, y, x); - __m256d __scalar = _mm256_set1_pd(scale); - - // Multiply the components - __m256d __prod = _mm256_mul_pd(__vector_self, __scalar); - - // Retrieve and apply these values - double prod[4]; - _mm256_storeu_pd(prod, __prod); - - x = prod[0]; - y = prod[1]; - z = prod[2]; - - #else - - x *= scale; - y *= scale; - z *= scale; - - #endif - - return; -} - -template -void Vector3::operator*=(const T scale) -{ - x *= scale; - y *= scale; - z *= scale; - return; -} - - - -template<> -Vector3 Vector3::operator/(const double scale) const -{ - #ifndef _EULE_NO_INTRINSICS_ - - // Move vector components and factors into registers - __m256d __vector_self = _mm256_set_pd(0, z, y, x); - __m256d __scalar = _mm256_set1_pd(scale); - - // Divide the components - __m256d __prod = _mm256_div_pd(__vector_self, __scalar); - - // Retrieve and return these values - double prod[4]; - _mm256_storeu_pd(prod, __prod); - - return Vector3( - prod[0], - prod[1], - prod[2] - ); - - #else - - return Vector3( - x / scale, - y / scale, - z / scale - ); - - #endif -} - -template -Vector3 Vector3::operator/(const T scale) const -{ - return Vector3( - x / scale, - y / scale, - z / scale - ); -} - - - -template<> -void Vector3::operator/=(const double scale) -{ - #ifndef _EULE_NO_INTRINSICS_ - - // Move vector components and factors into registers - __m256d __vector_self = _mm256_set_pd(0, z, y, x); - __m256d __scalar = _mm256_set1_pd(scale); - - // Divide the components - __m256d __prod = _mm256_div_pd(__vector_self, __scalar); - - // Retrieve and apply these values - double prod[4]; - _mm256_storeu_pd(prod, __prod); - - x = prod[0]; - y = prod[1]; - z = prod[2]; - - #else - - x /= scale; - y /= scale; - z /= scale; - - #endif - return; -} - -template -void Vector3::operator/=(const T scale) -{ - x /= scale; - y /= scale; - z /= scale; - return; -} - - -// Good, optimized chad version for doubles -template<> -Vector3 Vector3::operator*(const Matrix4x4& mat) const -{ - Vector3 newVec; - - #ifndef _EULE_NO_INTRINSICS_ - // Store x, y, and z values - __m256d __vecx = _mm256_set1_pd(x); - __m256d __vecy = _mm256_set1_pd(y); - __m256d __vecz = _mm256_set1_pd(z); - - // Store matrix values - __m256d __mat_row0 = _mm256_set_pd(mat[0][0], mat[1][0], mat[2][0], 0); - __m256d __mat_row1 = _mm256_set_pd(mat[0][1], mat[1][1], mat[2][1], 0); - __m256d __mat_row2 = _mm256_set_pd(mat[0][2], mat[1][2], mat[2][2], 0); - - // Multiply x, y, z and matrix values - __m256d __mul_vecx_row0 = _mm256_mul_pd(__vecx, __mat_row0); - __m256d __mul_vecy_row1 = _mm256_mul_pd(__vecy, __mat_row1); - __m256d __mul_vecz_row2 = _mm256_mul_pd(__vecz, __mat_row2); - - // Sum up the products - __m256d __sum = _mm256_add_pd(__mul_vecx_row0, _mm256_add_pd(__mul_vecy_row1, __mul_vecz_row2)); - - // Store translation values - __m256d __translation = _mm256_set_pd(mat[0][3], mat[1][3], mat[2][3], 0); - - // Add the translation values - __m256d __final = _mm256_add_pd(__sum, __translation); - - double dfinal[4]; - - _mm256_storeu_pd(dfinal, __final); - - newVec.x = dfinal[3]; - newVec.y = dfinal[2]; - newVec.z = dfinal[1]; - - #else - // Rotation, Scaling - newVec.x = (mat[0][0] * x) + (mat[0][1] * y) + (mat[0][2] * z); - newVec.y = (mat[1][0] * x) + (mat[1][1] * y) + (mat[1][2] * z); - newVec.z = (mat[2][0] * x) + (mat[2][1] * y) + (mat[2][2] * z); - - // Translation - newVec.x += mat[0][3]; - newVec.y += mat[1][3]; - newVec.z += mat[2][3]; - #endif - - return newVec; -} - -// Slow, lame version for intcels -template<> -Vector3 Vector3::operator*(const Matrix4x4& mat) const -{ - Vector3 newVec; - - // Rotation, Scaling - newVec.x = (mat[0][0] * x) + (mat[0][1] * y) + (mat[0][2] * z); - newVec.y = (mat[1][0] * x) + (mat[1][1] * y) + (mat[1][2] * z); - newVec.z = (mat[2][0] * x) + (mat[2][1] * y) + (mat[2][2] * z); - - // Translation - newVec.x += mat[0][3]; - newVec.y += mat[1][3]; - newVec.z += mat[2][3]; - - return Vector3( - (int)newVec.x, - (int)newVec.y, - (int)newVec.z - ); -} - - - -// Good, optimized chad version for doubles -template<> -void Vector3::operator*=(const Matrix4x4& mat) -{ - #ifndef _EULE_NO_INTRINSICS_ - // Store x, y, and z values - __m256d __vecx = _mm256_set1_pd(x); - __m256d __vecy = _mm256_set1_pd(y); - __m256d __vecz = _mm256_set1_pd(z); - - // Store matrix values - __m256d __mat_row0 = _mm256_set_pd(mat[0][0], mat[1][0], mat[2][0], 0); - __m256d __mat_row1 = _mm256_set_pd(mat[0][1], mat[1][1], mat[2][1], 0); - __m256d __mat_row2 = _mm256_set_pd(mat[0][2], mat[1][2], mat[2][2], 0); - - // Multiply x, y, z and matrix values - __m256d __mul_vecx_row0 = _mm256_mul_pd(__vecx, __mat_row0); - __m256d __mul_vecy_row1 = _mm256_mul_pd(__vecy, __mat_row1); - __m256d __mul_vecz_row2 = _mm256_mul_pd(__vecz, __mat_row2); - - // Sum up the products - __m256d __sum = _mm256_add_pd(__mul_vecx_row0, _mm256_add_pd(__mul_vecy_row1, __mul_vecz_row2)); - - // Store translation values - __m256d __translation = _mm256_set_pd(mat[0][3], mat[1][3], mat[2][3], 0); - - // Add the translation values - __m256d __final = _mm256_add_pd(__sum, __translation); - - double dfinal[4]; - - _mm256_storeu_pd(dfinal, __final); - - x = dfinal[3]; - y = dfinal[2]; - z = dfinal[1]; - - #else - Vector3 buffer = *this; - x = (mat[0][0] * buffer.x) + (mat[0][1] * buffer.y) + (mat[0][2] * buffer.z); - y = (mat[1][0] * buffer.x) + (mat[1][1] * buffer.y) + (mat[1][2] * buffer.z); - z = (mat[2][0] * buffer.x) + (mat[2][1] * buffer.y) + (mat[2][2] * buffer.z); - - // Translation - x += mat[0][3]; - y += mat[1][3]; - z += mat[2][3]; - #endif - - return; -} - -template -Vector3 Vector3::operator-() const -{ - return Vector3( - -x, - -y, - -z - ); -} - -template -void Vector3::operator=(const Vector3& other) -{ - x = other.x; - y = other.y; - z = other.z; - - return; -} - -template -void Vector3::operator=(Vector3&& other) noexcept -{ - x = std::move(other.x); - y = std::move(other.y); - z = std::move(other.z); - - return; -} - -// Slow, lame version for intcels -template<> -void Vector3::operator*=(const Matrix4x4& mat) -{ - Vector3 buffer(x, y, z); - - x = (int)((mat[0][0] * buffer.x) + (mat[0][1] * buffer.y) + (mat[0][2] * buffer.z)); - y = (int)((mat[1][0] * buffer.x) + (mat[1][1] * buffer.y) + (mat[1][2] * buffer.z)); - z = (int)((mat[2][0] * buffer.x) + (mat[2][1] * buffer.y) + (mat[2][2] * buffer.z)); - - // Translation - x += (int)mat[0][3]; - y += (int)mat[1][3]; - z += (int)mat[2][3]; - - return; -} - - - -template -bool Vector3::operator==(const Vector3& other) const -{ - return - (x == other.x) && - (y == other.y) && - (z == other.z); -} - -template -bool Vector3::operator!=(const Vector3& other) const -{ - return !operator==(other); -} - -template class Vector3; -template class Vector3; - -// Some handy predefines -template -const Vector3 Vector3::up(0, 1, 0); -template -const Vector3 Vector3::down(0, -1, 0); -template -const Vector3 Vector3::right(1, 0, 0); -template -const Vector3 Vector3::left(-1, 0, 0); -template -const Vector3 Vector3::forward(0, 0, 1); -template -const Vector3 Vector3::backward(0, 0, -1); -template -const Vector3 Vector3::one(1, 1, 1); -template -const Vector3 Vector3::zero(0, 0, 0); - -} - -/*** ./../Eule/Collider.h ***/ - -#pragma once - -namespace Eule -{ - /** 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... - */ - class Collider - { - public: - //! Tests, if this Collider contains a point - virtual bool Contains(const Vector3d& point) const = 0; - }; -} - -/*** ./../Eule/TrapazoidalPrismCollider.h ***/ - -#pragma once -#include - -namespace Eule -{ - /** 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! - */ - class TrapazoidalPrismCollider : public Collider - { - public: - TrapazoidalPrismCollider(); - TrapazoidalPrismCollider(const TrapazoidalPrismCollider& other) = default; - TrapazoidalPrismCollider(TrapazoidalPrismCollider&& other) noexcept = default; - void operator=(const TrapazoidalPrismCollider& other); - void operator=(TrapazoidalPrismCollider&& other) noexcept; - - //! Will return a specific vertex - const Vector3d& GetVertex(std::size_t index) const; - - //! Will set the value of a specific vertex - void SetVertex(std::size_t index, const Vector3d value); - - //! Tests, if this Collider contains a point - bool Contains(const Vector3d& point) const override; - - /* Vertex identifiers */ - 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; - - private: - enum class FACE_NORMALS : std::size_t; - - //! Will calculate the vertex normals from vertices - void GenerateNormalsFromVertices(); - - //! Returns the dot product of a given point against a specific plane of the bounding box - double FaceDot(FACE_NORMALS face, const Vector3d& point) const; - - std::array vertices; - - - // Face normals - enum class FACE_NORMALS : std::size_t - { - LEFT = 0, - RIGHT = 1, - FRONT = 2, - BACK = 3, - TOP = 4, - BOTTOM = 5 - }; - std::array faceNormals; - }; -} - -/*** ./../Eule/Constants.h ***/ - -#pragma once - -// Pretty sure the compiler will optimize these calculations out... - -//! Pi up to 50 decimal places -static constexpr double PI = 3.14159265358979323846264338327950288419716939937510; - -//! Pi divided by two -static constexpr double HALF_PI = 1.57079632679489661923132169163975144209858469968755; - -//! Factor to convert degrees to radians -static constexpr double Deg2Rad = 0.0174532925199432957692369076848861271344287188854172222222222222; - -//! Factor to convert radians to degrees -static constexpr double Rad2Deg = 57.295779513082320876798154814105170332405472466564427711013084788; - -/*** ./../Eule/Vector4.h ***/ - -#pragma once -#include -#include -#include -#include - -#include - -//#define _EULE_NO_INTRINSICS_ -#ifndef _EULE_NO_INTRINSICS_ -#include -#endif - -/* - NOTE: - Here you will find bad, unoptimized methods for T=int. - This is because the compiler needs a method for each type in each instantiation of the template! - I can't generalize the methods when heavily optimizing for doubles. - These functions will get called VERY rarely, if ever at all, for T=int, so it's ok. - The T=int instantiation only exists to store a value-pair of two ints. Not so-much as a vector in terms of vector calculus. -*/ -namespace Eule -{ - template class Vector2; - template class Vector3; - - /** Representation of a 4d vector. - * Contains a lot of utility methods. - */ - template - class Vector4 - { - public: - Vector4() : x{ 0 }, y{ 0 }, z{ 0 }, w{ 0 } {} - Vector4(T _x, T _y, T _z, T _w) : x{ _x }, y{ _y }, z{ _z }, w{ _w } {} - Vector4(const Vector4& other) = default; - Vector4(Vector4&& other) noexcept = default; - - //! Will compute the square magnitude - double SqrMagnitude() const; - - //! Will compute the magnitude - double Magnitude() const; - - //! Will return the normalization of this vector - [[nodiscard]] Vector4 Normalize() const; - - //! Will normalize this vector - void NormalizeSelf(); - - //! Will scale self.n by scalar.n - [[nodiscard]] Vector4 VectorScale(const Vector4& scalar) const; - - //! Will lerp itself towards other by t - void LerpSelf(const Vector4& other, double t); - - //! Will return a lerp result between this and another vector - [[nodiscard]] Vector4 Lerp(const Vector4& other, double t) const; - - //! Will compare if two vectors are similar to a certain epsilon value - [[nodiscard]] bool Similar(const Vector4& other, double epsilon = 0.00001) const; - - //! Will convert this vector to a Vector4i - [[nodiscard]] Vector4 ToInt() const; - - //! Will convert this vector to a Vector4d - [[nodiscard]] Vector4 ToDouble() const; - - T& operator[](std::size_t idx); - const T& operator[](std::size_t idx) const; - - Vector4 operator+(const Vector4& other) const; - void operator+=(const Vector4& other); - Vector4 operator-(const Vector4& other) const; - void operator-=(const Vector4& other); - Vector4 operator*(const T scale) const; - void operator*=(const T scale); - Vector4 operator/(const T scale) const; - void operator/=(const T scale); - Vector4 operator*(const Matrix4x4& mat) const; - void operator*=(const Matrix4x4& mat); - Vector4 operator-() const; - - operator Vector2() const; //! Conversion method - operator Vector3() const; //! Conversion method - - void operator=(const Vector4& other); - void operator=(Vector4&& other) noexcept; - - bool operator==(const Vector4& other) const; - bool operator!=(const Vector4& other) const; - - friend std::ostream& operator << (std::ostream& os, const Vector4& v) - { - return os << "[x: " << v.x << " y: " << v.y << " z: " << v.z << " w: " << v.w << "]"; - } - friend std::wostream& operator << (std::wostream& os, const Vector4& v) - { - return os << L"[x: " << v.x << L" y: " << v.y << L" z: " << v.z << L" w: " << v.w << L"]"; - } - - T x; - T y; - T z; - T w; - - // Some handy predefines - static const Vector4 up; - static const Vector4 down; - static const Vector4 right; - static const Vector4 left; - static const Vector4 forward; - static const Vector4 backward; - static const Vector4 future; - static const Vector4 past; - static const Vector4 one; - static const Vector4 zero; - }; - - typedef Vector4 Vector4i; - typedef Vector4 Vector4d; - - // Good, optimized chad version for doubles -template<> -double Vector4::SqrMagnitude() const -{ - return (x * x) + - (y * y) + - (z * z) + - (w * w); -} - -// Slow, lame version for intcels -template<> -double Vector4::SqrMagnitude() const -{ - int iSqrMag = x*x + y*y + z*z + w*w; - return (double)iSqrMag; -} - -template -double Vector4::Magnitude() const -{ - return sqrt(SqrMagnitude()); -} - - -template<> -Vector4 Vector4::VectorScale(const Vector4& scalar) const -{ - #ifndef _EULE_NO_INTRINSICS_ - - // Load vectors into registers - __m256d __vector_self = _mm256_set_pd(w, z, y, x); - __m256d __vector_scalar = _mm256_set_pd(scalar.w, scalar.z, scalar.y, scalar.x); - - // Multiply them - __m256d __product = _mm256_mul_pd(__vector_self, __vector_scalar); - - // Retrieve result - double result[4]; - _mm256_storeu_pd(result, __product); - - // Return value - return Vector4( - result[0], - result[1], - result[2], - result[3] - ); - - #else - - return Vector4( - x * scalar.x, - y * scalar.y, - z * scalar.z, - w * scalar.w - ); - #endif -} - - -template<> -Vector4 Vector4::VectorScale(const Vector4& scalar) const -{ - return Vector4( - x * scalar.x, - y * scalar.y, - z * scalar.z, - w * scalar.w - ); -} - - - -template -Vector4 Vector4::Normalize() const -{ - Vector4 norm(x, y, z, w); - norm.NormalizeSelf(); - - return norm; -} - -// Method to normalize a Vector4d -template<> -void Vector4::NormalizeSelf() -{ - double length = Magnitude(); - - // Prevent division by 0 - if (length == 0) - { - x = 0; - y = 0; - z = 0; - w = 0; - } - else - { - #ifndef _EULE_NO_INTRINSICS_ - - // Load vector and length into registers - __m256d __vec = _mm256_set_pd(w, z, y, x); - __m256d __len = _mm256_set1_pd(length); - - // Divide - __m256d __prod = _mm256_div_pd(__vec, __len); - - // Extract and set values - double prod[4]; - _mm256_storeu_pd(prod, __prod); - - x = prod[0]; - y = prod[1]; - z = prod[2]; - w = prod[3]; - - #else - - x /= length; - y /= length; - z /= length; - w /= length; - - #endif - } - - return; -} - -// You can't normalize an int vector, ffs! -// But we need an implementation for T=int -template<> -void Vector4::NormalizeSelf() -{ - std::cerr << "Stop normalizing int-vectors!!" << std::endl; - x = 0; - y = 0; - z = 0; - w = 0; - - return; -} - - - -template -bool Vector4::Similar(const Vector4& other, double epsilon) const -{ - return - (::Eule::Math::Similar(x, other.x, epsilon)) && - (::Eule::Math::Similar(y, other.y, epsilon)) && - (::Eule::Math::Similar(z, other.z, epsilon)) && - (::Eule::Math::Similar(w, other.w, epsilon)) - ; -} - -template -Vector4 Vector4::ToInt() const -{ - return Vector4((int)x, (int)y, (int)z, (int)w); -} - -template -Vector4 Vector4::ToDouble() const -{ - return Vector4((double)x, (double)y, (double)z, (double)w); -} - -template -T& Vector4::operator[](std::size_t idx) -{ - switch (idx) - { - case 0: - return x; - case 1: - return y; - case 2: - return z; - case 3: - return w; - default: - throw std::out_of_range("Array descriptor on Vector4 out of range!"); - } -} - -template -const T& Vector4::operator[](std::size_t idx) const -{ - switch (idx) - { - case 0: - return x; - case 1: - return y; - case 2: - return z; - case 3: - return w; - default: - throw std::out_of_range("Array descriptor on Vector4 out of range!"); - } -} - - - -// Good, optimized chad version for doubles -template<> -void Vector4::LerpSelf(const Vector4& other, double t) -{ - const double it = 1.0 - t; // Inverse t - - #ifndef _EULE_NO_INTRINSICS_ - - // Move vector components and factors into registers - __m256d __vector_self = _mm256_set_pd(w, z, y, x); - __m256d __vector_other = _mm256_set_pd(other.w, other.z, other.y, other.x); - __m256d __t = _mm256_set1_pd(t); - __m256d __it = _mm256_set1_pd(it); // Inverse t - - // Procedure: - // (__vector_self * __it) + (__vector_other * __t) - - __m256d __sum = _mm256_set1_pd(0); // this will hold the sum of the two multiplications - - __sum = _mm256_fmadd_pd(__vector_self, __it, __sum); - __sum = _mm256_fmadd_pd(__vector_other, __t, __sum); - - // Retrieve result, and apply it - double sum[4]; - _mm256_storeu_pd(sum, __sum); - - x = sum[0]; - y = sum[1]; - z = sum[2]; - w = sum[3]; - - #else - - x = it * x + t * other.x; - y = it * y + t * other.y; - z = it * z + t * other.z; - w = it * w + t * other.w; - - #endif - - return; -} - - - -// Slow, lame version for intcels -template<> -void Vector4::LerpSelf(const Vector4& other, double t) -{ - const double it = 1.0 - t; - - x = (int)(it * (double)x + t * (double)other.x); - y = (int)(it * (double)y + t * (double)other.y); - z = (int)(it * (double)z + t * (double)other.z); - w = (int)(it * (double)w + t * (double)other.w); - - return; -} - -template<> -Vector4 Vector4::Lerp(const Vector4& other, double t) const -{ - Vector4d copy(*this); - copy.LerpSelf(other, t); - - return copy; -} - -template<> -Vector4 Vector4::Lerp(const Vector4& other, double t) const -{ - Vector4d copy(this->ToDouble()); - copy.LerpSelf(other.ToDouble(), t); - - return copy; -} - - - -template<> -Vector4 Vector4::operator+(const Vector4& other) const -{ - #ifndef _EULE_NO_INTRINSICS_ - - // Move vector components and factors into registers - __m256d __vector_self = _mm256_set_pd(w, z, y, x); - __m256d __vector_other = _mm256_set_pd(other.w, other.z, other.y, other.x); - - // Add the components - __m256d __sum = _mm256_add_pd(__vector_self, __vector_other); - - // Retrieve and return these values - double sum[4]; - _mm256_storeu_pd(sum, __sum); - - return Vector4( - sum[0], - sum[1], - sum[2], - sum[3] - ); - - #else - - return Vector4( - x + other.x, - y + other.y, - z + other.z, - w + other.w - ); - #endif -} - -template -Vector4 Vector4::operator+(const Vector4& other) const -{ - return Vector4( - x + other.x, - y + other.y, - z + other.z, - w + other.w - ); -} - - - -template<> -void Vector4::operator+=(const Vector4& other) -{ - #ifndef _EULE_NO_INTRINSICS_ - - // Move vector components and factors into registers - __m256d __vector_self = _mm256_set_pd(w, z, y, x); - __m256d __vector_other = _mm256_set_pd(other.w, other.z, other.y, other.x); - - // Add the components - __m256d __sum = _mm256_add_pd(__vector_self, __vector_other); - - // Retrieve and apply these values - double sum[4]; - _mm256_storeu_pd(sum, __sum); - - x = sum[0]; - y = sum[1]; - z = sum[2]; - w = sum[3]; - - #else - - x += other.x; - y += other.y; - z += other.z; - w += other.w; - - #endif - - return; -} - -template -void Vector4::operator+=(const Vector4& other) -{ - x += other.x; - y += other.y; - z += other.z; - w += other.w; - return; -} - - - -template<> -Vector4 Vector4::operator-(const Vector4& other) const -{ - #ifndef _EULE_NO_INTRINSICS_ - - // Move vector components and factors into registers - __m256d __vector_self = _mm256_set_pd(w, z, y, x); - __m256d __vector_other = _mm256_set_pd(other.w, other.z, other.y, other.x); - - // Subtract the components - __m256d __diff = _mm256_sub_pd(__vector_self, __vector_other); - - // Retrieve and return these values - double diff[4]; - _mm256_storeu_pd(diff, __diff); - - return Vector4( - diff[0], - diff[1], - diff[2], - diff[3] - ); - - #else - - return Vector4( - x - other.x, - y - other.y, - z - other.z, - w - other.w - ); - #endif -} - -template -Vector4 Vector4::operator-(const Vector4& other) const -{ - return Vector4( - x - other.x, - y - other.y, - z - other.z, - w - other.w - ); -} - - - -template<> -void Vector4::operator-=(const Vector4& other) -{ - #ifndef _EULE_NO_INTRINSICS_ - - // Move vector components and factors into registers - __m256d __vector_self = _mm256_set_pd(w, z, y, x); - __m256d __vector_other = _mm256_set_pd(other.w, other.z, other.y, other.x); - - // Subtract the components - __m256d __diff = _mm256_sub_pd(__vector_self, __vector_other); - - // Retrieve and apply these values - double diff[4]; - _mm256_storeu_pd(diff, __diff); - - x = diff[0]; - y = diff[1]; - z = diff[2]; - w = diff[3]; - - #else - - x -= other.x; - y -= other.y; - z -= other.z; - w -= other.w; - - #endif - - return; -} - -template -void Vector4::operator-=(const Vector4& other) -{ - x -= other.x; - y -= other.y; - z -= other.z; - w -= other.w; - return; -} - - - -template<> -Vector4 Vector4::operator*(const double scale) const -{ - #ifndef _EULE_NO_INTRINSICS_ - - // Move vector components and factors into registers - __m256d __vector_self = _mm256_set_pd(w, z, y, x); - __m256d __scalar = _mm256_set1_pd(scale); - - // Multiply the components - __m256d __prod = _mm256_mul_pd(__vector_self, __scalar); - - // Retrieve and return these values - double prod[4]; - _mm256_storeu_pd(prod, __prod); - - return Vector4( - prod[0], - prod[1], - prod[2], - prod[3] - ); - - #else - - return Vector4( - x * scale, - y * scale, - z * scale, - w * scale - ); - - #endif -} - -template -Vector4 Vector4::operator*(const T scale) const -{ - return Vector4( - x * scale, - y * scale, - z * scale, - w * scale - ); -} - - - -template<> -void Vector4::operator*=(const double scale) -{ - #ifndef _EULE_NO_INTRINSICS_ - - // Move vector components and factors into registers - __m256d __vector_self = _mm256_set_pd(w, z, y, x); - __m256d __scalar = _mm256_set1_pd(scale); - - // Multiply the components - __m256d __prod = _mm256_mul_pd(__vector_self, __scalar); - - // Retrieve and apply these values - double prod[4]; - _mm256_storeu_pd(prod, __prod); - - x = prod[0]; - y = prod[1]; - z = prod[2]; - w = prod[3]; - - #else - - x *= scale; - y *= scale; - z *= scale; - w *= scale; - - #endif - - return; -} - -template -void Vector4::operator*=(const T scale) -{ - x *= scale; - y *= scale; - z *= scale; - w *= scale; - return; -} - - - -template<> -Vector4 Vector4::operator/(const double scale) const -{ - #ifndef _EULE_NO_INTRINSICS_ - - // Move vector components and factors into registers - __m256d __vector_self = _mm256_set_pd(w, z, y, x); - __m256d __scalar = _mm256_set1_pd(scale); - - // Divide the components - __m256d __prod = _mm256_div_pd(__vector_self, __scalar); - - // Retrieve and return these values - double prod[4]; - _mm256_storeu_pd(prod, __prod); - - return Vector4( - prod[0], - prod[1], - prod[2], - prod[3] - ); - - #else - - return Vector4( - x / scale, - y / scale, - z / scale, - w / scale - ); - - #endif -} - -template -Vector4 Vector4::operator/(const T scale) const -{ - return Vector4( - x / scale, - y / scale, - z / scale, - w / scale - ); -} - - - -template<> -void Vector4::operator/=(const double scale) -{ - #ifndef _EULE_NO_INTRINSICS_ - - // Move vector components and factors into registers - __m256d __vector_self = _mm256_set_pd(w, z, y, x); - __m256d __scalar = _mm256_set1_pd(scale); - - // Divide the components - __m256d __prod = _mm256_div_pd(__vector_self, __scalar); - - // Retrieve and apply these values - double prod[4]; - _mm256_storeu_pd(prod, __prod); - - x = prod[0]; - y = prod[1]; - z = prod[2]; - w = prod[3]; - - #else - - x /= scale; - y /= scale; - z /= scale; - w /= scale; - - #endif - return; -} - -template -void Vector4::operator/=(const T scale) -{ - x /= scale; - y /= scale; - z /= scale; - w /= scale; - return; -} - - - -template -bool Vector4::operator==(const Vector4& other) const -{ - return - (x == other.x) && - (y == other.y) && - (z == other.z) && - (w == other.w); -} - - - -// Good, optimized chad version for doubles -template<> -Vector4 Vector4::operator*(const Matrix4x4& mat) const -{ - Vector4 newVec; - - newVec.x = (mat[0][0] * x) + (mat[0][1] * y) + (mat[0][2] * z) + (mat[0][3] * w); - newVec.y = (mat[1][0] * x) + (mat[1][1] * y) + (mat[1][2] * z) + (mat[1][3] * w); - newVec.z = (mat[2][0] * x) + (mat[2][1] * y) + (mat[2][2] * z) + (mat[2][3] * w); - newVec.w = (mat[3][0] * x) + (mat[3][1] * y) + (mat[3][2] * z) + (mat[3][3] * w); - - return newVec; -} - -// Slow, lame version for intcels -template<> -Vector4 Vector4::operator*(const Matrix4x4& mat) const -{ - Vector4 newVec; - - newVec.x = (mat[0][0] * x) + (mat[0][1] * y) + (mat[0][2] * z) + (mat[0][3] * w); - newVec.y = (mat[1][0] * x) + (mat[1][1] * y) + (mat[1][2] * z) + (mat[1][3] * w); - newVec.z = (mat[2][0] * x) + (mat[2][1] * y) + (mat[2][2] * z) + (mat[2][3] * w); - newVec.w = (mat[3][0] * x) + (mat[3][1] * y) + (mat[3][2] * z) + (mat[3][3] * w); - - return Vector4( - (int)newVec.x, - (int)newVec.y, - (int)newVec.z, - (int)newVec.w - ); -} - - - -// Good, optimized chad version for doubles -template<> -void Vector4::operator*=(const Matrix4x4& mat) -{ - Vector4 buffer = *this; - - // Should this still be reversed...? like, instead of mat[x][y], use mat[y][m] - // idk right now. check that if something doesn't work - x = (mat[0][0] * buffer.x) + (mat[0][1] * buffer.y) + (mat[0][2] * buffer.z) + (mat[0][3] * buffer.w); - y = (mat[1][0] * buffer.x) + (mat[1][1] * buffer.y) + (mat[1][2] * buffer.z) + (mat[1][3] * buffer.w); - z = (mat[2][0] * buffer.x) + (mat[2][1] * buffer.y) + (mat[2][2] * buffer.z) + (mat[2][3] * buffer.w); - w = (mat[3][0] * buffer.x) + (mat[3][1] * buffer.y) + (mat[3][2] * buffer.z) + (mat[3][3] * buffer.w); - - return; -} - -template -Vector4 Vector4::operator-() const -{ - return Vector4( - -x, - -y, - -z, - -w - ); -} - -template -void Vector4::operator=(const Vector4& other) -{ - x = other.x; - y = other.y; - z = other.z; - w = other.w; - - return; -} - -template -void Vector4::operator=(Vector4&& other) noexcept -{ - x = std::move(other.x); - y = std::move(other.y); - z = std::move(other.z); - w = std::move(other.w); - - return; -} - -// Slow, lame version for intcels -template<> -void Vector4::operator*=(const Matrix4x4& mat) -{ - Vector4 buffer(x, y, z, w); - - // Should this still be reversed...? like, instead of mat[x][y], use mat[y][m] - // idk right now. check that if something doesn't work - x = (int)((mat[0][0] * buffer.x) + (mat[0][1] * buffer.y) + (mat[0][2] * buffer.z) + (mat[0][3] * buffer.w)); - y = (int)((mat[1][0] * buffer.x) + (mat[1][1] * buffer.y) + (mat[1][2] * buffer.z) + (mat[1][3] * buffer.w)); - z = (int)((mat[2][0] * buffer.x) + (mat[2][1] * buffer.y) + (mat[2][2] * buffer.z) + (mat[2][3] * buffer.w)); - w = (int)((mat[3][0] * buffer.x) + (mat[3][1] * buffer.y) + (mat[3][2] * buffer.z) + (mat[3][3] * buffer.w)); - - return; -} - -template -bool Vector4::operator!=(const Vector4& other) const -{ - return !operator==(other); -} - -template class Vector4; -template class Vector4; - -// Some handy predefines -template -const Vector4 Vector4::up(0, 1, 0, 0); -template -const Vector4 Vector4::down(0, -1, 0, 0); -template -const Vector4 Vector4::right(1, 0, 0, 0); -template -const Vector4 Vector4::left(-1, 0, 0, 0); -template -const Vector4 Vector4::forward(1, 0, 0, 0); -template -const Vector4 Vector4::backward(-1, 0, 0, 0); -template -const Vector4 Vector4::future(0, 0, 0, 1); -template -const Vector4 Vector4::past(0, 0, 0, -1); -template -const Vector4 Vector4::one(1, 1, 1, 1); -template -const Vector4 Vector4::zero(0, 0, 0, 0); - -} - -/*** ./../Eule/Quaternion.h ***/ - -#pragma once -#include - -namespace Eule -{ - /** 3D rotation representation - */ - class Quaternion - { - public: - Quaternion(); - - //! Constructs by these raw values - explicit Quaternion(const Vector4d values); - - //! Copies this existing Quaternion - Quaternion(const Quaternion& q); - - //! Creates an quaternion from euler angles - Quaternion(const Vector3d eulerAngles); - - ~Quaternion(); - - //! Copies - Quaternion operator= (const Quaternion& q); - - //! Multiplies (applies) - Quaternion operator* (const Quaternion& q) const; - - //! Divides (applies) - Quaternion operator/ (Quaternion& q) const; - - //! Also multiplies - Quaternion& operator*= (const Quaternion& q); - - //! Also divides - Quaternion& operator/= (const Quaternion& q); - - //! Will transform a 3d point around its origin - Vector3d operator* (const Vector3d& p) const; - - bool operator== (const Quaternion& q) const; - bool operator!= (const Quaternion& q) const; - - Quaternion Inverse() const; - - Quaternion Conjugate() const; - - Quaternion UnitQuaternion() const; - - //! Will rotate a vector by this quaternion - Vector3d RotateVector(const Vector3d& vec) const; - - //! Will return euler angles representing this Quaternion's rotation - Vector3d ToEulerAngles() const; - - //! Will return a rotation matrix representing this Quaternions rotation - Matrix4x4 ToRotationMatrix() const; - - //! Will return the raw four-dimensional values - Vector4d GetRawValues() const; - - //! Will return the value between two Quaternion's as another Quaternion - Quaternion AngleBetween(const Quaternion& other) const; - - //! Will set the raw four-dimensional values - void SetRawValues(const Vector4d values); - - //! Will return the lerp result between two quaternions - Quaternion Lerp(const Quaternion& other, double t) const; - - friend std::ostream& operator<< (std::ostream& os, const Quaternion& q); - friend std::wostream& operator<< (std::wostream& os, const Quaternion& q); - - private: - //! Scales - Quaternion operator* (const double scale) const; - Quaternion& operator*= (const double scale); - - //! Quaternion values - Vector4d v; - - //! Will force a regenartion of the euler and matrix caches on further converter calls - void InvalidateCache(); - - // Caches for conversions - mutable bool isCacheUpToDate_euler = false; - mutable Vector3d cache_euler; - - mutable bool isCacheUpToDate_matrix = false; - mutable Matrix4x4 cache_matrix; - - mutable bool isCacheUpToDate_inverse = false; - mutable Vector4d cache_inverse; - - // Mutexes for thread-safe caching - mutable std::mutex lock_eulerCache; - mutable std::mutex lock_matrixCache; - mutable std::mutex lock_inverseCache; - }; -} - -/*** ./../Eule/gcccompat.h ***/ - -#pragma once - -/* -* Some intrinsic functions such as _mm_sincos_pd are not available on g++ by default (requires some specific library). -* So let's just "re"define them manually if we're on g++. -* This way the code still works, even with the other intrinsics enabled. -*/ - -#if (__GNUC__ && __cplusplus) -#include -#include - -inline __m256d _mm256_sincos_pd(__m256d* __cos, __m256d __vec) -{ - double vec[4]; - - _mm256_storeu_pd(vec, __vec); - - // Manually calculate cosines - *__cos = _mm256_set_pd( - cos(vec[3]), - cos(vec[2]), - cos(vec[1]), - cos(vec[0]) - ); - - // Manually calculate sines - return _mm256_set_pd( - sin(vec[3]), - sin(vec[2]), - sin(vec[1]), - sin(vec[0]) - ); -} -#endif - -/*** ./../Eule/Random.h ***/ - -#pragma once -#include - -namespace Eule -{ - /** Extensive random number generator - */ - class Random - { - public: - //! Will return a random double between `0` and `1` - static double RandomFloat(); - - //! Will return a random unsigned integer. - static unsigned int RandomUint(); - - //! Will return a random integer - static unsigned int RandomInt(); - - //! Will return a random double within a range - //! These bounds are INCLUSIVE! - static double RandomRange(const double min, const double max); - - //! Will return a random integer within a range. This is faster than `(int)RandomRange(x,y)` - //! These bounds are INCLUSIVE! - static int RandomIntRange(const int max, const int min); - - //! Will 'roll' a dice, returning `true` \f$100 * chance\f$ percent of the time. - static bool RandomChance(const double chance); - - private: - //! Will initialize the random number generator - static void InitRng(); - - static std::mt19937 rng; - static bool isRngInitialized; - - // No instanciation! >:( - Random(); - }; -} diff --git a/INCLUDE/deggl b/INCLUDE/deggl deleted file mode 100755 index bd6f07f904a4713a09483e81cda53ec34660b3ba..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1322616 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

}@dKTeHmFNgs>_qI3S);V?tVU|VIZDh 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�Kmte8EX!rH>Hj(~>}aEMhLX`5Ux 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

?tweVIr7S!!GlkdH_@Tau&_F)lh1DF~$J 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�YaU4ifK9dFLso+Khie!!(ON~5ML$?${$96OA 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�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 diff --git a/INCLUDE/generate.sh b/INCLUDE/generate.sh deleted file mode 100755 index 87ea9b1..0000000 --- a/INCLUDE/generate.sh +++ /dev/null @@ -1,8 +0,0 @@ -# Build the include files -echo "Building the include files..." -./deggl -i ../Eule/*.cpp -o Eule - -# Verify that they compile cleanly -# For simplicity, we'll test without intrisics enabled -echo "Verifying that they compile" -g++ Eule.cpp -c -S -std=c++17 -o - -Wall -Wextra -Wpedantic -mavx -D _EULE_NO_INTRINSICS_ > /dev/null