Stellarium 是一款免费开源的GPL(自由软件基金会GNU通用公共许可证)软件,它使用OpenGL图形接口对星空进行实时渲染。软件可以真实地表现通过肉眼、双筒望远镜和小型天文望远镜所看到的天空。我本人以往的动态中所添加的实时星图就是利用这款软件模拟出来的。
那么,Stellarium的地景是怎么生成的?今天让我用一篇文章来告诉你。
其实,这个过程,就相当于将空间直角坐标系中的点,投射到以O为球心且半径为R的一个球面上,也就是将空间直角坐标转换为球面坐标。
那么,这具体是怎么转换的呢?
1、建立空间直角坐标系
首先,我们应当建立一个空间直角坐标系O-xyz。其中,x轴的正方向指向正北方,y轴的正方向指向正东方,z轴的方向指向天顶。需要注意的是,x轴、y轴与z轴一定要互相垂直。
有了空间直角坐标系O-xyz,我们就可以将空间中的任意一点用(x,y,z)的形式表示出来。其中x,y,z∈R。
2、将(x,y,z)转换成(α,δ)。
得到了(x,y,z),接下来就是将其转换为(α,δ)。令点P(x,y,z)在平面xOy的射影为L,则L为(x,y)。那么点P的地平方位角α满足tanα=(y/x),其中∈[0,2π)。注意:一定要看清楚x,y的符号再分情况确定α的数值。
再令点O与点L的距离为R,则R=√(x↑2+y↑2),也就是说,点P在空间直角坐标系中与z轴的距离为R=√(x↑2+y↑2)。然后再用tan(δ)=(z/R)求出δ的数值。
将(x,y,z)转换成(α,δ)的步骤,现在大家应该理解了吧?
附图:A点(1,2,3)、B点(-2,-3,-4)、C点(3,-4,5)分别与图中的A、B、C三点相互对应。
隐藏内容需要登录才可以看见