>일반적인 문제 >[수학적 공식 및 도출] 경도와 위도를 기준으로 지상의 두 지점 사이의 거리를 계산합니다.

[수학적 공식 및 도출] 경도와 위도를 기준으로 지상의 두 지점 사이의 거리를 계산합니다.

藏色散人
藏色散人앞으로
2020-10-22 11:38:493644검색

1. 가정: 지구는 완벽한 구체입니다. 지상의 두 지점 A와 B의 경도와 위도 좌표는 각각 (Aj, Aw)와 (Bj, Bw)입니다. 지구 R의 평균 반경은 6371km입니다.

2. 3차원 직사각형 좌표계 구축:

지구의 중심은 원점 O, 지구의 축은 Z축, 북극 방향은 Z축의 양의 방향, 적도 plane은 X축과 Y축이 위치한 평면으로, 이 평면에서 중심에서 경도 0까지의 방향은 X축의 양의 방향이고, Y축의 양의 방향은 에 따라 결정됩니다. 오른손 법칙.

점 A의 3차원 좌표가 (Ax, Ay, Az)이고, 점 B의 3차원 좌표가 (Bx, By, Bz)라고 가정

3 Idea:

평면 세 점 A, B, O가 위치한 곳은 지구가 교차하여 반지름이 R인 원을 형성하는 것입니다. AB 사이의 지상 거리를 구하는 것은 원 위의 호 AB의 길이를 구하는 것입니다. 호의 길이는 반경에 중심각을 곱한 것과 같다는 공식을 통해 알 수 있습니다.

R이 결정되었으므로 OA와 OB 사이의 각도 θ만 구하면 호 AB의 길이를 구할 수 있습니다. 호 AB=R*θ.
각도 θ는 벡터 공식

벡터 OA*벡터 OB=|OA||OB|cosθ를 통해 찾을 수 있습니다.
그런 다음

cosθ=向量OA*向量OB/|OA||OB|
     =(Ax*Bx+Ay*By+Az*Bz)/R*R

4. 경도와 위도 좌표를 사용하여 3차원 직사각형 좌표를 나타냅니다.

Ax=R*cosAw*cosAj
Ay=R*cosAw*sinAj
Az=R*sinAw
Bx=R*cosBw*cosBj
By=R*cosBw*sinBj
Bz=R*sinBw

에 대입하면

cosθ=cosAw*cosAj*cosBw*cosBj+cosAw*sinAj*cosBw*sinBj+sinAw*sinBw
     =cosAw*cosBw(cosAj*cosBj+sinAj*sinBj)+sinAw*sinBw
     =cosAw*cosBw*cos(Aj-Bj)+sinAw*sinBw
θ=arccos[cosAw*cosBw*cos(Aj-Bj)+sinAw*sinBw]

5를 얻을 수 있습니다. 경도와 위도에 따른 지상의 점들:

弧AB=R*arccos[cosAw*cosBw*cos(Aj-Bj)+sinAw*sinBw]

설명:

누구나 비슷한 공식 도출을 해본 적이 있을 것입니다. 시간이 오래 지나면 잊어버릴 수도 있으므로 참고용으로 적어 두었습니다.

삼각 함수의 다단자 변환으로 인해 이 공식은 전제 가정이 동일한 한 수학적으로 동일해야 하며 서로 추론할 수 있습니다.
실제 프로그램 코드에서 사용할 때는 단위 문제에 주의해야 합니다. 예를 들어 로케이터에서 얻은 경도와 위도의 단위는 도이고, 삼각법 계산의 단위는 라디안일 가능성이 높습니다. 길이의 단위가 km인지 m인지 등입니다.

추천: "프로그래밍 비디오"

위 내용은 [수학적 공식 및 도출] 경도와 위도를 기준으로 지상의 두 지점 사이의 거리를 계산합니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 cnblogs.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제