Updated documentation
This commit is contained in:
parent
4eafc6b5de
commit
6b3abb1731
@ -28,13 +28,6 @@ Quaternion::Quaternion(float _x, float _y, float _z, float _w) {
|
|||||||
w = _w;
|
w = _w;
|
||||||
}
|
}
|
||||||
|
|
||||||
Quaternion::Quaternion(Vector3 _xyz, float _w) {
|
|
||||||
x = _xyz.x;
|
|
||||||
y = _xyz.y;
|
|
||||||
z = _xyz.z;
|
|
||||||
w = _w;
|
|
||||||
}
|
|
||||||
|
|
||||||
Quaternion::Quaternion(Quat q) {
|
Quaternion::Quaternion(Quat q) {
|
||||||
x = q.x;
|
x = q.x;
|
||||||
y = q.y;
|
y = q.y;
|
||||||
@ -320,8 +313,8 @@ Quaternion Quaternion::SlerpUnclamped(const Quaternion& a, const Quaternion& b,
|
|||||||
blendA = 1.0f - t;
|
blendA = 1.0f - t;
|
||||||
blendB = t;
|
blendB = t;
|
||||||
}
|
}
|
||||||
|
Vector3 v = axyz * blendA + b2.xyz() * blendB;
|
||||||
Quaternion result = Quaternion(axyz * blendA + b2.xyz() * blendB, blendA * a.w + blendB * b2.w);
|
Quaternion result = Quaternion(v.x, v.y, v.z, blendA * a.w + blendB * b2.w);
|
||||||
if (result.GetLengthSquared() > 0.0f)
|
if (result.GetLengthSquared() > 0.0f)
|
||||||
return Quaternion::Normalize(result);
|
return Quaternion::Normalize(result);
|
||||||
else
|
else
|
||||||
|
31
Quaternion.h
31
Quaternion.h
@ -20,23 +20,34 @@ extern "C" {
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
struct Quaternion : Quat {
|
struct Quaternion : Quat {
|
||||||
public:
|
public:
|
||||||
|
/// <summary>
|
||||||
|
/// Create a new identity quaternion
|
||||||
|
/// </summary>
|
||||||
Quaternion();
|
Quaternion();
|
||||||
|
/// <summary>
|
||||||
|
/// create a new quaternion with the given values
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="_x">x axis value</param>
|
||||||
|
/// <param name="_y">y axis value</param>
|
||||||
|
/// <param name="_z">z axis value</param>
|
||||||
|
/// <param name="_w">w axis value</param>
|
||||||
Quaternion(float _x, float _y, float _z, float _w);
|
Quaternion(float _x, float _y, float _z, float _w);
|
||||||
Quaternion(Vector3 _xyz, float _w);
|
/// <summary>
|
||||||
|
/// Create a quaternion from C-style Quat
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="q"></param>
|
||||||
Quaternion(Quat q);
|
Quaternion(Quat q);
|
||||||
~Quaternion();
|
~Quaternion();
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// An identity quaternion
|
||||||
|
/// </summary>
|
||||||
const static Quaternion identity;
|
const static Quaternion identity;
|
||||||
|
|
||||||
float GetLength() const;
|
|
||||||
float GetLengthSquared() const;
|
|
||||||
static float GetLengthSquared(const Quaternion& q);
|
|
||||||
void Normalize();
|
void Normalize();
|
||||||
static Quaternion Normalize(const Quaternion& q);
|
static Quaternion Normalize(const Quaternion& q);
|
||||||
static void Normalize(const Quaternion& q, Quaternion& result);
|
static void Normalize(const Quaternion& q, Quaternion& result);
|
||||||
|
|
||||||
static float Dot(Quaternion a, Quaternion b);
|
|
||||||
|
|
||||||
static Vector3 ToAngles(const Quaternion& q1);
|
static Vector3 ToAngles(const Quaternion& q1);
|
||||||
|
|
||||||
Vector3 operator *(const Vector3& p) const;
|
Vector3 operator *(const Vector3& p) const;
|
||||||
@ -65,6 +76,14 @@ public:
|
|||||||
static float GetAngleAround(Vector3 axis, Quaternion rotation);
|
static float GetAngleAround(Vector3 axis, Quaternion rotation);
|
||||||
static Quaternion GetRotationAround(Vector3 axis, Quaternion rotation);
|
static Quaternion GetRotationAround(Vector3 axis, Quaternion rotation);
|
||||||
static void GetSwingTwist(Vector3 axis, Quaternion rotation, Quaternion* swing, Quaternion* twist);
|
static void GetSwingTwist(Vector3 axis, Quaternion rotation, Quaternion* swing, Quaternion* twist);
|
||||||
|
|
||||||
|
protected:
|
||||||
|
float GetLength() const;
|
||||||
|
float GetLengthSquared() const;
|
||||||
|
static float GetLengthSquared(const Quaternion& q);
|
||||||
|
|
||||||
|
static float Dot(Quaternion a, Quaternion b);
|
||||||
|
|
||||||
public:
|
public:
|
||||||
Vector3 xyz() const;
|
Vector3 xyz() const;
|
||||||
};
|
};
|
||||||
|
@ -1,12 +1,8 @@
|
|||||||
\author PasserVR
|
|
||||||
\version 0.1
|
|
||||||
\mainpage Vector Algebra
|
\mainpage Vector Algebra
|
||||||
|
|
||||||
3D Vector algebra library (Vector3, Quaternion)
|
3D Vector algebra library (Vector3, Quaternion)
|
||||||
|
|
||||||
Note: this documentation is still work in progress....
|
|
||||||
|
|
||||||
Main components
|
Main components
|
||||||
---------------
|
---------------
|
||||||
* Vector3
|
* [Vector3](https://passervr.com/apis/VectorAlgebra/struct_vector3.html)
|
||||||
* Quaternion
|
* [Quaternion](https://passervr.com/apis/VectorAlgebra/struct_quaternion.html)
|
Loading…
x
Reference in New Issue
Block a user