자전에 의한 선속도 계산하기
아주 가끔 자전에 의한 지표면의 선속도를 계산해야 할 때가 있다.
예를 들면, 인공위성과 지표면 사이의 도플러 센트로이드를 계산할 때라든가…
들어가기에 앞서
인터넷을 조금 뒤져보면 지구의 자전 속도는 약 1674.4 km/h라고 한다.
그런데, 뭔가 좀 이상하다.
지구 상에서 위치에 따라서 속도가 달라지기 때문이다.
예를 들면, 극지방에서는 0 km/h에 가깝다.
자전에 의한 속도를 계산하려면 정확한 위치와 각속도를 이용해서 계산해야 한다.
원론적으로 속도 계산하기
우리는 지구상의 위치를 주로 경위도와 고도로 표시한다.
이를 흔히 LLH라 부른다.
하지만, 속도를 계산하려면 이를 직교 좌표계로 변환해야 한다.
이를 ECEF라고 부르며, XYZ 좌표계로 표시한다.
자세한 방법은 생략한다.
지구의 자전 각속도는 0.00007292115 rad/s이다.
그럼 아래와 같이 계산하면 선속도를 구할 수 있다.
import numpy as np
# 지구의 자전 각속도: 0.00007292115 rad/s
we = 0.00007292115
# 독도 동도 LLH: 북위 37도 14분 26.8초, 동경131도 52분 10.4초, 고도 0m
# 독도 동도 직교 좌표: x -3393.163 km, y 3785.783 km, z 3838.7 km
p3 = np.array([-3393163., 3785783., 3838700.])
# 자전축으로부터 독도 동도까지의 거리
d3 = np.sqrt(p3[0]**2 + p3[1]**2)
# 독도 동도의 경도
lon = np.arctan2(p3[1], p3[0])
# 독도 동도의 선속도
v3 = d3 * we * np.array([-np.sin(lon), np.cos(lon), 0])
print('선속도:', v3, 'm/s')
# 독도 동도의 선속력 (z는 0이므로 생략)
s3 = np.sqrt(v3[0]**2 + v3[1]**2) * 3600 / 1000
print('선속력:', s3, 'km/h')
위 코드를 실행하면 다음과 같은 결과가 나온다.
선속도: [-276.06365001 -247.4333481 0. ] m/s
선속력: 1334.59725455928 km/h
이게 최선이에요? 확실해요?
사실, 조금만 깊이 생각해보면, 저 위의 코드는 불필요한 계산이 많다.
삼각함수도 필요 없고, 제곱근도 필요 없다.
z 값은 의미 없으니, x와 y 값만 사용하면 되고, 선속도는 둘을 맞바꾸면 된다.
이렇게 하면 아래와 같이 코드를 간단하게 할 수 있다.
import numpy as np
# 지구의 자전 각속도: 0.00007292115 rad/s
we = 0.00007292115
# 독도 동도 LLH: 북위 37도 14분 26.8초, 동경131도 52분 10.4초, 고도 0m
# 독도 동도 직교 좌표: x -3393.163 km, y 3785.783 km, z 3838.7 km
p3 = np.array([-3393163., 3785783., 3838700.])
# 독도 동도의 선속도
v3 = we * np.array([-p3[1], p3[0], 0])
print('선속도:', v3, 'm/s')
# 독도 동도의 선속력 (z는 0이므로 생략)
s3 = np.sqrt(v3[0]**2 + v3[1]**2) * 3600 / 1000
print('선속력:', s3, 'km/h')
위 코드를 실행하면 다음과 같은 결과가 나온다.
선속도: [-276.06365001 -247.4333481 ] m/s
선속력: 1334.5972545592797 km/h