2012-04-20 56 views
1

我很難理解我的代碼出了什麼問題。計算android中三個點之間的角度

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 = 0NaN。這是爲什麼 ?

回答

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 2012-04-20 09:59:37

+0

我沒有檢查你的觸發,但相信你正確使用餘弦規則。 – Elemental 2012-04-20 10:02:56