티스토리 뷰
컴퓨터에 지구를 위치시키는 법 (feat. Geographic Coordinates)
시뮬레이션 프로그래머 2025. 3. 1. 18:30
컴퓨터로 지구 또는 지구안에 있는 무언가를 표현하려면 경도, 위도같은 좌표가 필요하다.
- Cartesian Coordinates (데카르트 좌표계)
- Geographic Coordinates (지리적 좌표계)
Geographic Coordinates (지리적 좌표계)
- Cesium에서는 Cartographic 객체
- spherical coordinate: (azimuth, inclination, radius) 로 표현 - (방위각, 경사도, 반경)
- geographic coordinates : (longitude, latitude, height) 로 표현 - (경도, 위도, 높이)
- 경도: 서쪽에서 동쪽으로의 각도 (기준선 = 본초 자오선)
- 본초 자오선 = 0º
- 서쪽 = -180º
- 동쪽 = +180º
- 위도: 남쪽에서 북쪽으로의 각도 (기준선 = 적도)
- 적도 = 0º
- 남반구 = -90º
- 북반구 = +90º
- 높이: 표면 위 또는 아래로의 선형거리
- 경도: 서쪽에서 동쪽으로의 각도 (기준선 = 본초 자오선)
- 대부분의 벡터 데이터는 Geographic 으로 표현
- GPS 등에 Geographic 이용
경위도
하지만 지구는 3차원 타원체다. 즉, 위치에 따라 편평률이 다르기 때문에 경위도
따라서 지리적 그리드 테셀레이션에서와 같이 극 근처의 균일한 경도/위도 그리드 오버샘플을 기반으로 하는 알고리즘이 필요하다. (나중에 설명)
사람들은 경, 위도에 익숙하다. 예를 들어, 대한민국 경위도는 127º, 37.5º 이다.
하지만 지구의 중심을 기준으로 대한민국의 데카르트 좌표는 다음과 같다.
X ≈ −3,044,804 m,
Y ≈ 4,043,821 m,
Z ≈ 3,884,000 m
사람들은 이런 표현에 익숙하지 않다. 하지만 컴퓨터는 이런 방식을 통해 무언가를 나타낸다.
대한민국 경위도를 데카르트좌표로 변환하는 방법을 알아보자.
원점을 중심으로 구의 방정식:(2.1)
1. 방정식 (2.1)을 만족하는 점(
2. 구(sphere)에 있는 점의 경우, 점을 원점을 기준으로 벡터로 취급하고 정규화 하면 표면 법선을 구할 수 있다.
지구를 구로 표현하면 계산이 용이하겠지만, 지구는 타원체이기에 타원체 방정식을 사용하는 것이 더 정밀하고 유연하다.
타원체 방정식:(2.2)
1. 타원체는 각각 X축, Y축, Z축을 따라 세개의 반지름(a, b, c)로 정의된다.
2. 방정식 (2.2)를 만족하는 점(

타원체의 한 점에서 지구 중심을 기준으로 법선을 그리면 이를 Geocentric이라고 한다.
하지만 타원체는 곡률이 존재하기 때문에, Geocentric은 대부분 점에 대해 표면에 수직이 아니다.
따라서 타원체의 한 점에서 지구 중심이 아닌 적도
Geodetic은 타원에 한 점에 대해 실제 법선이다.
구의 경우, Geodetic, Geocentric은 동일하다.
타원체는 대부분 점에 대해 Geodetic, Geocentric이 크게 다른데, 45º에서 가장 크게 다르다.
표면 법선 벡터(surface normal vector) =
Geocentric 오차
지구 중심에서 특정 벡터 사이의 각도 := geocentric
지구 표면에서 특정 벡터 사이의 각도 := geodetic
위경도를 geocentric 또는 geodetic으로 구한 후, 높이(h)는 geodetic을 이용해서 구해야 한다.
높이(h)를 geocentric으로 구할 경우 우주와 같이 높이가 높은 곳에서 오차가 발생한다.
특히 geocentric, geodetic 각도 차이가 클 수록 오차가 커진다.
좌표 변환
Geographic coordinates → WGS84
실제 지리 데이터가 저장될 때는, 보통 경위도(지리적 좌표)로 저장된다.
컴퓨터에서 지구는 보통 WGS84 좌표계로 렌더링하기 때문에 경위도를 WGS84 좌표로 변환하는 작업은 필수적이다.
주의: WGS84 또한 Geographic coordinates 중 하나다.
- 전 세계에서 가장 널리 사용되는 지리 좌표계 (GPS 표준)
- 즉, WGS84는 Geographic Coordinates 중 하나일 뿐
- GCS(Geographic Coordinate System) ≠ WGS84
- WGS84 ⊂ GCS
- 원점: 지구 중심(Geocentric)
- 단위: 도(º)
- 좌표값: (위도, 경도, 타원체 고도)
(2.3)
구(Sphere)형 모델에서 유도된 형태이며, 완전한 타원체 모델을 표현하기 위해 추가 변환이 필요하다.
(2.4)
타원체 표면에서의 법선 벡터를 나타내는 식 (단위벡터 아님)
(2.5)
임의의
(2.6)
(2.4)의 법선 벡터를 (2.5)의 관계를 통해 단위 벡터로 변환하는 식
(2.7)
단위 법선 벡터의 성분을 타원체 좌표
(2.8)
단위 법선 벡터 성분을 이용하여 타원체 표면의 좌표
타원체 방정식에 대입
정리하면
(2.9)
- 정규화 상수
를 구하는 식
또한
는 타원체 표면에서 법선 방향으로의 변위 벡터
즉,는 타원체 표면의 한점에서 법선 벡터 방향으로의 거리 만큼 떨어진 점의 위치 변화 는 타원체 표면에서 해당 점까지의 거리
= + (2.10)
- 최종적으로, 타원체 표면
으로부터 높이 만큼 떨어진 점의 위치를 결정하는 식
WGS84 → Geographic coordinates
일반적으로 WGS84에서 지리적 좌표로 변환하는 것은 반대 방향으로 변환하는 것 보다 더 많은 작업이 필요하므로 여러 단계로 나눈다.
(2.4 참고) ,
두 점 r0, r1을 Geocetnric, Geodetic 두 방식으로 나눠 크기를 조정할 수 있다.
(a) : Geocentric Nomrmal을 따라 타원체 중심의 벡터가 타원체와 교차하여 표면지점을 결정
(b) : Geocentric Nomrmal을 따라 반복 작업(뉴턴-랩슨법 사용)을 통해 스케일링
뉴턴-랩슨법 특징
1. 점진적으로 정답을 찾아가는 근사 해법이라서 빠르게 수렴함.
2. 삼각함수 없이 계산 가능 ⇒ 효율적이다.
Geocentric Nomrmal (a) 특징
- 계산이 간단함 (직선 방정식과 타원 방정식으로 해결 가능)
- 벡터 연산만 사용하므로 빠르게 계산 가능
- WGS84에서 지리 좌표계로 변환 했을 때 의 정확도를 보장할 수 없다.
- 지구는 완벽한 구가 아니라 타원체 이기 때문.
- 따라서, Geocentric Nomrmal이 아닌 Geodetic Normal(b)을 사용해야 한다.
Geodetic Normal (b) 특징
- 정확도가 높음 (지구 타원체의 실제 표면을 고려함)
- WGS84 좌표 변환에서 가장 많이 사용됨
- 반복 연산이 필요함 (하지만 뉴턴 랩슨법을 통해 빠르게 수렴함)
의미- 주어진 점
이 지구 중심에서 어디에 있든, 이 점을 타원체 표면으로 옮겨야 함 - 즉,
를 적절한 비율로 축소(Scaling)하여 를 만들고 싶음 - 이때, 스케일링 계수를 β 로 두고 아래처럼 표현
(2.12) - 즉, β값을 곱해서 현재 점을 표면으로 투영하는 방식
- 주어진 점
의 역할- 현재 점을 지구 중심 방향으로 투영하여, 타원체 표면 위로 스케일링하는 역할
- 만약 주어진 점이 지구 표면과 가깝다면,
에 가까워짐 - 만약 주어진 점이 지구 표면보다 훨씬 멀다면,
가 작아져서 점을 더 많이 축소함
값 유도 과정 (2.11) 는 타원체 표면에 있으므로 타원체 방정식을 만족해야한다. 값에 대해 정리하면 정리하면 값은 양수여야 하므로 (2.11)- →
- →
는 와 같은 방향을 가지지만 크기(magnitude)가 다르다.
⇒ 지구 중심에서 표면점에 대해 정규화되지 않은 벡터 (2.14)
이 식을 (2.13)에 대입하면
이 식을 인수 분해 하면
이 식을 표면에 있는 점을 기준으로 재배열 하면
(2.15)
즉, 알고 있는 점
식 (2.15) 에서 모르는 미지수는
즉, 미지수
미지수
(2.16)
(2.17)
의미 값은 (2.11 참고)- 현재 점이 표면에서 얼마나 떨어져 있는지를 나타내는 비율
가 크면 현재 점이 표면에 가까워짐 가 작으면 현재 점이 표면에서 멀리 떨어져짐
의미- 현재 좌표에서 법선 방향으로 얼마나 이동해야 하는지를 계산하는 기준
중심으로부터 임의의 점 벡터 크기- 원래 주어진 WGS84 좌표의 벡터 크기
중심으로부터 지구 표면에 있는 점 벡터 크기- 표면 좌표에서의 법선 벡터 크기
- 뉴턴 랩슨법
- 초기 값 :
해당 작업을 통해 를 찾고, (2.17)에 대입하여 0과 근사해지는 값을 찾음.- 코드 예시
를 대입해 S 값이 0과 가까운 보다 작은 경우까지 반복
- 코드 예시
- ⇒
- 초기 값 :
- 타원체 방정식
과 뉴턴-랩슨법을 이용 와 를 평가하여 0에 가까워지는 를 찾는다.- 즉 미지수
를 근사해, 현재 위치와 타원체 표면 사이의 거리를 근사적으로 계산한다.
'3D Engine Design for Virtual Globes' 카테고리의 다른 글
컴퓨터로 원근감을 표현하는 방법 (feat. Depth Buffer) (10) | 2025.03.05 |
---|
- Total
- Today
- Yesterday
- cpu rte
- Jittering
- 삼각분할
- 탑싯 후기
- 탑싯 고득점
- 탑싯
- 병렬 연산
- reciprocal approximation
- ear clipping
- topcit 고득점
- gpu rte dsfun90
- coordinate transformation
- parallel operation
- high-low encoding
- virtual globe
- 심파이
- relative to center
- sw 마에스트로 15기
- relative to eye
- Software maestro
- ear cut
- 좌표 변환
- gpu rte
- netwon-rapshon
- geodetic
- 3d engine design for virtual globes
- 취업 후기
- 역수 근사
- 소프트웨어 마에스트로
- floating point
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |