class cymel.core.datatypes.quaternion.Quaternion

Inheritance diagram of Quaternion
class cymel.core.datatypes.quaternion.Quaternion(*args)

ベースクラス: object

クォータニオンクラス。

コンストラクタでは以下の値を指定可能。

Methods:

asAA()

asAxisAngle の別名。

asAngle([naxis, bound])

クォータニオンの持つ回転角度を得る。

asAxisAngle()

軸ベクトルと回転角度として得る。

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つの角度に分離する。

asTransformation()

トランスフォーメーションとして得る。

asVecW()

3次元ベクトルとw値を得る。

asX()

asTransformation の別名。

conjugate()

共役クォータニオンを得る。

conjugateIt()

共役クォータニオンをセットする。

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()

正規化クォータニオンを得る。

normalize()

正規化クォータニオンをセットする。

normalizeIt()

正規化クォータニオンをセットする。

safelog()

絶対値が π/2 を超えない対数クォータニオンを得る。

set(*args)

他の値をセットする。

setAngle(theta[, correctAxis])

クォータニオンの持つ回転角度を書き換える。

setToIdentity()

単位クォータニオンをセットする。

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) -- ±π の範囲に収めた角度を得るかどうか。

戻り値の型:

float

asAxisAngle()

軸ベクトルと回転角度として得る。

戻り値の型:

Vector, float

asBend(reverse=False, aim=ImmutableVector(1.000000, 0.000000, 0.000000))

ボーン回転とした場合の曲げ成分を得る。

パラメータ:
  • reverse (bool) -- 曲げ・捻りの順番を反転するかどうか。 デフォルトでは、階層上位から見て曲げてから捻るが、 True を指定すると捻ってから曲げる分解になる。

  • aim (Vector) -- ボーン方向ベクトル。

戻り値の型:

Quaternion

asD(order=0, correct=False)

asDegrees の別名。

asDegrees(order=0, correct=False)

オイラー角回転を度数法の list として得る。

パラメータ:
  • order (int) -- 得たい回転オーダー。

  • correct (bool) -- 得られるオイラー角回転値を再度クォータニオン化したときに 元の符号と一致するように補正する。 不適切な場合に EulerRotation.reverseDirection することと等しい。

戻り値の型:

list

注釈

単位を弧度法で得たい場合は asEulerRotation を使用すると良い。

警告

correct に真を指定して得た値を rotateAxis にセットしようとすると 正常にセットできない場合があるので、その用途では指定すべきではない。

asE(order=0, correct=False)

asEulerRotation の別名。

asEulerRotation(order=0, correct=False)

オイラー角回転として得る。

パラメータ:
  • order (int) -- 得たい回転オーダー。

  • correct (bool) -- 得られるオイラー角回転値を再度クォータニオン化したときに 元の符号と一致するように補正する。 不適切な場合に EulerRotation.reverseDirection することと等しい。

戻り値の型:

EulerRotation

注釈

EulerRotation の単位は弧度法なので、 度数法で得たい場合は asDegrees を使用すると良い。

警告

correct に真を指定して得た値を rotateAxis にセットしようとすると 正常にセットできない場合があるので、その用途では指定すべきではない。

asM()

asMatrix の別名。

asMatrix()

回転行列として得る。

戻り値の型:

Matrix

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))

ボーン回転とした場合の捻り成分を得る。

分解の考え方として、曲げてから捻っても、捻ってから曲げても、 同じ値が得られるため asBendasRollBendHV のような reverse オプションはない。

パラメータ:

aim (Vector) -- ボーン方向ベクトル。

戻り値の型:

Quaternion

asRollBendHV(reverse=False, aim=ImmutableVector(1.000000, 0.000000, 0.000000), upv=ImmutableVector(0.000000, 1.000000, 0.000000))

ボーン回転とした場合の、捻り、横曲げ、縦曲げの3つの角度に分離する。

パラメータ:
  • reverse (bool) -- 曲げ・捻りの順番を反転するかどうか。 デフォルトでは、階層上位から見て曲げてから捻るが、 True を指定すると捻ってから曲げる分解になる。

  • aim (Vector) -- ボーン方向ベクトル。

  • upv (Vector) -- ボーンアップベクトル。

戻り値:

[roll, bendH, bendV]

asRollBendHV2(axisOri=None, reverse=False)

ボーン回転とした場合の、捻り、横曲げ、縦曲げの3つの角度に分離する。

パラメータ:
  • axisOri -- 基準軸を回転(クォータニオン)で指定する。 その空間のX軸がボーン方向、Y軸がアップ方向に相当する。 デフォルトの None は単位クォータニオンと同じである。

  • reverse (bool) -- 曲げ・捻りの順番を反転するかどうか。 デフォルトでは、階層上位から見て曲げてから捻るが、 True を指定すると捻ってから曲げる分解になる。

戻り値:

[roll, bendH, bendV]

asTransformation()

トランスフォーメーションとして得る。

戻り値の型:

Transformation

asVecW()

3次元ベクトルとw値を得る。

戻り値の型:

Vector, `float

asX()

asTransformation の別名。

conjugate()

共役クォータニオンを得る。

戻り値の型:

Quaternion

conjugateIt()

共役クォータニオンをセットする。

戻り値の型:

Quaternion (self)

div(v, pre=1e-13)

4次元ベクトル要素ごとのの商を得る。

パラメータ:
  • v (Quaternion) -- 分母のクォータニオン。

  • pre (float) -- ゼロ除算を避ける為の許容誤差。

戻り値の型:

Quaternion

dot(q)

クォータニオンの内積を得る。

パラメータ:

q (Quaternion) -- もう一方のクォータニオン。

戻り値の型:

float

exp()

対数クォータニオンからクォータニオンを得る。。

戻り値の型:

Quaternion

classmethod fromVecW(vec, w)

3次元ベクトルとw値からクォータニオンを得る。

パラメータ:
  • vec (Vector) -- 3次元ベクトル

  • w (float) -- w値

戻り値の型:

Quaternion

idiv(v, pre=1e-13)

4次元ベクトル要素ごとのの商をセットする。

パラメータ:
  • v (Quaternion) -- 分母のクォータニオン。

  • pre (float) -- ゼロ除算を避ける為の許容誤差。

戻り値の型:

Vector (self)

imul(v)

4次元ベクトル要素ごとの積をセットする。

パラメータ:

v (Quaternion) -- もう1方のクォータニオン。

戻り値の型:

Quaternion (self)

inverse()

逆クォータニオンを得る。

戻り値の型:

Quaternion

invertIt()

逆クォータニオンをセットする。

戻り値の型:

Quaternion (self)

isEquivalent(q, tol=1e-10)

ほぼ等価かどうか。符号反転は同じ回転姿勢を表すものとして等価とみなす。

符号反転を等価とみなしたくない場合は isSignedEquivalent を利用すると良い。

パラメータ:
  • q (Quaternion) -- 比較するクォータニオン。

  • tol (float) -- 許容誤差。

戻り値の型:

bool

注釈

MQuaternion の isEquivalent では、 2015 未満では符号反転は等価とみなされなかったが、 2015 以降で等価とみなされるように変更された。

cymel では現在の API の仕様に合わせ、 どのバージョンでも一貫して等価とみなすようにしている。

isIdentity(tol=1e-10)

ほぼ単位クォータニオンかどうか。

単位クォータニオンと isSignedEquivalent で比較することと等しい。

パラメータ:

tol (float) -- 許容誤差。

戻り値の型:

bool

isSignedEquivalent(q, tol=1e-10)

ほぼ同値かどうか。符号反転は同値とみなさない。

符号反転も等価とみなしたい場合は isEquivalent を利用すると良い。

パラメータ:
  • q (Quaternion) -- 比較するクォータニオン。

  • tol (float) -- 許容誤差。

戻り値の型:

bool

length()

クォータニオンの絶対値を得る。

戻り値の型:

float

lengthSq()

クォータニオンの絶対値の2乗を得る。

戻り値の型:

float

log()

対数クォータニオンを得る。

戻り値の型:

Quaternion

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つの角度からクォータニオンを合成する。

パラメータ:
  • rhv -- [roll, bendH, bendV]

  • reverse (bool) -- 曲げ・捻りの順番を反転するかどうか。 デフォルトでは、階層上位から見て曲げてから捻るが、 True を指定すると捻ってから曲げる合成になる。

  • aim (Vector) -- ボーン方向ベクトル。

  • upv (Vector) -- ボーンアップベクトル。

戻り値の型:

Quaternion

classmethod makeRollBendHV2(rhv, axisOri=None, reverse=False)

ボーンの捻り、横曲げ、縦曲げの3つの角度からクォータニオンを合成する。

パラメータ:
  • rhv -- [roll, bendH, bendV]

  • axisOri -- 基準軸を回転(クォータニオン)で指定する。 その空間のX軸がボーン方向、Y軸がアップ方向に相当する。 デフォルトの None は単位クォータニオンと同じである。

  • reverse (bool) -- 曲げ・捻りの順番を反転するかどうか。 デフォルトでは、階層上位から見て曲げてから捻るが、 True を指定すると捻ってから曲げる合成になる。

戻り値の型:

Quaternion

mul(v)

4次元ベクトル要素ごとの積を得る。

パラメータ:

v (Quaternion) -- もう1方のクォータニオン。

戻り値の型:

Quaternion

negateIt()

符号反転クォータニオンをセットする。

戻り値の型:

Quaternion (self)

normal()

正規化クォータニオンを得る。

戻り値の型:

Quaternion

normalize()

正規化クォータニオンをセットする。

戻り値の型:

Quaternion (self)

normalizeIt()

正規化クォータニオンをセットする。

戻り値の型:

Quaternion (self)

safelog()

絶対値が π/2 を超えない対数クォータニオンを得る。

w < 0 の場合に符号反転したうえで log が得られる。

戻り値の型:

Quaternion

set(*args)

他の値をセットする。

コンストラクタと同様に、以下の値を指定可能。

戻り値の型:

Quaternion (self)

setAngle(theta, correctAxis=False)

クォータニオンの持つ回転角度を書き換える。

パラメータ:
  • theta (float) -- 角度。

  • correctAxis (bool) -- 現在の w が負 (πより大きい回転角度を持っている) なら、軸を反転補正させた上での角度をセットする。

戻り値の型:

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値をセットする。

パラメータ:
  • vec (Vector) -- 3次元ベクトル

  • w (float) -- 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すると余分に周回する。

戻り値の型:

Quaternion

slerp0(t, spin=0)

単位クォータニオンと球面線形補間する。

パラメータ:
  • t (float) -- 0.0~1.0の補間係数。範囲外も指定可。

  • spin (int) -- スピン値。 デフォルトの0は正方向、-1は逆方向、 さらに+1や-1すると余分に周回する。

戻り値の型:

Quaternion

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すると余分に周回する。

戻り値の型:

Quaternion

static squadPt(q0, q1, q2)

squad 用の制御点を計算する。

パラメータ:
  • q0 (Quaternion) -- 1つめのクォータニオン。

  • q1 (Quaternion) -- 2つめのクォータニオン。

  • q2 (Quaternion) -- 3つめのクォータニオン。

戻り値の型:

Quaternion