ベクトルの内積は簡単だし、よく使うわりに、(自分は)意外に忘れがちだったりするのでメモ。
話を簡単にするために、長さ1の単位ベクトル同士の内積を考えます。
実は、内積の定義は、意外に難しいようです
が、ここでは3DCGなどでよく使う式を考えます
内積(A B) = |A||B| Cos θ = Ax*Bx + Ay*By
- ベクトルAとベクトルBのなす角度をθとおきます。
- 点Aから線分OBに垂線を降ろし、交点をHとすると、
- (= 点Aを線分OBに射影)
OH= cos θ , ただし、ABは単位ベクトル
幾何的な性質がわかったところで、次に、代数的な内積の計算方法と一致することを調べます。
欲しい式は下記。
内積(A B) = |A||B| Cos θ = Ax*Bx + Ay*By
- さて、ここからは、ベクトルA Bを複素数 (複素平面) だと思うことにします。
- Bを上下ひっくりかえした複素共役ベクトルをB’ とおきます
- B’は、 -β方向に向いた単位ベクトルと同等です
*は掛け算記号 A = Ax + i * Ay B = Bx + i * By B' = Bx - i * By
ここで、オイラーの公式から、 A Bの xy座標の具体的な関数を考えると
A = Cos α + i Sin α B = Cos β + i Sin β ただし、 i は虚数単位 i * i = -1
計算したいのは
θ = α - β
普通に掛け算します
Exp (-i (α-β)) = Exp(-i α)*Exp(-i *-β) = A * B' = (Ax + i * Ay)*(Bx - i * By) =(Ax*Bx - i*i*Ay*By) - Ax*i*By + i*Ay*Bx = (Ax*Bx + Ay*By ) + i* (Ay*Bx-Ax*By)
変数を戻します
Ax=Cos α Ay = Sin α Bx=Cos β By = Sin β
A * B'
=(Ax*Bx + Ay*By ) + i* (Ay*Bx-Ax*By)
= Cos α *Cos β + Sin α * Sin β
+ i* ( Sin α* Cosβ - Cos α * Sin β)
三角関数の加法定理により、
= ( Cos α *Cos -β - ( Sin α * Sin -β)
+ i* ( Sin α* Cos-β + Cos α * Sin -β)
= Cos ( α -β ) + i *Sin ( α -β )
= Cos ( θ ) + i *Sin ( θ )
ここで、実数部のみに注目すると、
Ax* Bx + Ay * By = Cos (θ)
これで、欲しかった 『二つのベクトルがなす角度のCos』 の計算式が求められました。 単位ベクトルでない場合は、ベクトルの長さ(絶対値)で割って単位ベクトルにしてから計算すれば同じことになるので、、、、
つまり、あとから絶対値で割っても同じなので、
Cos( A B ) = (Ax * Bx + Ay* By ) ÷ (|A|*|B|)
内積 Ax * Bx + Ay * By = |A|*|B|*Cos θ
おしまい
説明
上記の説明だと、試験に書くと出題範囲の関係などでバツになるかもです。
数学ガールの1巻か、2巻にも、内積ではないのですが、複素数の掛け算、割り算という形で、同様の演算に関する詳しい解説が載ってた気がします。
で、なんで内積を調べてたかというと、三角関数の正弦定理、余弦定理について調べてて、ちょっとあやふやだったから復習したかったのです。3DCGにもよく出てきますし。(ベクトル間の角度とか、シェーディング関係とか)
CGだと、内積自体よりも、角度θが欲しいことが多かったりしますけれども。
- 正弦定理
- 余弦定理 直角でない場合の三平方の定理
この余弦定理ってのは、実は内積と同じ事なんです。
Related posts
Tags: Math



