2012-04-20 8 views
1

私のコードに何が問題なのかよく分かりません。アンドロイドの3点間の角度を計算する

Point A = new Point((int)CENTER_X, (int)CENTER_Y); 
Point B = new Point((int)me.getX(), (int)me.getY()); 
Point C = new Point((int)CENTER_X, (int)B.y); 
double AB; 
double AC; 
double BC; 
AB = Math.sqrt(Math.pow(B.x - A.x, 2) + Math.pow(B.y - A.y, 2)); 
AC = Math.sqrt(Math.pow(C.x - A.x, 2) + Math.pow(C.y - A.y, 2)); 
BC = Math.sqrt(Math.pow(C.x - B.x, 2) + Math.pow(C.y - B.y, 2)); 
degre = (AB * AB - AC * AC - BC * BC) /(2 * AC * AB); 
degre = Math.acos(degre*(180/Math.PI)); 

私はいつもdegre = 0またはNaNを取得しています。何故ですか ?

答えて

2

あなたは度の翻訳にラジアンを行う時期について混乱している、あなたはそのような程度に変換し、その後、(ラジアン単位の角度を返します)arccosを行い、その後、比率を計算する必要があります。

double float ratio = (AB * AB + AC * AC - BC * BC) /(2 * AC * AB); 
degre = Math.acos(ratio)*(180/Math.PI); 
+0

最初の行はセロ... (AB * AB - AC * AC - BC * BC)/(2 * AC * AB) 私は間違ったeqを使用していますか? – roiberg

+0

私はあなたのトリグをチェックしませんでしたが、コサインルールを正しく使用していると思います。 – Elemental

関連する問題