diff options
Diffstat (limited to 'include/egg/math/eggQuat.h')
| -rw-r--r-- | include/egg/math/eggQuat.h | 22 |
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 ¶m1, 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; }; |
