class cymel.core.datatypes.vector.Vector¶

- class cymel.core.datatypes.vector.Vector(*args)¶
ベースクラス:
object
3次元ベクトルクラス。
座標と方向ベクトルを Maya API の MPoint と MVector のように使い分ける必要はなく、同じように扱うことができる。
MPoint と同様に、 同次座標を表現可能な w を持つが、 w が 1 の場合は、長さ 3 のシーケンスとして振る舞う。 その場合、w はインデックス指定では参照できず、 属性としてのみ参照できる。
w が 1 以外の場合は、長さ 4 のシーケンスとして振る舞う。 また、その場合のみ
str
やrepr
で確認できる。Matrix
を乗じると、 MPoint のように平行移動が可能だが、 MVector のように平行移動無しの変換をするには w を 0 に設定せずともxform3
メソッドを利用できる。つまり、同次座標表現をしない限り、w は常に 1 で使用すると良い。
コンストラクタでは以下の値を指定可能。
x, y, z, w
x, y, z
x, y
4値までのシーケンス
注釈
w がこのような特殊な振る舞いをするのは、 API 等の他のオブジェクトとの可換性を確保するため。
w に 1 以外を明示しない限り、 MVector コンストラクタのように長さ 4 の シーケンスを受け付けないものにも渡すことができる。
また、w に 1 以外を明示した場合は、MPoint や
list
などと交換した際にも、きちんとその情報が継承される。Methods:
abs
()4次元ベクトルの各要素を絶対値にしたベクトルを得る。
add
(v)4次元ベクトルの和を得る。
angle
(v)2つの3次元ベクトルの成す角を得る。
同次座標を直交座標(W=1)に変換する。
cross
(v)3次元ベクトルの外積を得る。
distanceSqTo
(v)2つの位置ベクトル間の2乗距離を得る。
distanceTo
(v)2つの位置ベクトル間の距離を得る。
div
(v[, pre])4次元ベクトルの商を得る。
dot
(v)3次元ベクトルの内積を得る。
dot4
(v)4次元ベクトルの内積を得る。
dot4r
(v)4次元ベクトルを 4x1 と 1x4 の行列として乗算する。
findNearestAxis
([asId])方向ベクトルに最も近い X,Y,Z,-X,-Y,-Z 軸方向を得る。
有理形式の座標を同次座標に変換する。
iabs
()4次元ベクトルの各要素を絶対値にする。
iadd
(v)4次元ベクトルの和をセットする。
idiv
(v[, pre])4次元ベクトルの商をセットする。
imul
(v)4次元ベクトルの積をセットする。
ineg
()4次元ベクトルの符号反転をセットする。
isEquivalent
(v[, tol])ほぼ同値かどうか。
isParallel
(v[, tol])2つの3次元ベクトルが平行かどうか。
isZero
([tol])3次元ベクトルがほぼゼロかどうか。
isub
(v)4次元ベクトルの和をセットする。
length
()3次元ベクトルの長さを得る。
lengthSq
()3次元ベクトルの長さの2乗を得る。
maxAxis
([noSign])絶対値が最大の要素の軸IDを得る。
minAxis
([noSign])絶対値が最小の要素の軸IDを得る。
mul
(v)4次元ベクトルの積を得る。
neg
()4次元ベクトルの符号反転を得る。
normal
()正規化3次元ベクトルを得る。
正規化3次元ベクトルをセットする。
正規化3次元ベクトルをセットする。
orthogonal
(vec)指定ベクトルに直交化したベクトルを得る。
orthogonalize
(vec)指定ベクトルに直交化したベクトルをセットする。
同次座標を有利形式に変換する。
rotateBy
(q)クォータニオンで回転したベクトルを得る。
rotateTo
(v[, factor])ベクトルを指定方向に向ける最小弧回転を得る。
set
(*args)他の値をセットする。
slerp
(p0, p1, t[, spin])3次元ベクトルを球面線形補間する。
sub
(v)4次元ベクトルの和を得る。
法線ベクトルとしてトランスフォームしたベクトルを得る。
xform3
(m)3次元ベクトル(方向ベクトル)をトランスフォームする。
xform4
(m)4次元ベクトル(3次元同次座標)をトランスフォームする。
Attributes:
- AXIS_VECTOR_DICT = {0: ImmutableVector(1.000000, 0.000000, 0.000000), 1: ImmutableVector(0.000000, 1.000000, 0.000000), 2: ImmutableVector(0.000000, 0.000000, 1.000000), 16: ImmutableVector(-1.000000, 0.000000, 0.000000), 17: ImmutableVector(0.000000, -1.000000, 0.000000), 18: ImmutableVector(0.000000, 0.000000, -1.000000)}¶
- One = ImmutableVector(1.000000, 1.000000, 1.000000)¶
- Origin = ImmutableVector(0.000000, 0.000000, 0.000000)¶
- Tolerance = 1e-10¶
- XAxis = ImmutableVector(1.000000, 0.000000, 0.000000)¶
- XNegAxis = ImmutableVector(-1.000000, 0.000000, 0.000000)¶
- YAxis = ImmutableVector(0.000000, 1.000000, 0.000000)¶
- YNegAxis = ImmutableVector(0.000000, -1.000000, 0.000000)¶
- ZAxis = ImmutableVector(0.000000, 0.000000, 1.000000)¶
- ZNegAxis = ImmutableVector(0.000000, 0.000000, -1.000000)¶
- Zero = ImmutableVector(0.000000, 0.000000, 0.000000)¶
- Zero4 = ImmutableVector(0.000000, 0.000000, 0.000000, 0.000000)¶
Methods Details:
- div(v, pre=1e-13)¶
4次元ベクトルの商を得る。
- dot(v)¶
3次元ベクトルの内積を得る。
1x3 と 3x1 の行列としての乗算ともいえる。
演算子 * と同じ。
- findNearestAxis(asId=False)¶
方向ベクトルに最も近い X,Y,Z,-X,-Y,-Z 軸方向を得る。
殆どゼロベクトルで判定できない場合は None となる。
- idiv(v, pre=1e-13)¶
4次元ベクトルの商をセットする。
- isEquivalent(v, tol=1e-10)¶
ほぼ同値かどうか。
注釈
MPoint の isEquivalent とは挙動が異なることに注意。 MPoint では
cartesianize
での差の距離が比較されるが、 w=0 の場合に望ましくない結果になるなどの問題がある。 本メソッドの場合は単純でコストも低い要素ごとの単純比較としている。
- isParallel(v, tol=1e-10)¶
2つの3次元ベクトルが平行かどうか。
- maxAxis(noSign=False)¶
絶対値が最大の要素の軸IDを得る。
- minAxis(noSign=False)¶
絶対値が最小の要素の軸IDを得る。
- rotateBy(q)¶
クォータニオンで回転したベクトルを得る。
演算子 * でクォータニオンを乗じることと同じ。
- パラメータ:
q (
Quaternion
) -- クォータニオン。- 戻り値の型:
- rotateTo(v, factor=1.0)¶
ベクトルを指定方向に向ける最小弧回転を得る。
Quaternion
に2つのベクトルを渡して生成することと同じ。- パラメータ:
- 戻り値の型:
- set(*args)¶
他の値をセットする。
コンストラクタと同様に、以下の値を指定可能。
x, y, z, w
x, y, z
x, y
4値までのシーケンス
- 戻り値の型:
Vector
(self)
- classmethod slerp(p0, p1, t, spin=0)¶
3次元ベクトルを球面線形補間する。
- xform3(m)¶
3次元ベクトル(方向ベクトル)をトランスフォームする。