generated at
Houdini数学 : 外積の数値を計算してみよう

外積の計算式
ベクトル\vec{A} = \begin{pmatrix} {x_1} \\\ {y_1} \\\ {z_1} \end{pmatrix}, \vec{B} = \begin{pmatrix} {x_2} \\\ {y_2} \\\ {z_2} \end{pmatrix}の外積\vec{A} \times \vec{B}は以下のように計算できます。
>\vec{A} \times \vec{B} = \begin{pmatrix} {x_1} \\ {y_1} \\ {z_1} \end{pmatrix} \times \begin{pmatrix} {x_2} \\ {y_2} \\ {z_2} \end{pmatrix} = \begin{pmatrix} {y_1}{z_2} - {z_1}{y_2} \\ {z_1}{x_2} - {x_1}{z_2} \\ {x_1}{y_2} - {x_2}{y_1} \end{pmatrix}

ここで、\vec{A}, \vec{B}が共にxz平面に乗っている( y_1=y_2 = 0)場合は以下のようになります。
> \vec{A} \times \vec{B} = \begin{pmatrix} 0 \\ {z_1}{x_2} - {x_1}{z_2} \\ 0 \end{pmatrix}


Houdini
1. 点を追加
Addノードで点を追加します。点の座標は(0, 0, 0)です。

Geometryスプレッドシートを見ると、 ポイントの座標が(0, 0, 0)になっていることが分かります。


2. 外積を実装してみる
今回は \vec{A} = \begin{pmatrix} 1 \\\ 0 \\\ 3 \end{pmatrix}, \vec{B} = \begin{pmatrix} 2 \\\ 0 \\\ 4 \end{pmatrix}の外積\vec{A} \times \vec{B}を計算してみましょう。
今回の外積のY成分は 3 \cdot 2 - 4 \cdot 1 = 6 - 4 = 2となります。 X,Z成分は0です。

AddノードにAttribuetWrangleノードを接続し、外積を計算するVEXコードを記述します。
AttributeWrangle(c)
vector A = {1, 0, 3}; // ベクトルA vector B = {2, 0, 4}; // ベクトルB @P = cross(A, B); // 外積を計算

Geometry Speread Sheet を見ると、 ポイントのY座標は2になっています。
数式の計算結果と、Houdini上の実行結果が一致しました。


3. 外積の計算順序を入れ替えてみる
外積は計算順序を入れ替えると、符号が反転するという法則があります。
>\vec{B} \times \vec{A} = - \vec{A} \times \vec{B}

VEXを以下のように書き換えてみます。
AttributeWrangle(c)
vector A = {1, 0, 3}; vector B = {2, 0, 4}; @P = cross(B, A);

Geometry SpreadSheetを見ると、ポイントのY座標が2から-2へ変わりました。
数式の計算結果と、Houdini上の実行結果が一致しました。