오늘은 2차원 회전 행렬에 대해서 다루겠습니다.

 

먼저 회전 행렬에 대해서 먼저 보여드리겠습니다.

 

[사진 1] 회전 행렬

 

회전 행렬 R(θ)을 이용하여 P(x, y) 좌표를 회전시킨 좌표 P(x, y)를 구하는 식을 보여드리겠습니다.

 

[사진 2]  P′ 구하는 식​

 

[사진 2]를 수행하면  P​의 좌표를 구할 수 있습니다.

 

여기서 회전 행렬과 P​의 좌표를 구하는 식이 어떻게 나왔는지 궁금해 찾아본 내용을 정리하겠습니다.

 

아래 블로그를 참고하면서 공부했습니다.

https://gaussian37.github.io/math-la-rotation_matrix/

 

회전 변환 행렬 (2D, 3D)

gaussian37's blog

gaussian37.github.io


 

우선 P(x, y)를 cos과 sin으로 변환하는 과정부터 보여드리겠습니다.

 

[사진 3]

 

설명을 위해 반지름의 길이가 r인 원과 r을 빗변으로 가진 직각삼각형을 그렸습니다.

점 P의 좌표는 (x, y) 입니다.

 

r = √(x² + y²)
cosθ = x / r
sinθ = y / r

위의 식을 토대로 x, y를 다음과 같이 표현할 수 있습니다.

x = rcosθ
y = rsinθ

 

x와 y 좌표를 cos과 sin으로 변환했으니, 이젠 P 좌표를 회전시켜보겠습니다.

 

[사진 4]

 

점 P를 A만큼 회전시켜서 점 P​ 위치로 이동했습니다.

즉, x와 y 좌표를 A만큼 회전시키면 P(x′, y′)를 알 수 있습니다.

 

수식으로 표현해보겠습니다.

x = rcosθ
y = rsinθ

rcosθ를 A만큼 회전시키면 rcos(θ + A)가 됩니다.
rsinθ를 A만큼 회전시키면 rsin(θ + A)가 됩니다.

x′ = rcos(θ + A)
y′ = rsin(θ + A)

 

rcos(θ + A)와 rsin(θ + A)를 구하는 방법은 고등학교 때 배운 삼각 함수의 합차 공식을 이용하면 됩니다.

코사인은 코코사사, 사인은 사코코사로 기억하는 합차 공식을 이용해보겠습니다.

 

r = √(x² + y²)
x = rcosθ = √(x² + y²)cosθ
y = rsinθ = √(x² + y²)sinθ
x′ = rcos(θ + A)
y′ = rsin(θ + A)

x′ = rcos(θ + A)
   = √(x² + y²) * cos(θ + A)
   = √(x² + y²) * (cosθ * cosA - sinθ * sinA)
   = √(x² + y²) * cosθ * cosA - √(x² + y²) * sinθ * sinA
   = x * cosA - y * sinA
   
y′ = rsin(θ + A)
   = √(x² + y²) * sin(θ + A)
   = √(x² + y²) * (sinθ * cosA + cosθ * sinA)
   = √(x² + y²) * sinθ * cosA + √(x² + y²) * cosθ * sinA
   = y * cosA + x * sinA
   
즉, 아래의 식이 성립하는 것을 알 수 있습니다.
x′ = x * cosA - y * sinA
y′ = y * cosA + x * sinA

 

x′ = x * cosA - y * sinA
y′ = y * cosA + x * sinA

 

위의 식을 행렬 곱으로 나타내면 [사진 2]의 형태가 됩니다.


제가 공부한 부분을 정리한 내용이기 때문에 틀린 부분 있을 수 있습니다!!

혹시 틀린 부분이 있으면 알려주세요!!

+ Recent posts