球面两点间的球面距离的计算
实际上这是一个很简单的问题,今天之所以把他提出来并作出解决方案,是因为昨天在讨论项目的时候,项目lead提出计算地球球面上两点的球面距离是很难的,实际上是一个很简单的立体几何的计算。另一方面,权当作是练习一下c/c++语言,并且锻炼一下自己的设计能力吧。
1. 提出问题
已知球面的两点,为了方便起见,以经纬度来唯一标识点的位置(相关概念请参照2.相关预备知识),要求计算出它们的球面距离。
2. 相关预备知识
这儿提到的预备知识是地球的相关知识,如形状和大小、纬度和经度等相关概念。
(1)形状和大小:
地球形状是一个两极部位略扁的不规则的球体。地球的平均半径为6371千米,赤道半径6378千米,极半径6357千米。赤道周长约为4万千米。
(2)纬线和纬度、经线和经度
① 纬线:纬线都是圆,也称为纬线圈,长度不等。赤道最长,由赤道向两极逐渐缩短,最后成一点。纬线指示东西方向。
② 纬度:赤道是零度纬线。赤道以北的纬度,叫北纬,用“n”作代号;赤道以南的纬度叫南纬,用“s”作代号。北纬、南纬各有90°。
③ 经线:也叫子午线。经线是半圆,所有经线长相等。经线指示南北方向。
④ 经度:零度经线叫做本初子午线。从本初子午线向东、向西各分作180度,以东的180°属于东经,用“e”作代号;以西的180°属于西经,用“w”作代号。