mirror of
https://github.com/AxioDL/PrimeAPI.git
synced 2026-03-30 11:38:46 -07:00
47 lines
1.5 KiB
C++
47 lines
1.5 KiB
C++
#ifndef CQUATERNION_HPP
|
|
#define CQUATERNION_HPP
|
|
|
|
class CInputStream;
|
|
class CMatrix3f;
|
|
class CRelAngle;
|
|
class CUnitVector3f;
|
|
|
|
class CQuaternion
|
|
{
|
|
public:
|
|
float W;
|
|
float X;
|
|
float Y;
|
|
float Z;
|
|
|
|
inline CQuaternion() {}
|
|
inline CQuaternion(float inW, float inX, float inY, float inZ)
|
|
: W(inW), X(inX), Y(inY), Z(inZ) {}
|
|
CQuaternion(CInputStream&);
|
|
|
|
CVector3f Transform(const CVector3f&) const;
|
|
CQuaternion BuildNormalized() const;
|
|
CQuaternion BuildEquivalent() const;
|
|
CRelAngle AngleFrom(const CQuaternion&) const;
|
|
CTransform4f BuildTransform4f() const;
|
|
CTransform4f BuildTransform4f(const CVector3f&) const;
|
|
CMatrix3f BuildTransform() const;
|
|
|
|
CQuaternion operator*(const CQuaternion&) const;
|
|
|
|
static CQuaternion AxisAngle(const CUnitVector3f&, const CRelAngle&);
|
|
static CQuaternion XRotation(const CRelAngle&);
|
|
static CQuaternion YRotation(const CRelAngle&);
|
|
static CQuaternion ZRotation(const CRelAngle&);
|
|
static CQuaternion SlerpLocal(const CQuaternion&, const CQuaternion&, float);
|
|
static CQuaternion LookAt(const CUnitVector3f&, const CUnitVector3f&, const CRelAngle&);
|
|
static CQuaternion ShortestRotationArc(const CVector3f&, const CVector3f&);
|
|
static CQuaternion Slerp(const CQuaternion&, const CQuaternion&, float);
|
|
static CQuaternion FromMatrix(const CTransform4f&);
|
|
static CQuaternion FromMatrix(const CMatrix3f&);
|
|
static CQuaternion FromMatrixRows(const CVector3f&, const CVector3f&, const CVector3f&);
|
|
|
|
static CQuaternion sNoRotation;
|
|
};
|
|
|
|
#endif // CQUATERNION_HPP
|