Updated documentation

This commit is contained in:
Pascal Serrarens 2022-01-07 16:53:38 +01:00
parent 4eafc6b5de
commit 6b3abb1731
3 changed files with 29 additions and 21 deletions

View File

@ -28,13 +28,6 @@ Quaternion::Quaternion(float _x, float _y, float _z, float _w) {
w = _w;
}
Quaternion::Quaternion(Vector3 _xyz, float _w) {
x = _xyz.x;
y = _xyz.y;
z = _xyz.z;
w = _w;
}
Quaternion::Quaternion(Quat q) {
x = q.x;
y = q.y;
@ -320,8 +313,8 @@ Quaternion Quaternion::SlerpUnclamped(const Quaternion& a, const Quaternion& b,
blendA = 1.0f - t;
blendB = t;
}
Quaternion result = Quaternion(axyz * blendA + b2.xyz() * blendB, blendA * a.w + blendB * b2.w);
Vector3 v = axyz * blendA + b2.xyz() * blendB;
Quaternion result = Quaternion(v.x, v.y, v.z, blendA * a.w + blendB * b2.w);
if (result.GetLengthSquared() > 0.0f)
return Quaternion::Normalize(result);
else

View File

@ -20,23 +20,34 @@ extern "C" {
/// </summary>
struct Quaternion : Quat {
public:
/// <summary>
/// Create a new identity quaternion
/// </summary>
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(Vector3 _xyz, float _w);
/// <summary>
/// Create a quaternion from C-style Quat
/// </summary>
/// <param name="q"></param>
Quaternion(Quat q);
~Quaternion();
/// <summary>
/// An identity quaternion
/// </summary>
const static Quaternion identity;
float GetLength() const;
float GetLengthSquared() const;
static float GetLengthSquared(const Quaternion& q);
void Normalize();
static Quaternion Normalize(const Quaternion& q);
static void Normalize(const Quaternion& q, Quaternion& result);
static float Dot(Quaternion a, Quaternion b);
static Vector3 ToAngles(const Quaternion& q1);
Vector3 operator *(const Vector3& p) const;
@ -65,6 +76,14 @@ public:
static float GetAngleAround(Vector3 axis, Quaternion rotation);
static Quaternion GetRotationAround(Vector3 axis, Quaternion rotation);
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:
Vector3 xyz() const;
};

View File

@ -1,12 +1,8 @@
\author PasserVR
\version 0.1
\mainpage Vector Algebra
3D Vector algebra library (Vector3, Quaternion)
Note: this documentation is still work in progress....
Main components
---------------
* Vector3
* Quaternion
* [Vector3](https://passervr.com/apis/VectorAlgebra/struct_vector3.html)
* [Quaternion](https://passervr.com/apis/VectorAlgebra/struct_quaternion.html)