1
0
forked from josh/j3ml

Adding code x2

This commit is contained in:
2023-12-26 21:29:05 -06:00
parent d9bd070fd1
commit f90f1cf40b
25 changed files with 188 additions and 88 deletions

View File

@@ -1,8 +1,59 @@
#include <J3ML/LinearAlgebra/Quaternion.h>
#include <J3ML/LinearAlgebra/Vector3.h>
namespace LinearAlgebra {
Quaternion Quaternion::operator-() const
{
return {-x, -y, -z, -w};
}
Quaternion::Quaternion(const Matrix3x3 &rotationMtrx) {}
Quaternion::Quaternion(const Matrix4x4 &rotationMtrx) {}
Vector3 Quaternion::GetWorldX() const { return Transform(1.f, 0.f, 0.f); }
Vector3 Quaternion::GetWorldY() const { return Transform(0.f, 1.f, 0.f); }
Vector3 Quaternion::GetWorldZ() const { return Transform(0.f, 0.f, 1.f); }
Vector3 Quaternion::Transform(const Vector3 &vec) const {
Matrix3x3 mat = this->ToMatrix3x3();
return mat * vec;
}
Vector3 Quaternion::Transform(float X, float Y, float Z) const {
return Transform(Vector3{X, Y, Z});
}
Vector4 Quaternion::Transform(const Vector4 &vec) const {
return Vector4(Transform(vec.x, vec.y, vec.z), vec.w);
}
Vector4 Quaternion::Transform(float X, float Y, float Z, float W) const {
return Transform(Vector4(X, Y, Z, W));
}
Quaternion Quaternion::Lerp(const Quaternion &b, float t) const {
float angle = this->Dot(b);
if (angle >= 0.f) // Make sure we rotate the shorter arc
return (*this * (1.f - t) + b * t).Normalize();
else
return (*this * (t - 1.f) + b * t).Normalize();
}
void Quaternion::SetFromAxisAngle(const Vector3 &axis, float angle) {
float sinz, cosz;
}
Quaternion Quaternion::operator*(float scalar) const {
return Quaternion(x * scalar, y * scalar, z * scalar, w * scalar);
}
Quaternion Quaternion::operator+() const { return *this; }
Quaternion::Quaternion() {}
}