2013-02-13 4 views
2

나는 나의 자바 프로그램에서이 방법이 있습니다2 점에서 각도를 찾는 방법은?

public static float findAngle(float x1, float y1, float x2, float y2) { 
    float deltaX = Math.abs(x1 - x2); 
    float deltaY = Math.abs(y1 - y2); 
    return (float)(Math.atan2(deltaY, deltaX) * 180/Math.PI); 
} 

나는이 문제를 인터넷 검색에서 얻었다. 그러나 실전에 들어가면 분할되어 1-180이되고 180 후에는 1로 돌아갑니다. 어떻게 수정합니까?

+3

2 점 == 라인이 맞지 않습니까? 각도를 만들기 위해서는 세 번째가 필요합니다. –

+2

@ A - C, 세 번째 것은 (0,0)입니다. –

+0

그런 식으로 보입니다, ['atan2'] (http://docs.oracle.com/javase/7/docs/api/java/lang/ Math.html # atan2 (double, % 20double))는 극좌표의 각도를 반환합니다 .-) –

답변

5

Math.abs으로 전화하지 마십시오. 음수와 양수는 다른 결과를 줄 것이므로 deltaXdeltaY의 부호를 유지하려고합니다.

+0

Oh, duh. atan2()를보고 Math.abs()에 관심을 기울이지 않았습니다. 감사! – user2029675

1
public static float findAngle(float x1, float y1, float x2, float y2) { 
    float deltaX = x1 - x2; 
    float deltaY = y1 - y2; 
    return (float)(Math.atan2(deltaY, deltaX) * 180/Math.PI); 
} 
+1

Welcome to stackoverflow; 일반적으로 솔루션이 작동하는 이유에 대한 간단한 설명을 포함하는 것이 좋습니다. – Anew

관련 문제