ベクトル
スカラー乗算
ベクトルaにスカラーsを乗じることは、ベクトルaの各成分にスカラーsを乗じること。
sa=(sax,say,saz)
アダマール積
スケール係数はそれぞれの軸に沿って変えることができる。(非一様スケーリング)
スケーリングベクトルsとベクトルaのコンポーネントごとの積はアダマール積と呼ばれ、演算子⊗で表される。
s⊗a=(sxax,syay,szaz)
スケーリングベクトルsは、3x3対角スケーリング行列Sをコンパクトに表したもの。
S=⎣⎡sx000sy000sz⎦⎤
この行列をベクトルaに右から掛けることで、同様の結果が得られる。
aS=(ax,ay,az)⎣⎡sx000sy000sz⎦⎤=(sxax,syay,szaz)=s⊗a
法線ベクトル
ベクトルがある表面に垂直であるとき、その表面に対する法線であるという。
ドット積(スカラー積、内積)
ベクトル射影
uが単位ベクトルのとき、∣u∣=1であるため、
a⋅u=∣a∣∣u∣cosθ=∣a∣cosθ
これは、uの方向によって定義される無限直線上のベクトルaへの射影の長さを表す。
共線判定
2つのベクトルが同一直線上にあるとき、2つのベクトルは共線であるという。
同方向
2つのベクトル間の角度が0°のとき、cosθは1になるので、ドット積は次のようになる。
a⋅b=∣a∣∣b∣
逆方向
2つのベクトル間の角度が180°のとき、cosθは−1になるので、ドット積は次のようになる。
a⋅b=−∣a∣∣b∣
垂線判定
2つのベクトル間の角度が90°のとき、cosθは0になるので、ドット積は次のようになる。
a⋅b=0
方向判定
ドット積の符号は、2つのベクトルの間の角度によって決まる。
同方向
2つのベクトル間の角度が90°以下のとき、cosθは正の値になるので、ドット積は正の値になる。
a⋅b>0
逆方向
2つのベクトル間の角度が90°以上のとき、cosθは負の値になるので、ドット積は負の値になる。
a⋅b<0
平面と点の距離
2つのベクトルを使えば、平面を定義することができる。
- 平面上の任意の点Q
- その平面に垂直な単位ベクトル(法線)n
3D空間において、平面より上または下にある点Pの高さhは、次のように求められる。
h=(P−Q)⋅n
これは、nによって定義される直線上にあるP−Qの射影である。
クロス積(外積)
2つのベクトルのクロス積は、それらのベクトルに垂直なベクトルを生成する。
a×b=(aybz−azby,azbx−axbz,axby−aybx)=(aybz−azby)i+(azbx−axbz)j+(axby−aybx)k
クロス積の大きさ
2つのベクトルaとbの間の角度をθとすると、sinθは次のようになる。
sinθ=∣a∣∣b∣∣a×b∣
これを変形すると、クロス積の大きさは次のようになる。
∣a×b∣=∣a∣∣b∣sinθ
これは、辺がaとbになる平行四辺形の面積である。
三角形の面積が平行四辺形の半分であることから、位置ベクトルV1、V2、V3を持つ3つの頂点を持つ三角形の面積は次のようになる。
Striangle=21∣(V2−V1)×(V3−V1)∣
クロス積の方向
右手座標系では右手の法則、左手座標系では左手の法則に従って、クロス積の方向を決定することができる。
- 右手の法則:右手の親指をaに、人差し指をbに向けると、中指の方向がa×bの方向になる
- 左手の法則:左手の親指をaに、人差し指をbに向けると、中指の方向がa×bの方向になる
線形補間(linear interpolation, LERP)
2つの既知の座標点の間の位置を見つけるために、線形補間を使用することができる。
lerp(a,b,t)=(1−t)a+tb
ここで、tは0から1の間の値である。
lerp(a,b,t)は、点aと点bへの線分に沿ってt%の位置にある点を表す。