티스토리 뷰
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
'프로그래밍' 카테고리의 다른 글
파이썬 맛보기 - 파이썬 배우기(Python) (0) | 2019.03.14 |
---|---|
파이썬 학습 환경 설치 - 파이썬 배우기(Python) (2) | 2019.03.14 |
비주얼 스튜디오로 실행중인 프로그램 디버깅하기 (0) | 2019.03.13 |
비주얼 스튜디오 단축키 및 주요 기능 정리 (0) | 2019.03.13 |
비주얼 스튜디오에서 Boost C++ 라이브러리 사용하기 (0) | 2019.03.13 |
댓글