From b017949c4b37acbfea90fdd5641dbdceaee688a7 Mon Sep 17 00:00:00 2001 From: lepelog <25211966+lepelog@users.noreply.github.com> Date: Sat, 13 Dec 2025 01:23:37 +0100 Subject: d_t_mass_obj 99% --- include/egg/math/eggQuat.h | 22 ++++++++++++++++++++++ include/egg/math/eggVector.h | 7 +++++++ 2 files changed, 29 insertions(+) (limited to 'include/egg/math') diff --git a/include/egg/math/eggQuat.h b/include/egg/math/eggQuat.h index a752b229..96808c56 100644 --- a/include/egg/math/eggQuat.h +++ b/include/egg/math/eggQuat.h @@ -44,10 +44,26 @@ struct Quatf { Vector3f rotateVector(const Vector3f &); Vector3f rotateVectorInv(const Vector3f &); // not in SS void slerpTo(const Quatf &, f32, Quatf &out) const; + void slerpTo2(f32 fparam,const Quatf & param1, Quatf &out ) const { + const Quatf & tmp = param1; + slerpTo(tmp, fparam, out); + } void limitSlerpTo(const Quatf &, f32, f32, Quatf &out) const; void makeVectorRotationLimit(Vector3f &, Vector3f &, f32); // not in SS void makeVectorRotation(const Vector3f &, const Vector3f &); + // not sure about the name + f32 dot(const Quatf& other) const { + f32 ret = v.dot(other.v); + ret += w * other.w; + return ret; + } + + void set(const Quatf& other) { + v.set(other.v); + w = other.w; + } + void multScalar(f32 s) { w *= s; v.x *= s; @@ -58,6 +74,12 @@ struct Quatf { set(1.0f, 0.0f, 0.0f, 0.0f); } + void makeWPositive() { + if (w < 0.f) { + multScalar(-1.f); + } + } + Vector3f v; f32 w; }; diff --git a/include/egg/math/eggVector.h b/include/egg/math/eggVector.h index abcf1176..8886a45a 100644 --- a/include/egg/math/eggVector.h +++ b/include/egg/math/eggVector.h @@ -1,11 +1,14 @@ #ifndef EGG_VECTOR_H #define EGG_VECTOR_H +#include "JSystem/JMath/JMath.h" #include "common.h" #include "egg/math/eggMath.h" +#include "nw4r/math/math_arithmetic.h" #include "nw4r/math/math_triangular.h" #include "nw4r/math.h" +#include namespace EGG { @@ -132,6 +135,10 @@ struct Vector3f : public nw4r::math::VEC3 { return squaredLength() <= Math::epsilon(); } + bool isZero2() const { + return fabsf(JMathInlineVEC::C_VECSquareMag(*this)) <= Math::epsilon(); + } + void setZero() { x = y = z = 0.0f; } -- cgit v1.2.3