ベクトル 2 (内積)

内積とは

内積とは 2 つのベクトルの間がどれくらい近いかを表す量です。

ベクトル a と、ベクトル b の内積 a * b は以下のように定義されます。

a * b = |a||b|cosθ

ここで、|a| はベクトル a の長さ、 |b| はベクトル b の長さ、 θ は 2 つのベクトルの間の角度です。
|a| = |b| = 1 の場合、内積 a * b は cosθ に等しくなることに注意してください。

[2 つのベクトルの図]

内積には別の計算方法があります。
ここで、 a = <<x1, y1, z1>>、 b = <<x2, y2, z2>> とすると、その計算方法は以下のようになります。

a * b = x1 * x2 + y1 * y2 + z1 * z2

このことから、内積の計算ができれば 2 つのベクトルの間の角度がわからなくても cosθ の値を計算することができます。

cosθ = a * b / |a||b|

内積と角度の関係

内積は 2 つのベクトルの長さ(どちらも正の値)と cosθ の積なので、 θ が 0 度から 90 度の間では正の値、 θ が 90 度で 0、 θ が 90 度から 180 度の間では負の値になります。
このことから、内積の計算によってベクトル同士が、同じ向きを向いているかどうかを判断することができます。

角度(θ) 内積(|a|≠1,|b|≠1) 内積(|a|=|b|=1) ベクトルの関係
θ = 0 |a||b| 1 完全に同じ向き
90 > θ > 0 |a||b|cosθ > 0 1 > cosθ > 0 同じ向き
θ = 90 0 0 直角
180 > θ > 90 - |a||b|cosθ < 0 0 > cosθ > -1 反対向き
θ = 180 - |a||b| -1 完全に反対向き

MEL における内積

Maya の MEL においては、 内積の計算は * 演算子によって行うことができます。


vector $a = <<1, 2, 3>>;
vector $b = <<4, 5, 6>>;
float $c = $a * $b;
// Result: 32 //

参考


Prev
Home | Contents
Mail