2016-03-31 5 views
2

私のスクリーンショットでわかるように、座標ABとBCの間の角度を計算しようとします。この場合、角度は明らかに90°です。しかし、どのように私はjavascriptコードでこの角度を決定することができますか?3つの座標の間の角度を決定する

I try to determine the angle between AB and BC

私はこのthreadを発見し、受け入れられた解決策を試してみましたが、私は期待のように私はいつも1.57の代わりに、90を得ます。私はそれに私のパラメータを渡す方法を理解していなかったので、元の関数を書き直しました。

私の悪いペイントと数学のスキルをお試しください。

\t function find_angle(Ax,Ay,Bx,By,Cx,Cy) 
 
\t { 
 
\t \t var AB = Math.sqrt(Math.pow(Bx-Ax,2) \t + \t Math.pow(By-Ay,2));  
 
\t \t var BC = Math.sqrt(Math.pow(Bx-Cx,2) \t + \t Math.pow(By-Cy,2)); 
 
\t \t var AC = Math.sqrt(Math.pow(Cx-Ax,2) \t + \t Math.pow(Cy-Ay,2)); 
 
\t \t 
 
\t \t return Math.acos((BC*BC+AB*AB-AC*AC) \t/\t (2*BC*AB)); 
 
\t } 
 
\t var angle = find_angle 
 
\t \t \t \t (
 
\t \t \t \t \t 4 , \t \t //Ax 
 
\t \t \t \t \t 3 , \t \t //Ay 
 
\t \t \t \t \t 
 
\t \t \t \t \t 4 , \t \t //Bx 
 
\t \t \t \t \t 2 , \t \t //By 
 
\t \t \t \t \t 
 
\t \t \t \t \t 0 , \t \t //Cx 
 
\t \t \t \t \t 2 \t \t //Cy 
 
\t \t \t \t) 
 
\t \t \t \t 
 
\t alert (angle);

+0

ベクトルを理解していれば簡単です。ドットまたはクロスプロダクトを使用します。 – duffymo

+0

ヒントありがとうございます、私はそれについて知らせます。私は数年前に学校で学んだベクトルについて学びましたが、私はすでにすべてを忘れていました... – Black

+0

なぜ90歳ですか?あなたは90°を意味しますか? [それはまさにあなたが得るものです](https://en.wikipedia.org/wiki/Degree_(angle))、しかしラジアンで – BeyelerStudios

答えて

6

答えは、そのスレッドにラジアンに与えられています。

1.57ラジアンは90度(pi/2)です。 180/piと掛け合わせることで、答えを度に変換することができます。

A = { x: 4, y: 3 }; 
 
B = { x: 4, y: 2 }; 
 
C = { x: 0, y: 2 }; 
 

 
alert(find_angle(A,B,C)); 
 

 
function find_angle(A,B,C) { 
 
    var AB = Math.sqrt(Math.pow(B.x-A.x,2)+ Math.pow(B.y-A.y,2));  
 
    var BC = Math.sqrt(Math.pow(B.x-C.x,2)+ Math.pow(B.y-C.y,2)); 
 
    var AC = Math.sqrt(Math.pow(C.x-A.x,2)+ Math.pow(C.y-A.y,2)); 
 
    
 
    return Math.acos((BC*BC+AB*AB-AC*AC)/(2*BC*AB)) * (180/Math.PI); 
 
}

3

v = A - Bw = C - Bを設定します。次いでvwとの間の角度は、vx+i*vywx+i*wyとの間の角度であるプラス要因

(wx+i*wy)*(vx-i*vy)=wx*vx+wy*vy+i*(wy*vx-wx*vy). 

までの複素数の引数である(複素数など)w/vの引数が最良atan2関数を使用して計算されます以前に述べたように、これ

angle = atan2(wy*vx-wx*vy , wx*vx+wy*vy) 

、使用角度はラジアンであるので、あなたは、必要に応じ度に変換する必要があります。

関連する問題