Chandler@Berlin -3ページ目

Chandler@Berlin

ベルリン在住

内積による normal の定義

基本的には前節と同じだが,内積で考える.
$Chandler@Berlin-innerprod

これを見ると,normal は実は row space にあり,column space にはないことがわかる.成分で書いてみれば,
$Chandler@Berlin-eq04
である.座標変換 M は column space に対する変換である.
$Chandler@Berlin-eq05

次の式は計算できない.
$Chandler@Berlin-eq06
これが normal と 通常のベクトルの違いであるというのが私の第二の説明である.
面の tangent vector と直交するベクトルとしての normal


Normal ベクトルは面の,tangent ベクトルの cross product の方向を持つ.図2に示すように x 方向を二倍にするような変換 M に対して,tangent ベクトルは正しく変換される.しかし,その cross productである normal の方向は M の変換に従うとは限らない.
$Chandler@Berlin-cross prod
Figure 2. The normal vector n is a cross product of tangent vectors u and v. Tangent vectors are linear to M, but not for the normal vector.

つまり,tangent ベクトル u, vM によって変換可能だが,その cross product はそうではない.

$Chandler@Berlin-eq02

これが tangent vector と normal vector を異なるベクトルとしている理由と言えば納得してもらえるだろうか.cross product の x 成分を考えてみると,u_y v_z - u_z v_y のような成分があり,この掛け算が線形性を壊しているというのが私の第一の説明である.
normal ベクトルと普通のベクトルの違い

normal のベクトルと普通のベクトルは実は異なるものである.通常のベクトルはそれ自身で方向などを示していた.しかし,normal ベクトルはどうやって定義されていただろうか.normal ベクトルはそれ自身で定義されていたのではなく,何かの面があってそれに対して定義されていた.特に normal は面と直交する単位ベクトル,つまり面に対して内積が0になるようなものとして定義されていた.このようなベクトルは座標変換に対して通常のベクトルとは異なる種類のベクトルと考えた方が良い.先の図 1 で見たように変換してみると意味が異なってしまうからだ.もしこれが普通のベクトルであれば x 方向の二倍のスケーリングの意味は正しい.しかし,normal は x 方向だけスケールするものではない.normal ベクトルをスケーリングすると,この例のようにnormal という意味がなくなってしまう.

以下ではもう少し詳しく考えてみる.以下の3つの考えは数学的には同じだが,直感的には多少異なるかと思うので別々に述べる.