3Dプログラミング講座・その1:ベクトル3Dプログラミング講座・その1:ベクトル同次座標がw,x,y,z,...の順番で定義されたものの説明です。基本的な書式はこちらX3DOM+NAS6LIBの前提で説明しますが、基本的な考え方は他のものでも同じです。はじめに、HTMLのヘッダに以下を(以下のフォルダ構成のセットもして)組み込んでください。n次元のベクトルVとは0-1.V=[V0,V1,...,Vn-1]と書けます。後述しますが、同次ベクトルとはNAS6LIBではV0をw(同次)座標と設定します。・基本性質1・ベクトルにスカラー(実数)aを掛ける1-1.aV=Va=[aV0,aV1,...,aVn-1]ですが、同次ベクトルのときは、同次座標はa倍をせずに1-2.aV=Va=[w,aV1,...,aVn-1]とします。ディレクションコサイン、ノーマライズベクトル、全部ほぼ同じ4-1.|V|=√(V0^2+V1^2+...+Vn-1^2)これの証明はいわゆる長さとは、2点間の最短距離なので円、球などの半径を求めればいいということであるから例えば2次元のときはピタゴラスの定理というふうになる。ノルムが1のベクトルは単位ベクトルといいベクトルのノルムを1に直すことを正規化(ノーマライズ)するという。PQ6-2.なす角θとすると、P・Q=|P||Q|cosθこれは余弦定理から求められる。各ベクトルとなす角θと内積の関係6-3.内積=0ならば、ベクトルは直交する。これはベクトルの直交判定等に使える6-4.内積>0ならば、なす角θ≦90°である。これは、ポリゴンの裏表判定等に使える。6-5.内積<0ならば、なす角θ≧90°である。これは、ポリゴンの裏表判定等に使える。Q2^2|・基本性質9・ベクトルの外積、クロス、ベクトル積9-1.三次元の場合、P×Q=[P1Q2-P2Q1,P2Q0-P0Q2,P0Q1-P1Q0]外積は掛ける2つのベクトルにお互いに垂直なベクトルになる。よって、法線ベクトルなどの計算に用いる。0|9-3.任意の3次元ベクトルP,Qのとき、(P×Q)・P=0および(P×Q)・Q=0が成立する。このことは、外積がお互いに垂直なベクトルを返し垂直な内積は0であるからである。9-4.|P×Q|=|P||Q|sinθこのことは、|P×Q|を2乗して、6-2.から求められる。よって、それらによって作られる平行四辺形の面積と等しいということになる。・基本性質103次元でx,y,z各単位ベクトルをi,j,kとするとき・右手の法則10-1.i×j=k10-2.j×k=i10-3.k×i=j10-4.j×i=-k10-5.k×j=-i10-6.i×k=-j・左手の法則10-7.i×j=-k10-8.j×k=-i10-9.k×i=-j10-10.j×i=k10-11.k×j=i10-12.i×k=j・基本性質1111-1.P×Q=-(Q×P)11-2.(aP)×Q=a(P×Q)11-3.P×(Q+R)=P×Q+P×R11-4.P×P=0←→[0,0,0]11-5.(P×Q)・R=(R×P)・Q=(Q×R)・P11-6.P×(Q×P)=P×Q×P=P^2Q-(P・Q)P・基本性質12・方向余弦、ディレクションコサイン、ノーマライズベクトル3次元でx,y,z各単位ベクトルとベクトルPのなす角をそれぞれαβγとしたとき12-1.P.dircos()=[|P|cosα,|P|cosβ,|P|cosγ]=[P0/|P|,P1/|P|,P2/|P|]となり、これはベクトルの方向情報を保持したものであるからこれに長さや大きさを掛ければ、実際の元のベクトルに復元する。