2022-08-13 02:48:34 +00:00
|
|
|
#ifndef _CQUATERNION_HPP
|
|
|
|
#define _CQUATERNION_HPP
|
|
|
|
|
|
|
|
#include "types.h"
|
|
|
|
|
2022-09-19 04:19:46 +00:00
|
|
|
#include "Kyoto/Math/CMatrix3f.hpp"
|
|
|
|
#include "Kyoto/Math/CTransform4f.hpp"
|
|
|
|
|
2022-08-13 02:48:34 +00:00
|
|
|
class CQuaternion {
|
2022-08-14 18:38:41 +00:00
|
|
|
public:
|
|
|
|
CQuaternion(f32 w, f32 x, f32 y, f32 z) : w(w), x(x), y(y), z(z) {}
|
2022-09-18 05:55:13 +00:00
|
|
|
// CQuaternion(const CQuaternion& other)
|
|
|
|
// : w(other.w)
|
|
|
|
// , x(other.x)
|
|
|
|
// , y(other.y)
|
|
|
|
// , z(other.z) {}
|
|
|
|
|
2022-09-19 04:19:46 +00:00
|
|
|
CQuaternion operator*(const CQuaternion&) const;
|
|
|
|
// Slerp__11CQuaternionFRC11CQuaternionRC11CQuaternionf
|
|
|
|
// ShortestRotationArc__11CQuaternionFRC9CVector3fRC9CVector3f
|
|
|
|
// LookAt__11CQuaternionFRC13CUnitVector3fRC13CUnitVector3fRC9CRelAngle
|
|
|
|
// normalize_angle__Ff
|
|
|
|
// IsValidQuaternion__11CQuaternionCFf
|
|
|
|
// SlerpLocal__11CQuaternionFRC11CQuaternionRC11CQuaternionf
|
|
|
|
// AngleFrom__11CQuaternionCFRC11CQuaternion
|
|
|
|
// BuildEquivalent__11CQuaternionCFv
|
|
|
|
// BuildNormalized__11CQuaternionCFv
|
|
|
|
// AxisAngle__11CQuaternionFRC13CUnitVector3fRC9CRelAngle
|
|
|
|
// Transform__11CQuaternionCFRC9CVector3f
|
|
|
|
// XRotation__11CQuaternionFRC9CRelAngle
|
|
|
|
// YRotation__11CQuaternionFRC9CRelAngle
|
|
|
|
// ZRotation__11CQuaternionFRC9CRelAngle
|
|
|
|
// BuildTransform__11CQuaternionCFv
|
|
|
|
CTransform4f BuildTransform4f() const;
|
|
|
|
CTransform4f BuildTransform4f(const CVector3f&) const;
|
|
|
|
|
|
|
|
static CQuaternion FromMatrixRows(const CVector3f&, const CVector3f&, const CVector3f&);
|
|
|
|
static CQuaternion FromMatrix(const CMatrix3f&);
|
|
|
|
static CQuaternion FromMatrix(const CTransform4f&);
|
|
|
|
|
2022-09-18 05:55:13 +00:00
|
|
|
static const CQuaternion& NoRotation() { return sNoRotation; }
|
2022-08-14 18:38:41 +00:00
|
|
|
|
2022-08-13 02:48:34 +00:00
|
|
|
private:
|
|
|
|
f32 w;
|
|
|
|
f32 x;
|
|
|
|
f32 y;
|
|
|
|
f32 z;
|
2022-09-18 05:55:13 +00:00
|
|
|
|
|
|
|
static const CQuaternion sNoRotation;
|
2022-08-13 02:48:34 +00:00
|
|
|
};
|
|
|
|
|
2022-09-18 06:05:46 +00:00
|
|
|
#endif
|