class cymel.core.datatypes.vector.Vector

Inheritance diagram of Vector
class cymel.core.datatypes.vector.Vector(*args)

ベースクラス: object

3次元ベクトルクラス。

座標と方向ベクトルを Maya API の MPointMVector のように使い分ける必要はなく、同じように扱うことができる。

MPoint と同様に、 同次座標を表現可能な w を持つが、 w が 1 の場合は、長さ 3 のシーケンスとして振る舞う。 その場合、w はインデックス指定では参照できず、 属性としてのみ参照できる。

w が 1 以外の場合は、長さ 4 のシーケンスとして振る舞う。 また、その場合のみ strrepr で確認できる。

Matrix を乗じると、 MPoint のように平行移動が可能だが、 MVector のように平行移動無しの変換をするには w を 0 に設定せずとも xform3 メソッドを利用できる。

つまり、同次座標表現をしない限り、w は常に 1 で使用すると良い。

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

  • Vector

  • x, y, z, w

  • x, y, z

  • x, y

  • 4値までのシーケンス

注釈

w がこのような特殊な振る舞いをするのは、 API 等の他のオブジェクトとの可換性を確保するため。

w に 1 以外を明示しない限り、 MVector コンストラクタのように長さ 4 の シーケンスを受け付けないものにも渡すことができる。

また、w に 1 以外を明示した場合は、MPointlist などと交換した際にも、きちんとその情報が継承される。

Methods:

abs()

4次元ベクトルの各要素を絶対値にしたベクトルを得る。

add(v)

4次元ベクトルの和を得る。

angle(v)

2つの3次元ベクトルの成す角を得る。

cartesianize()

同次座標を直交座標(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 軸方向を得る。

homogenize()

有理形式の座標を同次座標に変換する。

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次元ベクトルを得る。

normalize()

正規化3次元ベクトルをセットする。

normalizeIt()

正規化3次元ベクトルをセットする。

orthogonal(vec)

指定ベクトルに直交化したベクトルを得る。

orthogonalize(vec)

指定ベクトルに直交化したベクトルをセットする。

rationalize()

同次座標を有利形式に変換する。

rotateBy(q)

クォータニオンで回転したベクトルを得る。

rotateTo(v[, factor])

ベクトルを指定方向に向ける最小弧回転を得る。

set(*args)

他の値をセットする。

slerp(p0, p1, t[, spin])

3次元ベクトルを球面線形補間する。

sub(v)

4次元ベクトルの和を得る。

transformAsNormal(m)

法線ベクトルとしてトランスフォームしたベクトルを得る。

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:

abs()

4次元ベクトルの各要素を絶対値にしたベクトルを得る。

abs 組み込み関数を使用する場合と等価。

戻り値の型:

Vector

add(v)

4次元ベクトルの和を得る。

パラメータ:

v (Vector) -- もう1方のベクトル

戻り値の型:

Vector

angle(v)

2つの3次元ベクトルの成す角を得る。

パラメータ:

v (Vector) -- もう1方のベクトル。

戻り値の型:

float

cartesianize()

同次座標を直交座標(W=1)に変換する。

(W*x, W*y, W*z, W) が (x, y, z, 1) に変換される。

戻り値の型:

Vector (self)

cross(v)

3次元ベクトルの外積を得る。

演算子 ^ と同じ。

パラメータ:

v (Vector) -- もう1方のベクトル。

戻り値の型:

Vector

distanceSqTo(v)

2つの位置ベクトル間の2乗距離を得る。

パラメータ:

v (Vector) -- もう1方の位置。

戻り値の型:

float

distanceTo(v)

2つの位置ベクトル間の距離を得る。

パラメータ:

v (Vector) -- もう1方の位置。

戻り値の型:

float

div(v, pre=1e-13)

4次元ベクトルの商を得る。

パラメータ:
  • v (Vector or Number) -- 分母のベクトル、またはスカラー。

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

戻り値の型:

Vector

dot(v)

3次元ベクトルの内積を得る。

1x3 と 3x1 の行列としての乗算ともいえる。

演算子 * と同じ。

パラメータ:

v (Vector) -- もう1方のベクトル。

戻り値の型:

float

dot4(v)

4次元ベクトルの内積を得る。

1x4 と 4x1 の行列としての乗算ともいえる。

パラメータ:

v (Vector) -- もう1方のベクトル。

戻り値の型:

float

dot4r(v)

4次元ベクトルを 4x1 と 1x4 の行列として乗算する。

パラメータ:

v (Vector) -- もう1方のベクトル。

戻り値の型:

Matrix

findNearestAxis(asId=False)

方向ベクトルに最も近い X,Y,Z,-X,-Y,-Z 軸方向を得る。

殆どゼロベクトルで判定できない場合は None となる。

パラメータ:

asId (bool) -- 結果をIDで得る。

戻り値の型:

Vector, int or None

homogenize()

有理形式の座標を同次座標に変換する。

(x, y, z, W) が (W*x, W*y, W*z, W) に変換される。

戻り値の型:

Vector (self)

iabs()

4次元ベクトルの各要素を絶対値にする。

戻り値の型:

Vector (self)

iadd(v)

4次元ベクトルの和をセットする。

パラメータ:

v (Vector or Number) -- もう1方のベクトル。

戻り値の型:

Vector (self)

idiv(v, pre=1e-13)

4次元ベクトルの商をセットする。

パラメータ:
  • v (Vector or Number) -- 分母のベクトル、またはスカラー。

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

戻り値の型:

Vector (self)

imul(v)

4次元ベクトルの積をセットする。

パラメータ:

v (Vector or Number) -- もう1方のベクトル、またはスカラー。

戻り値の型:

Vector (self)

ineg()

4次元ベクトルの符号反転をセットする。

戻り値の型:

Vector

isEquivalent(v, tol=1e-10)

ほぼ同値かどうか。

パラメータ:
  • v (Vector) -- 比較するベクトル。

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

戻り値の型:

bool

注釈

MPoint の isEquivalent とは挙動が異なることに注意。 MPoint では cartesianize での差の距離が比較されるが、 w=0 の場合に望ましくない結果になるなどの問題がある。 本メソッドの場合は単純でコストも低い要素ごとの単純比較としている。

isParallel(v, tol=1e-10)

2つの3次元ベクトルが平行かどうか。

パラメータ:
  • v (Vector) -- 比較するベクトル。

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

戻り値の型:

bool

isZero(tol=1e-10)

3次元ベクトルがほぼゼロかどうか。

パラメータ:

tol (float) -- 許容誤差。

戻り値の型:

bool

isub(v)

4次元ベクトルの和をセットする。

パラメータ:

v (Vector or Number) -- もう1方のベクトル。

戻り値の型:

Vector (self)

length()

3次元ベクトルの長さを得る。

戻り値の型:

float

lengthSq()

3次元ベクトルの長さの2乗を得る。

戻り値の型:

float

maxAxis(noSign=False)

絶対値が最大の要素の軸IDを得る。

パラメータ:

noSign (bool) -- 符号ビットを含まない軸ID (0~2) を得る。

戻り値の型:

int

minAxis(noSign=False)

絶対値が最小の要素の軸IDを得る。

パラメータ:

noSign (bool) -- 符号ビットを含まない軸ID (0~2) を得る。

戻り値の型:

int

mul(v)

4次元ベクトルの積を得る。

パラメータ:

v (Vector or Number) -- もう1方のベクトル、またはスカラー。

戻り値の型:

Vector

neg()

4次元ベクトルの符号反転を得る。

戻り値の型:

Vector

normal()

正規化3次元ベクトルを得る。

戻り値の型:

Vector

normalize()

正規化3次元ベクトルをセットする。

戻り値の型:

Vector (self)

normalizeIt()

正規化3次元ベクトルをセットする。

戻り値の型:

Vector (self)

orthogonal(vec)

指定ベクトルに直交化したベクトルを得る。

パラメータ:

vec (Vector) -- 軸ベクトル。

戻り値の型:

Vector

orthogonalize(vec)

指定ベクトルに直交化したベクトルをセットする。

パラメータ:

vec (Vector) -- 軸ベクトル。

戻り値の型:

Vector (self)

rationalize()

同次座標を有利形式に変換する。

(W*x, W*y, W*z, W) が (x, y, z, W) に変換される。

戻り値の型:

Vector (self)

rotateBy(q)

クォータニオンで回転したベクトルを得る。

演算子 * でクォータニオンを乗じることと同じ。

パラメータ:

q (Quaternion) -- クォータニオン。

戻り値の型:

Vector

rotateTo(v, factor=1.0)

ベクトルを指定方向に向ける最小弧回転を得る。

Quaternion に2つのベクトルを渡して生成することと同じ。

パラメータ:
  • v (Vector) -- 向ける方向。

  • factor (float) -- 完全に向ける量を 1.0 とする回転量。

戻り値の型:

Quaternion

set(*args)

他の値をセットする。

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

  • Vector

  • x, y, z, w

  • x, y, z

  • x, y

  • 4値までのシーケンス

戻り値の型:

Vector (self)

classmethod slerp(p0, p1, t, spin=0)

3次元ベクトルを球面線形補間する。

パラメータ:
  • p0 (Vector) -- 始点。

  • p1 (Vector) -- 終点。

  • t (float) -- 0.0~1.0の補間係数。範囲外も指定可。

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

戻り値の型:

Vector

sub(v)

4次元ベクトルの和を得る。

パラメータ:

v (Vector) -- もう1方のベクトル

戻り値の型:

Vector

transformAsNormal(m)

法線ベクトルとしてトランスフォームしたベクトルを得る。

パラメータ:

m (Matrix) -- 変換マトリックス。

戻り値の型:

Vector

xform3(m)

3次元ベクトル(方向ベクトル)をトランスフォームする。

xform4(m)

4次元ベクトル(3次元同次座標)をトランスフォームする。

演算子 * で行列を乗じることと同じ。

パラメータ:

m (Matrix) -- 変換マトリックス。

戻り値の型:

Vector