ベクトルの加算と内積

前回の 配列の加算と乗算 を少し変えて、ベクトルの加算と内積をしてみます。

_images/AddDotVec.png

以下はコードの変更部分です。

入力変数のA,Bと出力変数のCは vec3 として宣言します。

in  vec3 A;
in  vec3 B;
out vec3 C;

Cの計算式は同じですが、今回は vec3 での加算です。 Dの計算式は内積( dot )になります。

C = A + B;
D = dot(A, B)

Dは要素数が2の配列です。

var D = new Float32Array(2);

ここでも 入力変数と出力変数の要素の数はすべて同じ という原則は守られています。 A, B, Cは vec3 の要素が2個で、Dは float の要素が2個。 つまりA, B, C, Dはすべて2個の要素を持っています。

Dの値の140と770は以下の内積の計算結果です。

D[0] = dot([1, 2, 3], [10, 20, 30]) = 1 * 10 + 2 * 20 + 3 * 30 = 140
D[1] = dot([4, 5, 6], [40, 50, 60]) = 4 * 40 + 5 * 50 + 6 * 60 = 770