ベクトルの内積を研究する。
まずV,Uをそれぞれ、(3,5)、(6,3)としよう。
ベクトルの内積は下記のようになるものをいうらしい。
V●U = Vx * Ux + Vy * Uy
よって、内積は、
3 * 6 + 5 * 3 = 33
となる。
内積ではもう一つ成立する式があるらしい。
V●U = |V|*|U|*cosθ
ベクトルの大きさは、三平方の定理で求められるので、下記のようになる。
|V| = 3^2+5^2の平方根 = 5.830951894845301 |U| = 6^2+3^2の平方根 = 6.708203932499369
よって、cosθの値が求められる。javascriptでやると下記のようになる。
var vx = 3, vy = 5; var ux = 6, uy = 3; var VU = vx * ux + vy * uy; var valV = Math.sqrt(3 * 3 + 5 * 5); var valU = Math.sqrt(6 * 6 + 3 * 3); var cos = VU / valV / valU; document.write(cos);
となる。
javascriptのMath.acos(cos)という関数は、cosの値を入れると角度を返してくれるようなのでやってみよう。
var rad = Math.acos(cos); document.write(rad);
これはラジアンだが、360 度表記にすると、
ということだ。
これが合っているかをatan2関数を使って確認してみよう。
var radV = Math.atan2(vy, vx); var radU = Math.atan2(uy,ux); document.write(radV - radU);
おお合っている。 しかし、内積が便利に使えるシーンがまだよく分からない。atan2関数があれば不要だったりするのかのう。