3 次元空間で回転姿勢を表す型です。
クオータニオンは複素平面の三次元版であり、回転を積で表すことができるため処理が軽いです。またオイラー角特有のシンバルロックが起きません。
Udon::Quaternion
クラスは以下のメンバを持ちます。
struct Quaternion
{
using ValueType = double;
ValueType x;
ValueType y;
ValueType z;
ValueType w;
constexpr Quaternion() noexcept;
constexpr Quaternion(ValueType x, ValueType y, ValueType z, ValueType w) noexcept;
Quaternion(const Quaternion&) = default;
Quaternion& operator=(const Quaternion&) = default;
constexpr Quaternion operator*(const Quaternion& rhs) const noexcept;
Quaternion& operator*=(const Quaternion& rhs) noexcept;
constexpr bool operator==(const Quaternion& rhs) const noexcept;
constexpr bool operator!=(const Quaternion& rhs) const noexcept;
explicit constexpr operator bool() const noexcept;
constexpr Quaternion inverse() const noexcept;
constexpr Quaternion directionRevision(QuaternionDirection direction) const noexcept
static Quaternion Identity() noexcept;
static Quaternion RotateX(ValueType angle) noexcept;
static Quaternion RotateY(ValueType angle) noexcept;
static Quaternion RotateZ(ValueType angle) noexcept;
constexpr bool isZero() const noexcept;
void clear() noexcept;
Euler toEuler() const noexcept;
double toYaw() const noexcept;
double toPitch() const noexcept;
double toRoll() const noexcept;
void show() const;
};