NW4F G3d
Loading...
Searching...
No Matches
g3d_Quaternion.h
Go to the documentation of this file.
1#ifndef NW_G3D_MATH_QUATERNION_H_
2#define NW_G3D_MATH_QUATERNION_H_
3
4#include <nw/g3d/g3d_config.h>
5
6namespace nw { namespace g3d { namespace math {
7
8class Mtx34;
9
10struct Quat_t
11{
12 enum { DIM = 4, DIM_PS = DIM / 2 };
13
14 union
15 {
16 struct
17 {
18 float x, y, z, w;
19 };
20 float a[4];
21#if defined( __ghs__ )
22 f32x2 ps[DIM_PS];
23#endif // defined( __ghs__ )
24 };
25};
26
27class Quat : public Quat_t
28{
29public:
30 static Quat Make(float x, float y, float z, float w);
31 static Quat* Cast(float* a);
32 static const Quat* Cast(const float* a);
33
34 Quat& Set(float x, float y, float z, float w);
35 Quat& Set(const float* a);
36 Quat& Set(const Mtx34& m);
37 Quat& Zero();
38 Quat& Identity();
39 Quat& Neg(const Quat& q);
40
41 Quat& Add(const Quat& lhs, const Quat& rhs);
42 Quat& Sub(const Quat& lhs, const Quat& rhs);
43 Quat& Mul(const Quat& lhs, const Quat& rhs);
44 Quat& Mul(const Quat& lhs, float rhs);
45 Quat& Div(const Quat& lhs, float rhs);
46
47 static float Length(const Quat& q);
48 static float LengthSq(const Quat& q);
49 static float Dot(const Quat& lhs, const Quat& rhs);
50 float Normalize(const Quat& q);
51 Quat& Conjugate(const Quat& q);
52 Quat& Inverse(const Quat& q);
53 Quat& Lerp(const Quat& q0, const Quat& q1, float t);
54 Quat& Slerp(const Quat& q0, const Quat& q1, float t);
55};
56
57} } } // namespace nw::g3d::math
58
59#include "inl/g3d_Quaternion-inl.h"
60
61#endif // NW_G3D_MATH_VECTOR3_H_
Definition g3d_Matrix34.h:34
Definition g3d_Quaternion.h:28
static float Dot(const Quat &lhs, const Quat &rhs)
Definition g3d_Quaternion-inl.h:230
Quat & Lerp(const Quat &q0, const Quat &q1, float t)
Definition g3d_Quaternion-inl.h:281
Quat & Inverse(const Quat &q)
Definition g3d_Quaternion-inl.h:266
static const Quat * Cast(const float *a)
Definition g3d_Quaternion-inl.h:19
Quat & Zero()
Definition g3d_Quaternion-inl.h:87
Quat & Identity()
Definition g3d_Quaternion-inl.h:97
Quat & Conjugate(const Quat &q)
Definition g3d_Quaternion-inl.h:256
static float LengthSq(const Quat &q)
Definition g3d_Quaternion-inl.h:224
Quat & Div(const Quat &lhs, float rhs)
Definition g3d_Quaternion-inl.h:208
float Normalize(const Quat &q)
Definition g3d_Quaternion-inl.h:243
Quat & Set(const float *a)
Definition g3d_Quaternion-inl.h:35
Quat & Add(const Quat &lhs, const Quat &rhs)
Definition g3d_Quaternion-inl.h:121
Quat & Sub(const Quat &lhs, const Quat &rhs)
Definition g3d_Quaternion-inl.h:136
static Quat Make(float x, float y, float z, float w)
Definition g3d_Quaternion-inl.h:7
Quat & Set(const Mtx34 &m)
Definition g3d_Quaternion-inl.h:46
Quat & Set(float x, float y, float z, float w)
Definition g3d_Quaternion-inl.h:25
static Quat * Cast(float *a)
Definition g3d_Quaternion-inl.h:13
Quat & Slerp(const Quat &q0, const Quat &q1, float t)
Definition g3d_Quaternion-inl.h:298
static float Length(const Quat &q)
Definition g3d_Quaternion-inl.h:218
Quat & Mul(const Quat &lhs, const Quat &rhs)
Definition g3d_Quaternion-inl.h:151
Quat & Neg(const Quat &q)
Definition g3d_Quaternion-inl.h:104
Quat & Mul(const Quat &lhs, float rhs)
Definition g3d_Quaternion-inl.h:193
Definition g3d_MathCommon.h:6
Definition g3d_GfxManage.cpp:10
Definition g3d_Quaternion.h:11
float w
Definition g3d_Quaternion.h:18
@ DIM_PS
Definition g3d_Quaternion.h:12
@ DIM
Definition g3d_Quaternion.h:12
float y
Definition g3d_Quaternion.h:18
float x
Definition g3d_Quaternion.h:18
float z
Definition g3d_Quaternion.h:18
float a[4]
Definition g3d_Quaternion.h:20