축이 회전했을 때의 좌표 계산 알고리즘 (with Excel)

반응형

 

개요

다음과 같이 기준점이 되는 빨간 점(x:1, y:2)이 있다.

 
이 빨간점을 90도씩 회전 했을 때 다음과 같은 좌표를 얻을 수 있다.

 
위의 예시 그림에서는 90도씩 이동한 경우의 좌표값이지만,
실제로는 23도가 될 수도, 114도가 될 수도 있다.
그렇다면 축을 이동했을 때의 좌표 계산 알고리즘을 어떻게 짜야 할까?


알고리즘 구현

수학 공식 작성

축 이동 알고리즘을 짜보자.
축 이동의 좌표값을 확인하기 위해서는 좌표(x, y)의 값과 각도(angle) 필요하다.
 

  • x : 가로 축
  • y : 세로 축
  • Θ : 각도(theta)

여기서 유의해야할 부분 2가지가 있다.
 

첫 번째, 어느 방향으로 회전하는가

회전의 방향이 반시계일 경우는 각도가 양수이며, 시계일 경우는 각도가 음수를 가진다.
예를 들어, 시계로 90도로 회전한다면 세타(각도)는 음수가 된다.

 
요약

  • 시계 방향 : 세타(각도)는 음의 값을 가짐
  • 반시계 방향 : 세타(각도)는 양의 값을 가짐

두 번째, 각도는 어떻게 구해야하는가?

프로그래밍에서 요구하는 각도에 따라 다르다.
 
1) 순수하게 각도(degree, angle)를 요구한다면 숫자 그대로 넣으면 된다.
예를 들어, 90도의 각도를 요구한다면 90을 넣으면 된다는 의미이다.
 
2) 반면에 라디안(radian)을 요구한다면 원주율을 기준으로 계산해야 한다.
90도는 pi / 2 로 표현가능하겠지만, 필요한 것은 1도, 2도의 세세한 각도 변화에 따른 좌표값을 원한다.
1도를 구하는 방법은 파이에 180을 나누면 된다.
즉, 1도의 라디안 값을 구하고 원하는 각도와 곱하면 된다.
라디안의 값을 구하는 공식은 다음과 같다.

 

요약

  • 각도 : 각도 그대로의 숫자 입력
  • 라디안 : pi / 180 * 각도

검증

아주 간단하게 엑셀에서 위의 수학 수식과 라디안의 값을 구해서 회전한 좌표의 값이 정확하게 계산되는지 확인해보자.
 

  • x : B2셀
  • y : C2셀
  • 각도 : A2셀

 
엑셀에서 아래의 수식을 셀에 맞게 넣어준다.

= x축 * COS(PI()/180*각도) - y축 * SIN(PI()/180*각도)

# 예시
# 반시계 방향 90도 회전 시 x축의 값
# = $B$2 * COS(PI()/180*A4) - $C$2 *SIN(PI()/180*A4)

 
모두 대입해보면 다음과 같은 표가 완성된다.

 
실제 축 이동 값과 맞는지 확인해보자.

반응형