Vector4を使用することで、4D空間で位置や方向を表現することができます。 3D数学では、このVector4は、4番目のコンポーネントの値に応じて位置やベクトルのどちらかを表現するのに非常によく使用されます。 位置の表現では、4番目のコンポーネントの値は1.0で、ベクトルの表現では、それが0.0です。 位置から他の位置を減算すると、ベクトルが生成され、2つのベクトルを加算するとベクトルが生成され、 ポイントとベクトルを加算するとポイントが生成されます。 例えば2つのポイントを加算するような、4番目のコンポーネントの値が0や1以外の値を生成する演算は、無効です。 同様に、ベクトルの長さについて議論するのは意味がありますが、位置の長さについては意味がありません。 また、4番目のコンポーネントは、位置/ベクトルのトランスフォームの方法にも影響を与えます。 詳細は、hou.Vector3.__mul__を参照してください。
hou.Vector2とhou.Vector3も参照してください。
メソッド ¶
__init__(values=(0.0, 0.0, 0.0, 0.0))
floatシーケンスから新しいVector4を返します。このメソッドをパラメータなしでコールすると、その結果のベクトルには(0.0, 0.0, 0.0, 0.0)の値が格納されます。
hou.Vector3からVector4を構築することもできます。その新しいベクトルの4番目のコンポーネントには1.0が設定されます。
values
の長さが4エレメントでない場合はInvalidSize
を引き起こし、values
がfloatまたはintのシーケンスでない場合はTypeError
を引き起こします。
__getitem__(index)
→ float
指定したインデックスでのfloatコンポーネントを返します。このメソッドはベクトルをシーケンスのような挙動にし (それによって、例えば、ベクトルのエレメントに対してForループを使用したり、ベクトルをfloatのタプルに変換したりすることができます)、 大括弧を使用してベクトルにインデックスを付けることができます。
__setitem__(index, value)
このメソッドは、大括弧を使用してベクトルに値を設定することができます。
setTo(sequence)
このベクトルの内容をfloatシーケンスに設定します。
values
の長さが4エレメントでない場合はInvalidSize
を引き起こし、values
がfloatまたはintのシーケンスでない場合はTypeError
を引き起こします。
__len__()
→ int
4を返します。このメソッドはVector4に対してlen()をコールすることができます。
__add__(vector4)
→ hou.Vector4
2つのベクトルを加算して、各コンポーネント(最後のコンポーネントを含む)が2つのベクトル内のそれぞれ該当するコンポーネントの合計値と同じ新しいベクトルを返します。
このメソッドによりv1 + v2
を記述することができます。v1
とv2
はVector4オブジェクトです。
このメソッドは、hou.Vector4(self[0] + vector4[0], self[1] + vector4[1], self[2] + vector4[2], self[3] + vector4[3])
と等価です。
__sub__(vector4)
→ hou.Vector4
他のベクトルからベクトルを減算して、各コンポーネント(最後のコンポーネントを含む)が1番目のベクトルのそれぞれ該当するコンポーネントから2番目のベクトルのそれを減算した値と同じ新しいベクトルを返します。
このメソッドによりv1 - v2
を記述することができます。v1
とv2
はVector4オブジェクトです。
このメソッドは、hou.Vector4(self[0] - vector4[0], self[1] - vector4[1], self[2] - vector4[2], self[3] - vector4[3])
と等価です。
__mul__(scalar_or_matrix4)
→ hou.Vector4
ベクトルをスカラーやマトリックスで乗算し、新しいベクトルを返します。
このメソッドによりv * s
やv * m
を記述することができます。v
はベクトル、s
はfloatスカラー、m
はhou.Matrix4です。
詳細は、hou.Vector3.__mul__を参照してください。
__rmul__(scalar)
→ hou.Vector4
このベクトルをスカラーで乗算し、新しいベクトルを返します。
このメソッドによりs * v
を記述することができます。v
はベクトル、s
はfloatスカラーです。
hou.Vector4.__mul__も参照してください。これはv * s
を記述することができます。
>>> v = hou.Vector4(1, 2, 3, 4) >>> v * 2 <hou.Vector4 [2, 4, 6, 8]> >>> 2 * v <hou.Vector4 [2, 4, 6, 8]>
__div__(scalar)
→ hou.Vector4
ベクトルをfloatスカラーで除算し、新しいベクトルを返します。
このメソッドによりv / s
を記述することができます。v
はベクトル、s
はfloatスカラーです。
このメソッドは、hou.Vector4(self[0] / scalar, self[1] / scalar, self[2] / scalar, self[3] / scalar)
と等価です。
length()
→ float
このベクトルを4D方向ベクトルとして解釈し、その長さを返します。 このベクトルが3D方向の表現に使用されている場合(つまり、4番目のコンポーネントが0)、その結果は3D長です。
この結果はmath.sqrt(self[0]**2 + self[1]**2 + self[2]**2 + self[3]**2)
と同じです。
lengthSquared()
→ float
self.length()**2
の結果を返します。この結果はself[0]**2 + self[1]**2 + self[2]**2 + self[3]**2
と同じです。
normalized()
→ Vector4
このベクトルを4D方向として解釈し、長さが1の同じ方向のベクトルを返します。 このベクトルが3D方向の表現に使用されている場合(つまり、4番目のコンポーネントが0)、その結果にはまだ意味を持ち、その該当する3D方向を表現します。
ベクトル長が0(または、ほぼ0)の場合、その結果は、元のベクトルのままです。
非ゼロ長のベクトルに関しては、このメソッドはself * (1.0/self.length())
と等価です。
dot(vector4)
→ float
この4Dベクトルとパラメータの4Dベクトルとの内積を返します。
この値はself[0]*vector4[0] + self[1]*vector4[1] + self[2]*vector4[2] + self[3]*vector4[3]
と等価です。
almostEqual(vector4, tolerance=0.00001)
→ bool
廃止されました。代わりにVector4.isAlmostEqualを使用してください。
isAlmostEqual(vector4, tolerance=0.00001)
→ bool
このベクトルが許容値内で他のベクトルと等価かどうか返します。 このベクトルの各コンポーネントと他のベクトルのそれに該当するコンポーネントの差が許容値内にあるかどうか検証します。
ocio_transform(src_space, dest_space)
→ hou.Vector4
Open Color IOを使用することで、ソースのカラー空間をターゲットのカラー空間に変換することができます。
x()
→ float
ベクトルの1番目のコンポーネントを返します。これはv[0]
と等価です。
y()
→ float
ベクトルの2番目のコンポーネントを返します。これはv[1]
と等価です。
z()
→ float
ベクトルの3番目のコンポーネントを返します。これはv[2]
と等価です。
w()
→ float
ベクトルの4番目のコンポーネントを返します。これはv[3]
と等価です。