12GX_CORE_NAMESPACE_BEGIN()
306 return (quaternion0.
_x == quaternion1.
_x) && (quaternion0.
_y == quaternion1.
_y) && (quaternion0.
_z == quaternion1.
_z) && (quaternion0.
_w == quaternion1.
_w);
317 return (quaternion0.
_x != quaternion1.
_x) || (quaternion0.
_y != quaternion1.
_y) || (quaternion0.
_z != quaternion1.
_z) || (quaternion0.
_w != quaternion1.
_w);
344 const auto inverseLength = 1.0f /
getLength();
361 if( F32_ABS_MIN < lengthSquare )
397 if(lengthSquare <= F32_ABS_MIN )
402 auto inverseLengthSquare = 1.0f / lengthSquare;
404 return GxQuaternion(-
_x * inverseLengthSquare, -
_y * inverseLengthSquare, -
_z * inverseLengthSquare,
_w * inverseLengthSquare);
464 dst.
_x = quaternion.
_x + scalar;
465 dst.
_y = quaternion.
_y + scalar;
466 dst.
_z = quaternion.
_z + scalar;
467 dst.
_w = quaternion.
_w + scalar;
481 dst.
_x = quaternion.
_x - scalar;
482 dst.
_y = quaternion.
_y - scalar;
483 dst.
_z = quaternion.
_z - scalar;
484 dst.
_w = quaternion.
_w - scalar;
498 dst.
_x = quaternion.
_x * scalar;
499 dst.
_y = quaternion.
_y * scalar;
500 dst.
_z = quaternion.
_z * scalar;
501 dst.
_w = quaternion.
_w * scalar;
515 auto inverseScalar = 1.0f / scalar;
517 dst.
_x = quaternion.
_x * inverseScalar;
518 dst.
_y = quaternion.
_y * inverseScalar;
519 dst.
_z = quaternion.
_z * inverseScalar;
520 dst.
_w = quaternion.
_w * inverseScalar;
534 dst.
_x = quaternion0.
_x + quaternion1.
_x;
535 dst.
_y = quaternion0.
_y + quaternion1.
_y;
536 dst.
_z = quaternion0.
_z + quaternion1.
_z;
537 dst.
_w = quaternion0.
_w + quaternion1.
_w;
551 dst.
_x = quaternion0.
_x - quaternion1.
_x;
552 dst.
_y = quaternion0.
_y - quaternion1.
_y;
553 dst.
_z = quaternion0.
_z - quaternion1.
_z;
554 dst.
_w = quaternion0.
_w - quaternion1.
_w;
568 dst.
_x = quaternion0.
_y * quaternion1.
_z - quaternion0.
_z * quaternion1.
_y + quaternion0.
_w * quaternion1.
_x + quaternion0.
_x * quaternion1.
_w;
569 dst.
_y = quaternion0.
_z * quaternion1.
_x - quaternion0.
_x * quaternion1.
_z + quaternion0.
_w * quaternion1.
_y + quaternion0.
_y * quaternion1.
_w;
570 dst.
_z = quaternion0.
_x * quaternion1.
_y - quaternion0.
_y * quaternion1.
_x + quaternion0.
_w * quaternion1.
_z + quaternion0.
_z * quaternion1.
_w;
571 dst.
_w = quaternion0.
_w * quaternion1.
_w - quaternion0.
_x * quaternion1.
_x - quaternion0.
_y * quaternion1.
_y - quaternion0.
_z * quaternion1.
_z;
584 const auto inverseLength = 1.0f / quaternion.
getLength();
586 dst.
_x = quaternion.
_x * inverseLength;
587 dst.
_y = quaternion.
_y * inverseLength;
588 dst.
_z = quaternion.
_z * inverseLength;
589 dst.
_w = quaternion.
_w * inverseLength;
604 if( F32_ABS_MIN < lengthSquare )
608 dst.
_x = quaternion.
_x * inverseLength;
609 dst.
_y = quaternion.
_y * inverseLength;
610 dst.
_z = quaternion.
_z * inverseLength;
611 dst.
_w = quaternion.
_w * inverseLength;
632 dst.
_x = -quaternion.
_x;
633 dst.
_y = -quaternion.
_y;
634 dst.
_z = -quaternion.
_z;
635 dst.
_w = quaternion.
_w;
649 if(lengthSquare <= F32_ABS_MIN )
658 auto inverseLengthSquare = 1.0f / lengthSquare;
659 dst.
_x = -quaternion.
_x * inverseLengthSquare;
660 dst.
_y = -quaternion.
_y * inverseLengthSquare;
661 dst.
_z = -quaternion.
_z * inverseLengthSquare;
662 dst.
_w = quaternion.
_w * inverseLengthSquare;
820 return quaternion0.
_x * quaternion1.
_x + quaternion0.
_y * quaternion1.
_y + quaternion0.
_z * quaternion1.
_z + quaternion0.
_w * quaternion1.
_w;
828 dst.
_x = quaternion0.
_x + (quaternion1.
_x - quaternion0.
_x) * t;
829 dst.
_y = quaternion0.
_y + (quaternion1.
_y - quaternion0.
_y) * t;
830 dst.
_z = quaternion0.
_z + (quaternion1.
_z - quaternion0.
_z) * t;
831 dst.
_w = quaternion0.
_w + (quaternion1.
_w - quaternion0.
_w) * t;
842 GxQuaternion quaternion[2] = { quaternion0, quaternion1 };
846 quaternion[0] = quaternion[0] * -1.0f;
849 if( dot >= 1.0f - FLT_EPSILON )
852 return getLerp(dst, quaternion[0], quaternion[1], t);
861 dst.
_x = (quaternion[0].
_x * rotationFrom + quaternion[1].
_x * rotationTo) * rotationInverse;
862 dst.
_y = (quaternion[0].
_y * rotationFrom + quaternion[1].
_y * rotationTo) * rotationInverse;
863 dst.
_z = (quaternion[0].
_z * rotationFrom + quaternion[1].
_z * rotationTo) * rotationInverse;
864 dst.
_w = (quaternion[0].
_w * rotationFrom + quaternion[1].
_w * rotationTo) * rotationInverse;
921 auto invScalar = 1.0f / scalar;
968 const auto x =
_y * quaternion.
_z -
_z * quaternion.
_y +
_w * quaternion.
_x +
_x * quaternion.
_w;
969 const auto y =
_z * quaternion.
_x -
_x * quaternion.
_z +
_w * quaternion.
_y +
_y * quaternion.
_w;
970 const auto z =
_x * quaternion.
_y -
_y * quaternion.
_x +
_w * quaternion.
_z +
_z * quaternion.
_w;
971 const auto w =
_w * quaternion.
_w -
_x * quaternion.
_x -
_y * quaternion.
_y -
_z * quaternion.
_z;
988 const auto inverseLength = 1.0f /
getLength();
1007 if( F32_ABS_MIN < lengthSquare )
1011 _x *= inverseLength;
1012 _y *= inverseLength;
1013 _z *= inverseLength;
1014 _w *= inverseLength;
1048 if(lengthSquare <= F32_ABS_MIN )
1057 f32 inverseLengthSquare = 1.0f / lengthSquare;
1058 _x = -
_x * inverseLengthSquare;
1059 _y = -
_y * inverseLengthSquare;
1060 _z = -
_z * inverseLengthSquare;
1061 _w =
_w * inverseLengthSquare;
1196GX_CORE_NAMESPACE_END()
GX_FORCE_INLINE const GxQuaternion operator-(const GxQuaternion &quaternion, f32 scalar)
Definition GxQuaternion.inl:220
GX_FORCE_INLINE b32 operator==(const GxQuaternion &quaternion0, const GxQuaternion &quaternion1)
Definition GxQuaternion.inl:304
GX_FORCE_INLINE const GxQuaternion operator+(const GxQuaternion &quaternion, f32 scalar)
Definition GxQuaternion.inl:208
GX_FORCE_INLINE const GxQuaternion operator/(const GxQuaternion &quaternion, f32 scalar)
Definition GxQuaternion.inl:256
GX_FORCE_INLINE b32 operator!=(const GxQuaternion &quaternion0, const GxQuaternion &quaternion1)
Definition GxQuaternion.inl:315
GX_FORCE_INLINE const GxQuaternion operator*(const GxQuaternion &quaternion, f32 scalar)
Definition GxQuaternion.inl:232
static GX_FORCE_INLINE f32 getCos(const f32 radian)
余弦を取得(f32)
Definition GxMath.h:212
static GX_FORCE_INLINE f32 getACos(const f32 value)
逆余弦を取得(f32)
Definition GxMath.h:233
static GX_FORCE_INLINE f32 getSqrt(const f32 value)
平方根を取得(f32)
Definition GxMath.h:259
static GX_FORCE_INLINE f32 getSin(const f32 radian)
正弦を取得(f32)
Definition GxMath.h:205
4次元浮動小数点数クラス
Definition GxStruct.h:153
4×4行列(行優先)
Definition GxMatrix.h:607
アフィン変換行列(行優先)
Definition GxMatrix.h:330
クォータニオン
Definition GxQuaternion.h:19
static GX_FORCE_INLINE const GxQuaternion & getSubQuaternion(GxQuaternion &dst, const GxQuaternion &quaternion0, const GxQuaternion &quaternion1)
クォータニオン減算を取得
Definition GxQuaternion.inl:549
GX_FORCE_INLINE const GxQuaternion & mulScalar(f32 scalar)
スカラ乗算
Definition GxQuaternion.inl:904
static GX_FORCE_INLINE const GxQuaternion & getMulRotateZYX(GxQuaternion &dst, const GxQuaternion &quaternion, f32 radianX, f32 radianY, f32 radianZ)
ZYX軸回転乗算を取得
Definition GxQuaternion.inl:807
GX_FORCE_INLINE GxQuaternion & operator/=(f32 scalar)
スカラ除算代入
Definition GxQuaternion.inl:163
GX_FORCE_INLINE void setRotateXZY(f32 x, f32 y, f32 z)
XZY軸回転を設定
Definition GxQuaternion.h:157
GX_FORCE_INLINE f32 getLength(void) const
長さを取得
Definition GxQuaternion.inl:324
static GX_FORCE_INLINE const GxQuaternion & getMulRotateX(GxQuaternion &dst, const GxQuaternion &quaternion, f32 radian)
X軸回転乗算を取得
Definition GxQuaternion.inl:675
GX_FORCE_INLINE const GxQuaternion & divScalar(f32 scalar)
スカラ除算
Definition GxQuaternion.inl:919
GX_FORCE_INLINE const GxQuaternion & mulRotateYXZ(f32 radianX, f32 radianY, f32 radianZ)
YXZ軸回転乗算
Definition GxQuaternion.inl:1143
GX_FORCE_INLINE const GxQuaternion & mulRotateZYX(f32 radianX, f32 radianY, f32 radianZ)
ZYX軸回転乗算
Definition GxQuaternion.inl:1188
static GX_FORCE_INLINE const GxQuaternion & getMulRotateXYZ(GxQuaternion &dst, const GxQuaternion &quaternion, f32 radianX, f32 radianY, f32 radianZ)
XYZ軸回転乗算を取得
Definition GxQuaternion.inl:722
static GX_FORCE_INLINE f32 getDot(const GxQuaternion &quaternion0, const GxQuaternion &quaternion1)
内積を取得
Definition GxQuaternion.inl:818
GX_FORCE_INLINE const GxQuaternion & mulRotateXYZ(f32 radianX, f32 radianY, f32 radianZ)
XYZ軸回転乗算
Definition GxQuaternion.inl:1113
static GX_FORCE_INLINE const GxQuaternion & getSphericalLerp(GxQuaternion &dst, const GxQuaternion &quaternion0, const GxQuaternion &quaternion1, f32 t)
球面線形補間を取得
Definition GxQuaternion.inl:839
GX_FORCE_INLINE void setRotateZ(f32 radian)
Z軸回転を設定
Definition GxQuaternion.inl:446
GX_FORCE_INLINE const GxQuaternion & mulRotateXZY(f32 radianX, f32 radianY, f32 radianZ)
XZY軸回転乗算
Definition GxQuaternion.inl:1128
static GX_FORCE_INLINE const GxQuaternion & getMulRotateZXY(GxQuaternion &dst, const GxQuaternion &quaternion, f32 radianX, f32 radianY, f32 radianZ)
ZXY軸回転乗算を取得
Definition GxQuaternion.inl:790
GX_FORCE_INLINE GxQuaternion getConjugate(void) const
共役クォータニオンを取得
Definition GxQuaternion.inl:385
GX_FORCE_INLINE const GxQuaternion & conjugate(void)
共役クォータニオンを計算する
Definition GxQuaternion.inl:1032
f32 _x
X値
Definition GxQuaternion.h:272
static GX_FORCE_INLINE const GxQuaternion & getMulRotateYZX(GxQuaternion &dst, const GxQuaternion &quaternion, f32 radianX, f32 radianY, f32 radianZ)
YZX軸回転乗算を取得
Definition GxQuaternion.inl:773
static GX_FORCE_INLINE const GxQuaternion & getAddScalar(GxQuaternion &dst, const GxQuaternion &quaternion, f32 scalar)
スカラ加算を取得
Definition GxQuaternion.inl:462
static GX_FORCE_INLINE const GxQuaternion & getAddQuaternion(GxQuaternion &dst, const GxQuaternion &quaternion0, const GxQuaternion &quaternion1)
クォータニオン加算を取得
Definition GxQuaternion.inl:532
GX_FORCE_INLINE GxQuaternion & operator-=(f32 scalar)
スカラ減算代入
Definition GxQuaternion.inl:141
static GX_FORCE_INLINE const GxQuaternion & getMulScalar(GxQuaternion &dst, const GxQuaternion &quaternion, f32 scalar)
スカラ乗算を取得
Definition GxQuaternion.inl:496
GX_FORCE_INLINE GxQuaternion & operator=(const GxQuaternion &quaternion)
代入
Definition GxQuaternion.inl:116
GX_FORCE_INLINE void setRotateZXY(f32 x, f32 y, f32 z)
ZXY軸回転を設定
Definition GxQuaternion.h:163
GX_FORCE_INLINE const GxQuaternion & addQuaternion(const GxQuaternion &quaternion)
クォータニオン加算
Definition GxQuaternion.inl:936
static GX_FORCE_INLINE const GxQuaternion & getSubScalar(GxQuaternion &dst, const GxQuaternion &quaternion, f32 scalar)
スカラ減算を取得
Definition GxQuaternion.inl:479
static const GxQuaternion ZERO
0クォータニオン
Definition GxQuaternion.h:28
GX_FORCE_INLINE GxQuaternion getNormalize(void) const
正規化クォータニオンを取得
Definition GxQuaternion.inl:342
f32 _w
W値
Definition GxQuaternion.h:275
GX_FORCE_INLINE GxQuaternion & operator+=(f32 scalar)
スカラ加算代入
Definition GxQuaternion.inl:130
static GX_FORCE_INLINE const GxQuaternion & getMulQuaternion(GxQuaternion &dst, const GxQuaternion &quaternion0, const GxQuaternion &quaternion1)
クォータニオン乗算を取得
Definition GxQuaternion.inl:566
GX_FORCE_INLINE f32 getLengthSquare(void) const
長さの2乗を取得
Definition GxQuaternion.inl:333
GX_FORCE_INLINE void setRotateXYZ(f32 x, f32 y, f32 z)
XYZ軸回転を設定
Definition GxQuaternion.h:155
GX_FORCE_INLINE GxQuaternion & operator*=(f32 scalar)
スカラ乗算代入
Definition GxQuaternion.inl:152
GX_FORCE_INLINE const GxQuaternion & normalizeEx(void)
正規化する(長さ0に対応)
Definition GxQuaternion.inl:1003
GX_FORCE_INLINE const GxQuaternion & mulRotateZ(f32 radian)
Z軸回転乗算
Definition GxQuaternion.inl:1098
static GX_FORCE_INLINE const GxQuaternion & getDivScalar(GxQuaternion &dst, const GxQuaternion &quaternion, f32 scalar)
スカラ除算を取得
Definition GxQuaternion.inl:513
static GX_FORCE_INLINE const GxQuaternion & getMulRotateYXZ(GxQuaternion &dst, const GxQuaternion &quaternion, f32 radianX, f32 radianY, f32 radianZ)
YXZ軸回転乗算を取得
Definition GxQuaternion.inl:756
GX_FORCE_INLINE const GxQuaternion & mulRotateY(f32 radian)
Y軸回転乗算
Definition GxQuaternion.inl:1085
GX_FORCE_INLINE void setRotateY(f32 radian)
Y軸回転を設定
Definition GxQuaternion.inl:433
GX_FORCE_INLINE const GxQuaternion & addScalar(f32 scalar)
スカラ加算
Definition GxQuaternion.inl:874
GX_FORCE_INLINE const GxQuaternion & mulRotateX(f32 radian)
X軸回転乗算
Definition GxQuaternion.inl:1072
GX_FORCE_INLINE void setRotateYXZ(f32 x, f32 y, f32 z)
YXZ軸回転を設定
Definition GxQuaternion.h:159
GX_FORCE_INLINE void setRotate(const GxVector3 &vector)
回転を設定(ベクトル指定)
Definition GxQuaternion.inl:411
static GX_FORCE_INLINE const GxQuaternion & getMulRotateZ(GxQuaternion &dst, const GxQuaternion &quaternion, f32 radian)
Z軸回転乗算を取得
Definition GxQuaternion.inl:705
GX_FORCE_INLINE const GxQuaternion & normalize(void)
正規化する
Definition GxQuaternion.inl:986
GX_FORCE_INLINE void setRotateX(f32 radian)
X軸回転を設定
Definition GxQuaternion.inl:420
f32 _y
Y値
Definition GxQuaternion.h:273
GX_FORCE_INLINE void setRotateZYX(f32 x, f32 y, f32 z)
ZYX軸回転を設定
Definition GxQuaternion.h:165
static GX_FORCE_INLINE const GxQuaternion & getMulRotateXZY(GxQuaternion &dst, const GxQuaternion &quaternion, f32 radianX, f32 radianY, f32 radianZ)
XZY軸回転乗算を取得
Definition GxQuaternion.inl:739
static GX_FORCE_INLINE const GxQuaternion & getLerp(GxQuaternion &dst, const GxQuaternion &quaternion0, const GxQuaternion &quaternion1, f32 t)
線形補間を取得
Definition GxQuaternion.inl:826
GxQuaternion(void)
デフォルトコンストラクタ
Definition GxQuaternion.h:38
GX_FORCE_INLINE const GxQuaternion & mulQuaternion(const GxQuaternion &quaternion)
クォータニオン乗算
Definition GxQuaternion.inl:966
GX_FORCE_INLINE void setRotateYZX(f32 x, f32 y, f32 z)
YZX軸回転を設定
Definition GxQuaternion.h:161
f32 _z
Z値
Definition GxQuaternion.h:274
GX_FORCE_INLINE const GxQuaternion & subScalar(f32 scalar)
スカラ減算
Definition GxQuaternion.inl:889
GX_FORCE_INLINE const GxQuaternion & mulRotateZXY(f32 radianX, f32 radianY, f32 radianZ)
ZXY軸回転乗算
Definition GxQuaternion.inl:1173
GX_FORCE_INLINE const GxQuaternion & subQuaternion(const GxQuaternion &quaternion)
クォータニオン減算
Definition GxQuaternion.inl:951
GX_FORCE_INLINE GxQuaternion getNormalizeEx(void) const
正規化クォータニオンを取得(長さ0に対応)
Definition GxQuaternion.inl:357
GX_FORCE_INLINE const GxQuaternion & mulRotateYZX(f32 radianX, f32 radianY, f32 radianZ)
YZX軸回転乗算
Definition GxQuaternion.inl:1158
GX_FORCE_INLINE const GxQuaternion & inverse(void)
逆クォータニオンを計算する
Definition GxQuaternion.inl:1045
GX_FORCE_INLINE GxQuaternion getInverse(void) const
逆クォータニオンを取得
Definition GxQuaternion.inl:394
static GX_FORCE_INLINE const GxQuaternion & getMulRotateY(GxQuaternion &dst, const GxQuaternion &quaternion, f32 radian)
Y軸回転乗算を取得
Definition GxQuaternion.inl:690
3次元ベクトル
Definition GxVector.h:245
f32 _z
Z値
Definition GxVector.h:572
f32 _y
Y値
Definition GxVector.h:571
f32 _x
X値
Definition GxVector.h:570
4次元ベクトル
Definition GxVector.h:582
32bitブーリアン
Definition GxDefine.h:173