summaryrefslogtreecommitdiff
path: root/include/egg/math/eggQuat.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/egg/math/eggQuat.h')
-rw-r--r--include/egg/math/eggQuat.h22
1 files changed, 22 insertions, 0 deletions
diff --git a/include/egg/math/eggQuat.h b/include/egg/math/eggQuat.h
index a752b229..aa33b73b 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;
};