2014-12-22 2 views
2

단위 구를 작업 중입니다. 나는 임의의 두 점 사이의 구 (지오다이딕)의 표면에 해협 선에 N 점을 놓는 것에 관심이있다. 이 점의 좌표는 구 좌표 (라디안)입니다.측지선의 점

같은 선을 따라 N 개의 등 간격 점을 어떻게 계산합니까? 내 계산에서 구체의 곡률을 고려하고 싶습니다.

파이썬을 사용하고 있습니다. 2.7.9

+0

아마도 도움이 될 것입니다. http://stackoverflow.com/questions/16015533/get-n-points-on-a-line –

+0

이 질문을 보았습니다. 그렇지만 나는 관련 질문을했습니다. 진짜 구체, 지오이드가 아닙니다. –

+0

URL에서 "Geod"는 측지선을 나타냅니다. 지오이드는 완전히 다른 것입니다. 그리고 제안 된 답변 (geographiclib 사용)은 타원체뿐만 아니라 구형에서도 작동합니다. –

답변

2

가 t 범위 내의 파라미터이다 [0..1], i 번째의 점 t(i) = i/N위한

2

기하학적으로 이유를 설명합시다.

주어진 두 점을 데카르트 좌표로 변환하십시오. P 및 P0 사이

P = (1-t).P0 + t.P1 

각도 :

P0과 P1의 중심으로부터의 위치 벡터 사이의 각도는 내적에 의해 주어진다

cos A = P0.P1 

이들의 선형 조합을 구축 P 정규화 된 내적에 의해 주어진다.

cos a = cos kA/N = P.P0/|P| = ((1-t) + t.cos A)/ sqrt((1-t)² + 2.(1-t).t.cos A + t²) 

제곱 및 다시 쓰기,

cos²a.(1-t)² + 2.(1-t).t.cos²a.cos A + t².cos²a - (1-t)² - 2.(1-t).t.cos A - t².cos²A = 0 

- sin²a.(1-t)² - 2.(1-t).t.sin²a.cos A - t².(cos²A - cos² a) = 0 

t²(-sin²a + 2.sin²a.cos A - cos²A + cos²a) + 2.t.sin²a.(1 - cos A) - sin²a = 0 

방정식을 풀고 그 정의로부터 벡터 P를 계산하고 정규화합니다.

그런 다음 구 좌표로 되돌립니다. 1과 N-1 사이의 다양한 k는 필요한 중간 지점을 제공합니다.


또는 을 3D 축을 중심으로 사용할 수 있습니다. 축은 외적 (cross-product) P0 x P1에 의해 주어진다. 오메가 시작점과 끝점 사이의 중심각 (큰 원의 원호) 어디 있는지 SLERP - spherical linear interpolation

P = P0*Sin(Omega*(1-t))/Sin(Omega) + P1*Sin(Omega * t)/Sin(Omega) 

을 고려할 수