티스토리 뷰

728x90

프로그램을 제작하다보면 특정 좌표에 대해 지정한 각도로 회전을 한 새로운 좌표를 구해야 하는 경우가 있습니다. 이럴때는 유용한 것이 회전 행렬 입니다.


(x1, y1)은 회전 시킬 점의 좌표라 하고 (x2, y2)를 회전 이후의 좌표라 하면 회전 행렬을 이용해서 다음과 같이 표현할 수 있습니다.

 




위의 수식을 풀어 보면 아래와 같습니다.

 

x2 = Cos θ * x1 - Sin θ * y1

y2 = Sin θ * x1 + Cos θ * y1

 

double 라디안 = 각도 * (float)(Math.PI / 180);
double x2 = Math.Cos(라디안) * x1 - Math.Sin(라디안) * y1;
double y2 = Math.Sin(라디안) * x1 + Math.Cos(라디안) * y1;

 

위의 코드는 C#으로 회전 행렬을 사용한 예제입니다. 0~360도로 입력하는 보통 삼각함수들은 라디안을 입력으로 하기 때문에 입력한 각도를 라디안으로 변환해서 계산에 적용 했습니다.

 

만약 원점이 아닌 곳의 좌표에서 이동을 해야 한다면 원점으로 이동하여 회전시키고 다시 원래 위치로 이동시키면 됩니다.

 

 

 

728x90
댓글
최근에 올라온 글
최근에 달린 댓글
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
글 보관함