Plasma Engine  2.0
Loading...
Searching...
No Matches
SimdQuat.h
1#pragma once
2
3#include <Foundation/SimdMath/SimdMat4f.h>
4
5class PL_FOUNDATION_DLL plSimdQuat
6{
7public:
8 PL_DECLARE_POD_TYPE();
9
10 plSimdQuat(); // [tested]
11
12 explicit plSimdQuat(const plSimdVec4f& v); // [tested]
13
15 [[nodiscard]] static const plSimdQuat MakeIdentity(); // [tested]
16
21 [[nodiscard]] static plSimdQuat MakeFromElements(plSimdFloat x, plSimdFloat y, plSimdFloat z, plSimdFloat w); // [tested]
22
24 [[nodiscard]] static plSimdQuat MakeFromAxisAndAngle(const plSimdVec4f& vRotationAxis, const plSimdFloat& fAngle); // [tested]
25
27 [[nodiscard]] static plSimdQuat MakeShortestRotation(const plSimdVec4f& vDirFrom, const plSimdVec4f& vDirTo); // [tested]
28
30 [[nodiscard]] static plSimdQuat MakeSlerp(const plSimdQuat& qFrom, const plSimdQuat& qTo, const plSimdFloat& t); // [tested]
31
32public:
34 void Normalize(); // [tested]
35
37 plResult GetRotationAxisAndAngle(plSimdVec4f& ref_vAxis, plSimdFloat& ref_fAngle, const plSimdFloat& fEpsilon = plMath::DefaultEpsilon<float>()) const; // [tested]
38
40 plSimdMat4f GetAsMat4() const; // [tested]
41
43 bool IsValid(const plSimdFloat& fEpsilon = plMath::DefaultEpsilon<float>()) const; // [tested]
44
46 bool IsNaN() const; // [tested]
47
53 bool IsEqualRotation(const plSimdQuat& qOther, const plSimdFloat& fEpsilon) const; // [tested]
54
55public:
57 [[nodiscard]] plSimdQuat operator-() const; // [tested]
58
60 [[nodiscard]] plSimdVec4f operator*(const plSimdVec4f& v) const; // [tested]
61
63 [[nodiscard]] plSimdQuat operator*(const plSimdQuat& q2) const; // [tested]
64
65 bool operator==(const plSimdQuat& q2) const; // [tested]
66 bool operator!=(const plSimdQuat& q2) const; // [tested]
67
68public:
69 plSimdVec4f m_v;
70};
71
72#include <Foundation/SimdMath/Implementation/SimdQuat_inl.h>
Definition SimdFloat.h:7
A 4x4 matrix class.
Definition SimdMat4f.h:7
Definition SimdQuat.h:6
A 4-component SIMD vector class.
Definition SimdVec4f.h:8
Default enum for returning failure or success, instead of using a bool.
Definition Types.h:54