위의 그림에서 보는 것처럼 x축은 오른쪽으로 증가하고 y축은 아래쪽으로 증가하는 축에 대한 2점이 이루는 각도를 구하는 방법입니다. 각도는 60분법이며 편의상 0도 ~ 359.999999도로 산출됩니다. 딱히 말로써 설명드릴 것은 없을듯하고.. 코드 바로 나갑니다. 코드는 Java 입니다.
public double getAngle(PointF start, PointF end) { double dy = end.y-start.y; double dx = end.x-start.x; double angle = Math.atan(dy/dx) * (180.0/Math.PI); if(dx < 0.0) { angle += 180.0; } else { if(dy<0.0) angle += 360.0; } return angle; }
퍼포먼스를 고려한다면 9번 코드는 불필요합니다. -45도나 315도나 동일한 각도이니까요.
이민파님(http://www.onspatial.com)이 알려주신 더욱 최적화된 코드입니다.
위의 코드보다 아래의 코드를 사용하시기 바랍니다.
public double getAngle(PointF start, PointF end) {
double dy = end.y-start.y;
double dx = end.x-start.x;
return Math.atan2(dy, dx) * (180.0 / Math.PI);
}
감사합니다.
각도가 잘 구해 집니다