본문 바로가기
@ 통계 교양/통계 Tips

산점도 그래프 회전의 수학적 원리

by bigpicture 2021. 4. 28.
반응형

상관분석 설명자료에 사용하기 위해 우상향 또는 우하향의 산점도 그래프가 필요했습니다. 아래와 같이 x와 y를 정규분포에서 랜덤추출하여 산점도를 그린 뒤, 45도를 회전시켰습니다.

 

 

어떤 수학적 원리가 사용되었는지 설명드리겠습니다.

 

 

원점 중심 회전

아래와 그림에서 (a,b) 를 (a',b')으로 회전시키고 싶은 상황이라고 합시다. 

 

a와 b를 극좌표로 표현하면 아래와 같습니다. 

 

$a=r cos(\alpha)$

$b=r sin(\alpha)$

 

a'와 b'을 극좌표로 표현하면 아래와 같습니다. 

 

$a'=r cos(\alpha+\theta)$

$b'=r sin(\alpha+\theta)$

 

a'와 b'는 삼각함수의 덧셈정리를 이용하면 아래와 같이 변형할 수 있습니다.

 

$a'=r(cos(\theta)cos(\alpha)-sin(\theta)sin(\alpha))$

$b'=r(sin(\theta)cos(\alpha)+cos(\theta)sin(\alpha))$

 

위 식에 a와 b를 대입하여 정리하면 아래와 같습니다. 

 

$a'=cos(\theta)a-sin(\theta)b$

$b'=sin(\theta)a+cos(\theta)b$

 

행렬로 표현하면 아래와 같습니다.

 

$\begin{bmatrix}
a'\\ 
b'
\end{bmatrix}
=
\begin{bmatrix}
cos(\theta) & -sin(\theta) \\ 
sin(\theta) & cos(\theta) 
\end{bmatrix}
\begin{bmatrix}
a\\ 
b
\end{bmatrix}$

 

점 $(a,b)$를 $\theta$ 만큼 회전하는 방법은 위와 같이 회전행렬을 곱해주면 됩니다. 

 

특정 점 중심 회전

회전시키려는 점이 (a,b)이고, (p,q)를 중심으로 회전하고 싶은 상황이라고 합시다. 아래와 같은 방법을 사용하면 됩니다. 

1) p,q를 원점으로 만들어 줌, (a,b) 는 (a-p,b-q)가 됨.
2) (a-p,b-q)에 위에서 유도한 회전행렬을 곱해줌
3) 2번에서 구해진 점을 x축으로 p만큼, y축으로 q만큼 이동함. 

 

 

R코드

예시 그림(그림1)으로 사용한 R코드를 공유합니다. (10,10)을 중심으로 회전하였습니다. 

 

#데이터
x=rnorm(1000,10,3)
y=rnorm(1000,10,1)

#45deg 회전
data=rbind(x,y)-10
theta=pi/4
RotMat=matrix(c(cos(theta),sin(theta),-sin(theta),cos(theta)),nrow=2)
data_rot1=RotMat %*% data
data_f1=data_rot1+10

#-45deg 회전
data=rbind(x,y)-10
theta=-pi/4
RotMat=matrix(c(cos(theta),sin(theta),-sin(theta),cos(theta)),nrow=2)
data_rot2=RotMat %*% data
data_f2=data_rot2+10

#plot
par(mfrow=c(1,3))
plot(x,y,xlim=c(0,20),ylim=c(0,20),main="0deg")
plot(data_f1[1,],data_f1[2,],xlab='x',ylab='y',xlim=c(0,20),ylim=c(0,20),main="45deg")
plot(data_f2[1,],data_f2[2,],xlab='x',ylab='y',xlim=c(0,20),ylim=c(0,20),main="-45deg")

 

반응형

댓글