ベクトルの加算と内積¶
前回の 配列の加算と乗算 を少し変えて、ベクトルの加算と内積をしてみます。
以下はコードの変更部分です。¶
入力変数の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