summaryrefslogtreecommitdiff
path: root/include/egg
diff options
context:
space:
mode:
authorlepelog <25211966+lepelog@users.noreply.github.com>2025-12-13 01:23:37 +0100
committerlepelog <25211966+lepelog@users.noreply.github.com>2026-02-01 18:14:38 +0100
commitb017949c4b37acbfea90fdd5641dbdceaee688a7 (patch)
tree1648b752fd8a55070ac3555ea9615e09dd95a7b1 /include/egg
parent62fc066b605680af84cc921aba070b62e7df8ff7 (diff)
d_t_mass_obj 99%
Diffstat (limited to 'include/egg')
-rw-r--r--include/egg/math/eggQuat.h22
-rw-r--r--include/egg/math/eggVector.h7
2 files changed, 29 insertions, 0 deletions
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 <cmath>
namespace EGG {
@@ -132,6 +135,10 @@ struct Vector3f : public nw4r::math::VEC3 {
return squaredLength() <= Math<f32>::epsilon();
}
+ bool isZero2() const {
+ return fabsf(JMathInlineVEC::C_VECSquareMag(*this)) <= Math<f32>::epsilon();
+ }
+
void setZero() {
x = y = z = 0.0f;
}