2012-03-25 13 views
0

これは少し宿題に関する質問ですが、私はしばらくの間伸びてきており、100%正確な答えを得ることはできませんでした。ポリゴンが与えられたら、そのポリゴン内の任意の頂点の内角を見つける必要があります。私がしてきたことは、頂点を頂点とそれの後ろの頂点を取って、次に出現の角度を計算することです(私は頂点をBとして扱います)、ABとBCの辺を作成し、それぞれの大きさを求め、それぞれの大きさで2つのドット積。凸多角形のベクトルの交点の度合いを調べる

私はまだベクトルが(0,10)、(0,0)、(10,0)の場合にはまだオフです。明らかにその中間ベクトルの内角は90度ですが、大きさとドットプロダクトを使って計算すると何らかの理由で45度になります。ここで

は私のコード

double dx21 = one.x - two.x; 
     double dx31 = one.x - three.x; 
     double dy21 = one.y - two.y; 
     double dy31 = one.y - three.y; 
     double m12 = Math.sqrt(dx21*dx21 + dy21*dy21); 
     double m13 = Math.sqrt(dx31*dx31 + dy31*dy31); 
     double theta = Math.acos((dx21*dx31 + dy21*dy31)/ (m12 * m13)); 
     System.out.println(theta); 
     System.out.println(Math.toDegrees(theta)); 

は、私が見逃していることに疑いの余地は明らか何がありますか?私は頂点を反時計回りに横断しています、それはセットがどのように構成されているかです。

答えて

2

あなたのコードはポイント 'one'を中心点として使用しており、その中から 'two'と 'three'の間の角度を計算します。したがって、頂点(0,0)、(0,10)、(10,0)に90を設定すると、実際の計算はうまくいき、動作します。ちょうどあなたの頂点順序が乱されていますアップ。

+0

リクエストを提出して約15分後にこれを実現しました!ありがとう! – Schroedinger