« C4D C.O.F.F.E.E.で三角ポリゴンの法線の取得。 | トップページ | C4D 方向を示す複数のベクトルの平均? »

C4D C.O.F.F.E.E. 2つのベクトルに垂直なベクトルを返すvcross()関数の返すベクトル。

前回、三角ポリゴンの法線を求めるために使用した、vcross()関数。

Normal_2

この、v1とv2が作る角度が無い場合。
要するに、0°や180°。それとv1やv2がvector(0.0 , 0.0 , 0.0)の場合はどうなるだろうか?

v1とv2が作る角度が0°の場合とは、v1とv2が全く同じベクトルか、もしくは長さが違っても方向が同じベクトルの場合です。

Normal_11

上の図のように想像すると、vcross()関数が返す2つのベクトルに垂直なベクトルは…
360°無限個にあるベクトルのように思われますが…

返ってくるベクトルは…

vector(0.0 , 0.0 , 0.0)

が、返って来ます。

では、180°の場合は…
v1とv2が長さに関係なく全く正反対の方向を向いているベクトルです。

Normal_12

この場合も、角度0°と同じベクトル

vector(0.0 , 0.0 , 0.0);

が返って来ます。

残りのv1とv2のどちらかがvector(0.0 , 0.0 , 0.0)の場合も同様

vector(0.0 , 0.0 , 0.0)

が返って来ます。

vcross()関数のテストです。

/*
vcross()テスト
2つのベクトルがなす角度が0°や180°の場合と
vector(0.0 , 0.0 , 0.0)が含まれる
場合
*/


var v0 =  vector( 0.0);
var v1 =  vector( 1.0 , 0.0 , 0.0);
var nv = -v1;

println("        0 : " , vcross(v1 , v1));
println("      180 : " , vcross(nv , v1));
println(" v(1)v(0) : " , vcross(v0 , v1));

結果は…

        0 : [0.000000,0.000000,0.000000]
      180 : [0.000000,0.000000,-0.000000]
v(1)v(0) : [0.000000,0.000000,0.000000]

書くほどの記事ではありませんでした。ごめんなさい。

|

« C4D C.O.F.F.E.E.で三角ポリゴンの法線の取得。 | トップページ | C4D 方向を示す複数のベクトルの平均? »