diff --git a/Engine/Source/Runtime/Core/public/Math/Vector4.hpp b/Engine/Source/Runtime/Core/public/Math/Vector4.hpp index 13ee614..0283756 100644 --- a/Engine/Source/Runtime/Core/public/Math/Vector4.hpp +++ b/Engine/Source/Runtime/Core/public/Math/Vector4.hpp @@ -391,8 +391,8 @@ namespace Phanes::Core::Math /// Vector is aligned? /// Vector /// Square of magnitude of vector. - template - T SqrMagnitude(const TVector4& v) + template + T SqrMagnitude(const TVector4& v) { return DotP(v, v); } @@ -404,8 +404,8 @@ namespace Phanes::Core::Math /// Vector is aligned? /// Vector /// Magnitude of vector. - template - constexpr T Length(const TVector4& v) { return Magnitude(v); } + template + constexpr T Length(const TVector4& v) { return Magnitude(v); } /// /// Get square of magnitude of vector. @@ -414,8 +414,8 @@ namespace Phanes::Core::Math /// Vector is aligned? /// Vector /// Square of magnitude of vector. - template - constexpr T SqrLength(const TVector4& v) { return SqrMagnitude(v); } + template + constexpr T SqrLength(const TVector4& v) { return SqrMagnitude(v); } /// /// Angle between two vectors. @@ -425,8 +425,8 @@ namespace Phanes::Core::Math /// Vector one /// Vector two /// - template - T Angle(const TVector4& v1, const TVector4& v2) + template + T Angle(const TVector4& v1, const TVector4& v2) { return acos(DotP(v1, v2) / (Magnitude(v1) * Magnitude(v2))); } @@ -439,8 +439,8 @@ namespace Phanes::Core::Math /// Vector one /// Vector two /// - template - T CosineAngle(const TVector4& v1, const TVector4& v2) + template + T CosineAngle(const TVector4& v1, const TVector4& v2) { return DotP(v1, v2) / (Magnitude(v1) * Magnitude(v2)); } @@ -452,8 +452,8 @@ namespace Phanes::Core::Math /// Vector is aligned? /// Vector /// Normalized vector - template - TVector4 Normalize(const TVector4& v1) + template + TVector4 Normalize(const TVector4& v1) { T vecNorm = Magnitude(v1); @@ -469,8 +469,8 @@ namespace Phanes::Core::Math /// Vector is aligned? /// Vector /// Copy of v1. - template - TVector4 NormalizeV(TVector4& v1) + template + TVector4 NormalizeV(TVector4& v1) { T vecNorm = Magnitude(v1); @@ -489,8 +489,8 @@ namespace Phanes::Core::Math /// Vector is aligned? /// Vector /// Normalized vector - template - TVector4 UnsafeNormalize(const TVector4& v1) + template + TVector4 UnsafeNormalize(const TVector4& v1) { return v1 / Magnitude(v1); } @@ -503,8 +503,8 @@ namespace Phanes::Core::Math /// Vector is aligned? /// Vector /// Copy of v1. - template - TVector4 UnsafeNormalizeV(TVector4& v1) + template + TVector4 UnsafeNormalizeV(TVector4& v1) { v1 /= Magnitude(v1); return v1; @@ -518,8 +518,8 @@ namespace Phanes::Core::Math /// Vector one /// Vector two /// Dot product between vectors. - template - T DotP(const TVector4& v1, const TVector4& v2) + template + T DotP(const TVector4& v1, const TVector4& v2) { return v1.x * v2.x + v1.y * v2.y + v1.z * v2.z + v1.w * v2.w; } @@ -532,10 +532,10 @@ namespace Phanes::Core::Math /// Vector one /// Vector two /// Vector with componentwise max of both vectors. - template - TVector4 Max(const TVector4& v1, const TVector4& v2) + template + TVector4 Max(const TVector4& v1, const TVector4& v2) { - return TVector4( + return TVector4( (v1.x > v2.x) ? v1.x : v2.x, (v1.y > v2.y) ? v1.y : v2.y, (v1.z > v2.z) ? v1.z : v2.z, @@ -551,8 +551,8 @@ namespace Phanes::Core::Math /// Vector one /// Vector two /// Copy of v1. - template - TVector4 MaxV(TVector4& v1, const TVector4& v2) + template + TVector4 MaxV(TVector4& v1, const TVector4& v2) { v1.x = (v1.x > v2.x) ? v1.x : v2.x; v1.y = (v1.y > v2.y) ? v1.y : v2.y; @@ -570,10 +570,10 @@ namespace Phanes::Core::Math /// Vector one /// Vector two /// Vector with componentwise max of both vectors. - template - TVector4 Min(const TVector4& v1, const TVector4& v2) + template + TVector4 Min(const TVector4& v1, const TVector4& v2) { - return TVector4( + return TVector4( (v1.x < v2.x) ? v1.x : v2.x, (v1.y < v2.y) ? v1.y : v2.y, (v1.z < v2.z) ? v1.z : v2.z, @@ -589,8 +589,8 @@ namespace Phanes::Core::Math /// Vector one /// Vector two /// Copy of v1. - template - TVector4 MinV(TVector4& v1, const TVector4& v2) + template + TVector4 MinV(TVector4& v1, const TVector4& v2) { v1.x = (v1.x < v2.x) ? v1.x : v2.x; v1.y = (v1.y < v2.y) ? v1.y : v2.y; @@ -607,10 +607,10 @@ namespace Phanes::Core::Math /// Vector is aligned? /// Vector /// Inverted vector - template - TVector4 Negate(const TVector4& v1) + template + TVector4 Negate(const TVector4& v1) { - return TVector4( + return TVector4( -v1.x, -v1.y, -v1.z, @@ -625,8 +625,8 @@ namespace Phanes::Core::Math /// Vector is aligned? /// Vector /// Copy of v1. - template - TVector4 NegateV(TVector4& v1) + template + TVector4 NegateV(TVector4& v1) { v1.x = -v1.x; v1.y = -v1.y; @@ -641,10 +641,10 @@ namespace Phanes::Core::Math /// Vector is aligned? /// Vector /// Vector with reciprocal of components. - template - TVector4 CompInverse(const TVector4& v1) + template + TVector4 CompInverse(const TVector4& v1) { - return TVector4( + return TVector4( (T)1.0 / v1.x, (T)1.0 / v1.y, (T)1.0 / v1.z, @@ -659,8 +659,8 @@ namespace Phanes::Core::Math /// Vector is aligned? /// Vector /// Copy of v1. - template - TVector4 CompInverseV(TVector4& v1) + template + TVector4 CompInverseV(TVector4& v1) { v1.x = (T)1.0 / v1.x; v1.y = (T)1.0 / v1.y; @@ -678,11 +678,11 @@ namespace Phanes::Core::Math /// /// /// Vector with magnitude clamped to s. - template - TVector4 ClampToMagnitude(const TVector4& v1, T s) + template + TVector4 ClampToMagnitude(const TVector4& v1, T s) { float vecNorm = Magnitude(v1); - TVector4 newVec = (vecNorm > s) ? v1 : v1 / Magnitude(v1); + TVector4 newVec = (vecNorm > s) ? v1 : v1 / Magnitude(v1); return newVec; } @@ -694,8 +694,8 @@ namespace Phanes::Core::Math /// Vector /// Magnitude /// Copy of v1. - template - TVector4 ClampToMagnitudeV(TVector4& v1, T s) + template + TVector4 ClampToMagnitudeV(TVector4& v1, T s) { float vecNorm = Magnitude(v1); v1 = (vecNorm > s) ? v1 : v1 / Magnitude(v1); @@ -710,10 +710,10 @@ namespace Phanes::Core::Math /// Vector /// Magnitude /// Vector with scaled magnitude. - template - TVector4 ScaleToMagnitude(const TVector4& v1, T s) + template + TVector4 ScaleToMagnitude(const TVector4& v1, T s) { - TVector4 vecDir = v1 / Magnitude(v1); + TVector4 vecDir = v1 / Magnitude(v1); return vecDir * s; } @@ -725,8 +725,8 @@ namespace Phanes::Core::Math /// Vector /// Magnitude /// Copy of v1. - template - TVector4 ScaleToMagnitudeV(TVector4& v1, T s) + template + TVector4 ScaleToMagnitudeV(TVector4& v1, T s) { v1 /= Magnitude(v1); v1 *= s; @@ -741,8 +741,8 @@ namespace Phanes::Core::Math /// Vector /// Planes normal /// Reflected vector - template - TVector4 Reflect(const TVector4& v1, const TVector4 normal) + template + TVector4 Reflect(const TVector4& v1, const TVector4 normal) { return v1 - (2 * (v1 * normal) * normal); } @@ -755,8 +755,8 @@ namespace Phanes::Core::Math /// Vector /// Planes normal /// Copy of v1. - template - TVector4 ReflectV(TVector4& v1, const TVector4 normal) + template + TVector4 ReflectV(TVector4& v1, const TVector4 normal) { Set(v1, v1 - (2 * (v1 * normal) * normal)); return v1; @@ -770,8 +770,8 @@ namespace Phanes::Core::Math /// Vector to project /// Vector to project on /// Projected vector. - template - TVector4 Project(const TVector4& v1, const TVector4 v2) + template + TVector4 Project(const TVector4& v1, const TVector4 v2) { return (DotP(v1, v2) / DotP(v2, v2)) * v2; } @@ -784,8 +784,8 @@ namespace Phanes::Core::Math /// Vector to project /// Vector to project on /// Copy of v1. - template - TVector4 ProjectV(const TVector4& v1, const TVector4 v2) + template + TVector4 ProjectV(const TVector4& v1, const TVector4 v2) { Set(v1, (DotP(v1, v2) / DotP(v2, v2)) * v2); } @@ -798,8 +798,8 @@ namespace Phanes::Core::Math /// Vector to reject /// Vector to reject from /// Rejected vector. - template - TVector4 Reject(const TVector4& v1, const TVector4 v2) + template + TVector4 Reject(const TVector4& v1, const TVector4 v2) { return v1 - (DotP(v1, v2) / DotP(v2, v2))* v2; } @@ -812,8 +812,8 @@ namespace Phanes::Core::Math /// Vector to reject /// Vector to reject from /// Copy of v1. - template - TVector4 RejectV(const TVector4& v1, const TVector4 v2) + template + TVector4 RejectV(const TVector4& v1, const TVector4 v2) { Set(v1, v1 - (DotP(v1, v2) / DotP(v2, v2)) * v2); @@ -827,11 +827,11 @@ namespace Phanes::Core::Math /// Vector is aligned? /// Vector /// Perspective divided vector. - template - TVector4 PrespectiveDivide(const TVector4& v1) + template + TVector4 PrespectiveDivide(const TVector4& v1) { float _1_w = (T)1.0 / v1.w; - return TVector4( + return TVector4( v1.x * _1_w, v1.y * _1_w, v1.z * _1_w, @@ -846,8 +846,8 @@ namespace Phanes::Core::Math /// Vector is aligned? /// Vector /// Copy of v1. - template - TVector4 PrespectiveDivideV(TVector4& v1) + template + TVector4 PrespectiveDivideV(TVector4& v1) { float _1_w = (T)1.0 / v1.w; diff --git a/Tests/TestProject/Main.cpp b/Tests/TestProject/Main.cpp deleted file mode 100644 index 2e891de..0000000 --- a/Tests/TestProject/Main.cpp +++ /dev/null @@ -1,32 +0,0 @@ -#include -#include - -#include "Core/public/Math/Vector4.hpp" - -namespace PMath = Phanes::Core::Math; - -int main() -{ - PMath::TVector4 vec0{ 3.4f, 2.3f, 1.2f, 7.5f }; - PMath::TVector4 vec1{ 7.5f, 3.4f, 2.7f, 2.6f }; - - - /*for (int i = 0; i < 10; i++) - { - auto start = std::chrono::high_resolution_clock::now(); - - for (size_t i = 0; i < 999999; i++) - { - - } - auto end = std::chrono::high_resolution_clock::now(); - - std::cout << std::chrono::duration_cast(end - start).count() << std::endl; - }*/ - // vec0 += vec1; - - std::cout << vec0.x << " " << vec0.y << " " << vec0.z << " " << vec0.w << std::endl; - - return 0; - -} \ No newline at end of file