81 w * rhs.x +
x * rhs.w +
y * rhs.z -
z * rhs.y,
82 w * rhs.y -
x * rhs.z +
y * rhs.w +
z * rhs.x,
83 w * rhs.z +
x * rhs.y -
y * rhs.x +
z * rhs.w,
84 w * rhs.w -
x * rhs.x -
y * rhs.y -
z * rhs.z,
105 return !(*
this == rhs);
110 explicit constexpr operator bool() const noexcept
112 return x ||
y ||
z ||
w;
119 return { -
x, -
y, -
z,
w };
128 x * (direction.x ? 1 : -1),
129 y * (direction.y ? 1 : -1),
130 z * (direction.z ? 1 : -1),
139 return { 0, 0, 0, 1 };
147 return { sin(angle / 2), 0, 0, cos(angle / 2) };
155 return { 0, sin(angle / 2), 0, cos(angle / 2) };
163 return { 0, 0, sin(angle / 2), cos(angle / 2) };
169 return !
operator bool();
185 return atan2(2 * (
w *
z +
x *
y), 1 - 2 * (
y *
y +
z *
z));
191 return asin(2 * (
w *
y -
z *
x));
197 return atan2(2 * (
w *
x +
y *
z), 1 - 2 * (
x *
x +
y *
y));
213 operator s3d::Quaternion() const noexcept
215 return s3d::Quaternion(
x,
y,
z,
w);
223 Serial.print(
F(
"x: ")), Serial.print(
x), Serial.print(
'\t');
224 Serial.print(
F(
"y: ")), Serial.print(
y), Serial.print(
'\t');
225 Serial.print(
F(
"z: ")), Serial.print(
z), Serial.print(
'\t');
226 Serial.print(
F(
"w: ")), Serial.print(
w), Serial.print(
'\t');
#define UDON_ENUMERABLE(...)
メンバ変数の列挙を可能にする
Definition EnumerableMacro.hpp:11
#define F(x)
Definition Show.hpp:17
オイラー角
Definition Euler.hpp:31
クオータニオンの各成分の正負を表す構造体
Definition Quaternion.hpp:21
bool x
Definition Quaternion.hpp:22
bool y
Definition Quaternion.hpp:23
bool z
Definition Quaternion.hpp:24
constexpr Quaternion inverse() const noexcept
逆クオータニオン
Definition Quaternion.hpp:117
constexpr Quaternion() noexcept
デフォルトコンストラクタ
Definition Quaternion.hpp:48
static Quaternion RotateY(ValueType angle) noexcept
Y軸回転クオータニオン
Definition Quaternion.hpp:153
constexpr Quaternion directionRevision(const QuaternionDirection &direction) const noexcept
回転方向を修正したクオータニオンを取得する
Definition Quaternion.hpp:125
ValueType x
x成分
Definition Quaternion.hpp:36
constexpr bool operator==(const Quaternion &rhs) const noexcept
比較演算子
Definition Quaternion.hpp:96
constexpr Quaternion operator*(const Quaternion &rhs) const noexcept
内積
Definition Quaternion.hpp:78
double toPitch() const noexcept
ピッチ角を取得
Definition Quaternion.hpp:189
double ValueType
要素の型
Definition Quaternion.hpp:33
ValueType z
z成分
Definition Quaternion.hpp:42
double toYaw() const noexcept
ヨー角を取得
Definition Quaternion.hpp:183
Quaternion & operator*=(const Quaternion &rhs) noexcept
複合代入演算子
Definition Quaternion.hpp:91
void clear() noexcept
値クリア
Definition Quaternion.hpp:173
static Quaternion RotateX(ValueType angle) noexcept
X軸回転クオータニオン
Definition Quaternion.hpp:145
Quaternion & operator=(const Quaternion &)=default
デフォルトコピー代入演算子
constexpr bool isZero() const noexcept
要素がゼロであるか
Definition Quaternion.hpp:167
constexpr Quaternion(ValueType x, ValueType y, ValueType z, ValueType w) noexcept
コンストラクタ
Definition Quaternion.hpp:61
Euler toEuler() const noexcept
オイラー角に変換
Definition Quaternion.hpp:12
static Quaternion RotateZ(ValueType angle) noexcept
Z軸回転クオータニオン
Definition Quaternion.hpp:161
constexpr bool operator!=(const Quaternion &rhs) const noexcept
Definition Quaternion.hpp:103
ValueType w
w成分
Definition Quaternion.hpp:45
ValueType y
y成分
Definition Quaternion.hpp:39
static Quaternion Identity() noexcept
単位クオータニオン
Definition Quaternion.hpp:137
double toRoll() const noexcept
ロール角を取得
Definition Quaternion.hpp:195
Quaternion(const Quaternion &)=default
デフォルトコピーコンストラクタ