[알고리즘] 선이 이루는 각도 구하기

사용자 삽입 이미지

위의 그림에서 보는 것처럼 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도나 동일한 각도이니까요.

“[알고리즘] 선이 이루는 각도 구하기”에 대한 2개의 댓글

  1. 이민파님(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);
    }

답글 남기기

이메일 주소를 발행하지 않을 것입니다. 필수 항목은 *(으)로 표시합니다