diff --git a/include/J3ML/LinearAlgebra/Vector3.h b/include/J3ML/LinearAlgebra/Vector3.h index a1bc92b..9d826f1 100644 --- a/include/J3ML/LinearAlgebra/Vector3.h +++ b/include/J3ML/LinearAlgebra/Vector3.h @@ -37,6 +37,11 @@ public: b = b.Normalize(); } + + //Returns the DirectionVector for a given angle. + Vector3 Direction(const Vector3 &rhs) const; + + static void Orthonormalize(Vector3& a, Vector3& b, Vector3& c) { a = a.Normalize(); diff --git a/src/J3ML/LinearAlgebra/Matrix3x3.cpp b/src/J3ML/LinearAlgebra/Matrix3x3.cpp index f410dcf..b246c2c 100644 --- a/src/J3ML/LinearAlgebra/Matrix3x3.cpp +++ b/src/J3ML/LinearAlgebra/Matrix3x3.cpp @@ -213,7 +213,6 @@ namespace LinearAlgebra { elems[0][2] = c1*a.x*a.z+s*a.y; elems[1][2] = c1*a.y*a.z-s*a.x; elems[2][2] = c+c1*a.z*a.z; - } Matrix3x3 Matrix3x3::RotateAxisAngle(const Vector3 &axis, float angleRadians) { diff --git a/src/J3ML/LinearAlgebra/Vector3.cpp b/src/J3ML/LinearAlgebra/Vector3.cpp index 700c64d..08e453f 100644 --- a/src/J3ML/LinearAlgebra/Vector3.cpp +++ b/src/J3ML/LinearAlgebra/Vector3.cpp @@ -301,5 +301,12 @@ namespace LinearAlgebra { return lhs.AngleBetween(rhs); } + Vector3 Vector3::Direction(const Vector3 &rhs) const { + float x = (cos(Math::Radians(rhs.y)) * cos(Math::Radians(rhs.x))); + float y = -sin(Math::Radians(rhs.x)); + float z = (sin(Math::Radians(rhs.y)) * cos(Math::Radians(rhs.x))); + return {x, y, z}; + } + #pragma endregion } \ No newline at end of file