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つめのクォータニオン。
- 戻り値の型: