class cymel.core.datatypes.quaternion.Quaternion¶
- class cymel.core.datatypes.quaternion.Quaternion(*args)¶
ベースクラス:
object
クォータニオンクラス。
コンストラクタでは以下の値を指定可能。
Methods:
asAA
()asAxisAngle
の別名。asAngle
([naxis, bound])クォータニオンの持つ回転角度を得る。
軸ベクトルと回転角度として得る。
asBend
([reverse, aim])ボーン回転とした場合の曲げ成分を得る。
asD
([order, correct])asDegrees
の別名。asDegrees
([order, correct])オイラー角回転を度数法の
list
として得る。asE
([order, correct])asEulerRotation
の別名。asEulerRotation
([order, correct])オイラー角回転として得る。
asM
()asMatrix
の別名。asMatrix
()回転行列として得る。
asRHV
([reverse, aim, upv])asRollBendHV
の別名。asRHV2
([axisOri, reverse])asRollBendHV2
の別名。asRoll
([aim])ボーン回転とした場合の捻り成分を得る。
asRollBendHV
([reverse, aim, upv])ボーン回転とした場合の、捻り、横曲げ、縦曲げの3つの角度に分離する。
asRollBendHV2
([axisOri, reverse])ボーン回転とした場合の、捻り、横曲げ、縦曲げの3つの角度に分離する。
トランスフォーメーションとして得る。
asVecW
()3次元ベクトルとw値を得る。
asX
()asTransformation
の別名。共役クォータニオンを得る。
共役クォータニオンをセットする。
div
(v[, pre])4次元ベクトル要素ごとのの商を得る。
dot
(q)クォータニオンの内積を得る。
exp
()対数クォータニオンからクォータニオンを得る。。
fromVecW
(vec, w)3次元ベクトルとw値からクォータニオンを得る。
idiv
(v[, pre])4次元ベクトル要素ごとのの商をセットする。
imul
(v)4次元ベクトル要素ごとの積をセットする。
inverse
()逆クォータニオンを得る。
invertIt
()逆クォータニオンをセットする。
isEquivalent
(q[, tol])ほぼ等価かどうか。符号反転は同じ回転姿勢を表すものとして等価とみなす。
isIdentity
([tol])ほぼ単位クォータニオンかどうか。
isSignedEquivalent
(q[, tol])ほぼ同値かどうか。符号反転は同値とみなさない。
length
()クォータニオンの絶対値を得る。
lengthSq
()クォータニオンの絶対値の2乗を得る。
log
()対数クォータニオンを得る。
makeRHV
(rhv[, reverse, aim, upv])makeRollBendHV
の別名。makeRHV2
(rhv[, axisOri, reverse])makeRollBendHV2
の別名。makeRollBendHV
(rhv[, reverse, aim, upv])ボーンの捻り、横曲げ、縦曲げの3つの角度からクォータニオンを合成する。
makeRollBendHV2
(rhv[, axisOri, reverse])ボーンの捻り、横曲げ、縦曲げの3つの角度からクォータニオンを合成する。
mul
(v)4次元ベクトル要素ごとの積を得る。
negateIt
()符号反転クォータニオンをセットする。
normal
()正規化クォータニオンを得る。
正規化クォータニオンをセットする。
正規化クォータニオンをセットする。
safelog
()絶対値が π/2 を超えない対数クォータニオンを得る。
set
(*args)他の値をセットする。
setAngle
(theta[, correctAxis])クォータニオンの持つ回転角度を書き換える。
単位クォータニオンをセットする。
setToXAxis
(angle)X軸回りの回転角度をセットする。
setToYAxis
(angle)Y軸回りの回転角度をセットする。
setToZAxis
(angle)Z軸回りの回転角度をセットする。
setValue
(*args)他の値をセットする。
setVecW
(vec, w)3次元ベクトルとw値をセットする。
slerp
(p, q, t[, spin])クォータニオンを球面線形補間する。
slerp0
(t[, spin])単位クォータニオンと球面線形補間する。
squad
(p, a, b, q, t[, spin])クォータニオンを球面曲線補間する。
squadPt
(q0, q1, q2)squad
用の制御点を計算する。Attributes:
- Identity = ImmutableQuaternion(0, 0, 0, 1)¶
- Tolerance = 1e-10¶
- Zero = ImmutableQuaternion(0, 0, 0, 0)¶
Methods Details:
- asAA()¶
asAxisAngle
の別名。
- asAngle(naxis=None, bound=False)¶
クォータニオンの持つ回転角度を得る。
asAxisAngle
では 0 になるような微小な角度も取得出来るが、 その場合はasAxisAngle
で得られる軸 (おそらく 0 度扱いの場合は常に (0,0,1) となる) には対応しない。また、回転軸があらかじめ分かっている場合は 指定した方が精度の良い値を得られる。
- パラメータ:
naxis (
Vector
) -- 回転軸が分かっている場合はそれを指定する。asAxisAngle
で得られるベクトルと平行でなければならない。 反転した軸も指定可能で、その場合、反転した角度が得られる。bound (bool) -- ±π の範囲に収めた角度を得るかどうか。
- 戻り値の型:
- asBend(reverse=False, aim=ImmutableVector(1.000000, 0.000000, 0.000000))¶
ボーン回転とした場合の曲げ成分を得る。
- パラメータ:
- 戻り値の型:
- asDegrees(order=0, correct=False)¶
オイラー角回転を度数法の
list
として得る。- パラメータ:
order (int) -- 得たい回転オーダー。
correct (bool) -- 得られるオイラー角回転値を再度クォータニオン化したときに 元の符号と一致するように補正する。 不適切な場合に
EulerRotation.reverseDirection
することと等しい。
- 戻り値の型:
注釈
単位を弧度法で得たい場合は
asEulerRotation
を使用すると良い。警告
correct に真を指定して得た値を rotateAxis にセットしようとすると 正常にセットできない場合があるので、その用途では指定すべきではない。
- asE(order=0, correct=False)¶
asEulerRotation
の別名。
- asEulerRotation(order=0, correct=False)¶
オイラー角回転として得る。
- パラメータ:
order (int) -- 得たい回転オーダー。
correct (bool) -- 得られるオイラー角回転値を再度クォータニオン化したときに 元の符号と一致するように補正する。 不適切な場合に
EulerRotation.reverseDirection
することと等しい。
- 戻り値の型:
注釈
EulerRotation
の単位は弧度法なので、 度数法で得たい場合はasDegrees
を使用すると良い。警告
correct に真を指定して得た値を rotateAxis にセットしようとすると 正常にセットできない場合があるので、その用途では指定すべきではない。
- asRHV(reverse=False, aim=ImmutableVector(1.000000, 0.000000, 0.000000), upv=ImmutableVector(0.000000, 1.000000, 0.000000))¶
asRollBendHV
の別名。
- asRHV2(axisOri=None, reverse=False)¶
asRollBendHV2
の別名。
- asRoll(aim=ImmutableVector(1.000000, 0.000000, 0.000000))¶
ボーン回転とした場合の捻り成分を得る。
分解の考え方として、曲げてから捻っても、捻ってから曲げても、 同じ値が得られるため
asBend
やasRollBendHV
のような reverse オプションはない。- パラメータ:
aim (
Vector
) -- ボーン方向ベクトル。- 戻り値の型:
- asRollBendHV(reverse=False, aim=ImmutableVector(1.000000, 0.000000, 0.000000), upv=ImmutableVector(0.000000, 1.000000, 0.000000))¶
ボーン回転とした場合の、捻り、横曲げ、縦曲げの3つの角度に分離する。
- asRollBendHV2(axisOri=None, reverse=False)¶
ボーン回転とした場合の、捻り、横曲げ、縦曲げの3つの角度に分離する。
- パラメータ:
axisOri -- 基準軸を回転(クォータニオン)で指定する。 その空間のX軸がボーン方向、Y軸がアップ方向に相当する。 デフォルトの None は単位クォータニオンと同じである。
reverse (bool) -- 曲げ・捻りの順番を反転するかどうか。 デフォルトでは、階層上位から見て曲げてから捻るが、 True を指定すると捻ってから曲げる分解になる。
- 戻り値:
[roll, bendH, bendV]
- asTransformation()¶
トランスフォーメーションとして得る。
- 戻り値の型:
- asVecW()¶
3次元ベクトルとw値を得る。
- 戻り値の型:
Vector, `float
- asX()¶
asTransformation
の別名。
- conjugate()¶
共役クォータニオンを得る。
- 戻り値の型:
- conjugateIt()¶
共役クォータニオンをセットする。
- 戻り値の型:
Quaternion
(self)
- div(v, pre=1e-13)¶
4次元ベクトル要素ごとのの商を得る。
- パラメータ:
v (
Quaternion
) -- 分母のクォータニオン。pre (float) -- ゼロ除算を避ける為の許容誤差。
- 戻り値の型:
- dot(q)¶
クォータニオンの内積を得る。
- パラメータ:
q (
Quaternion
) -- もう一方のクォータニオン。- 戻り値の型:
- exp()¶
対数クォータニオンからクォータニオンを得る。。
- 戻り値の型:
- classmethod fromVecW(vec, w)¶
3次元ベクトルとw値からクォータニオンを得る。
- パラメータ:
- 戻り値の型:
- idiv(v, pre=1e-13)¶
4次元ベクトル要素ごとのの商をセットする。
- パラメータ:
v (
Quaternion
) -- 分母のクォータニオン。pre (float) -- ゼロ除算を避ける為の許容誤差。
- 戻り値の型:
Vector
(self)
- imul(v)¶
4次元ベクトル要素ごとの積をセットする。
- パラメータ:
v (
Quaternion
) -- もう1方のクォータニオン。- 戻り値の型:
Quaternion
(self)
- inverse()¶
逆クォータニオンを得る。
- 戻り値の型:
- invertIt()¶
逆クォータニオンをセットする。
- 戻り値の型:
Quaternion
(self)
- isEquivalent(q, tol=1e-10)¶
ほぼ等価かどうか。符号反転は同じ回転姿勢を表すものとして等価とみなす。
符号反転を等価とみなしたくない場合は
isSignedEquivalent
を利用すると良い。- パラメータ:
q (
Quaternion
) -- 比較するクォータニオン。tol (float) -- 許容誤差。
- 戻り値の型:
注釈
MQuaternion の isEquivalent では、 2015 未満では符号反転は等価とみなされなかったが、 2015 以降で等価とみなされるように変更された。
cymel では現在の API の仕様に合わせ、 どのバージョンでも一貫して等価とみなすようにしている。
- isIdentity(tol=1e-10)¶
ほぼ単位クォータニオンかどうか。
単位クォータニオンと
isSignedEquivalent
で比較することと等しい。
- isSignedEquivalent(q, tol=1e-10)¶
ほぼ同値かどうか。符号反転は同値とみなさない。
符号反転も等価とみなしたい場合は
isEquivalent
を利用すると良い。- パラメータ:
q (
Quaternion
) -- 比較するクォータニオン。tol (float) -- 許容誤差。
- 戻り値の型:
- log()¶
対数クォータニオンを得る。
- 戻り値の型:
- classmethod makeRHV(rhv, reverse=False, aim=ImmutableVector(1.000000, 0.000000, 0.000000), upv=ImmutableVector(0.000000, 1.000000, 0.000000))¶
makeRollBendHV
の別名。
- classmethod makeRHV2(rhv, axisOri=None, reverse=False)¶
makeRollBendHV2
の別名。
- classmethod makeRollBendHV(rhv, reverse=False, aim=ImmutableVector(1.000000, 0.000000, 0.000000), upv=ImmutableVector(0.000000, 1.000000, 0.000000))¶
ボーンの捻り、横曲げ、縦曲げの3つの角度からクォータニオンを合成する。
- パラメータ:
- 戻り値の型:
- classmethod makeRollBendHV2(rhv, axisOri=None, reverse=False)¶
ボーンの捻り、横曲げ、縦曲げの3つの角度からクォータニオンを合成する。
- パラメータ:
rhv -- [roll, bendH, bendV]
axisOri -- 基準軸を回転(クォータニオン)で指定する。 その空間のX軸がボーン方向、Y軸がアップ方向に相当する。 デフォルトの None は単位クォータニオンと同じである。
reverse (bool) -- 曲げ・捻りの順番を反転するかどうか。 デフォルトでは、階層上位から見て曲げてから捻るが、 True を指定すると捻ってから曲げる合成になる。
- 戻り値の型:
- mul(v)¶
4次元ベクトル要素ごとの積を得る。
- パラメータ:
v (
Quaternion
) -- もう1方のクォータニオン。- 戻り値の型:
- negateIt()¶
符号反転クォータニオンをセットする。
- 戻り値の型:
Quaternion
(self)
- normal()¶
正規化クォータニオンを得る。
- 戻り値の型:
- normalize()¶
正規化クォータニオンをセットする。
- 戻り値の型:
Quaternion
(self)
- normalizeIt()¶
正規化クォータニオンをセットする。
- 戻り値の型:
Quaternion
(self)
- set(*args)¶
他の値をセットする。
コンストラクタと同様に、以下の値を指定可能。
- 戻り値の型:
Quaternion
(self)
- setAngle(theta, correctAxis=False)¶
クォータニオンの持つ回転角度を書き換える。
- パラメータ:
- 戻り値の型:
Quaternion
(self)
- setToIdentity()¶
単位クォータニオンをセットする。
- 戻り値の型:
self
- setToXAxis(angle)¶
X軸回りの回転角度をセットする。
- パラメータ:
angle (float) -- 角度。
- 戻り値の型:
Quaternion
(self)
- setToYAxis(angle)¶
Y軸回りの回転角度をセットする。
- パラメータ:
angle (float) -- 角度。
- 戻り値の型:
Quaternion
(self)
- setToZAxis(angle)¶
Z軸回りの回転角度をセットする。
- パラメータ:
angle (float) -- 角度。
- 戻り値の型:
Quaternion
(self)
- setValue(*args)¶
他の値をセットする。
コンストラクタと同様に、以下の値を指定可能。
- 戻り値の型:
Quaternion
(self)
- setVecW(vec, w)¶
3次元ベクトルとw値をセットする。
- パラメータ:
- 戻り値の型:
Quaternion
(self)
- classmethod slerp(p, q, t, spin=0)¶
クォータニオンを球面線形補間する。
- パラメータ:
p (
Quaternion
) -- 始点クォータニオン。q (
Quaternion
) -- 終点クォータニオン。t (float) -- 0.0~1.0の補間係数。範囲外も指定可。
spin (int) -- スピン値。 デフォルトの0は最短方向、-1は逆方向、 さらに+1や-1すると余分に周回する。
- 戻り値の型:
- slerp0(t, spin=0)¶
単位クォータニオンと球面線形補間する。
- パラメータ:
- 戻り値の型:
- static squad(p, a, b, q, t, spin=0)¶
クォータニオンを球面曲線補間する。
- パラメータ:
p (
Quaternion
) -- 始点クォータニオン。a (
Quaternion
) -- 始点側の制御点。b (
Quaternion
) -- 終点側の制御点。q (
Quaternion
) -- 終点クォータニオン。t (float) -- 0.0~1.0の補間係数。範囲外も指定可。
spin (int) -- スピン値。 デフォルトの0は正方向、-1は逆方向、 さらに+1や-1すると余分に周回する。
- 戻り値の型:
- static squadPt(q0, q1, q2)¶
squad
用の制御点を計算する。- パラメータ:
q0 (
Quaternion
) -- 1つめのクォータニオン。q1 (
Quaternion
) -- 2つめのクォータニオン。q2 (
Quaternion
) -- 3つめのクォータニオン。
- 戻り値の型: