/Solar-System

使用matlab模拟太阳系中星球的运动(太阳-地球-月球)

Primary LanguageMATLAB

Sun_Earth_Moon System

Author 张文喆 1551719

概要

Sun_Earth_Moon System的宗旨在于模拟太阳系中太阳、地球和月球的运动轨迹,以及观察地球和月球的光照情况。实现的功能有:

  1. 太阳自转
  2. 地球绕太阳公转
  3. 地球自转
  4. 月球绕地球公转
  5. 月球自转
  6. 太阳光照

实现方法

  1. 太阳自转

    使用rotate函数使太阳绕自身中心所在的Z轴旋转,具体旋转参数请参照Sun_Earth_Moon.m中相应的代码和注释。

  2. 地球绕太阳公转

    使用rotate函数使地球绕太阳中心所在的Z轴旋转,具体旋转参数请参照Sun_Earth_Moon.m中相应的代码和注释。

  3. 地球自转

    使用rotate函数使地球绕自身中心所在的Z轴旋转,具体旋转参数请参照Sun_Earth_Moon.m中相应的代码和注释。

  4. 月球绕地球公转

    这一部分较为复杂,因为月球在绕地球公转的同时,地球也在绕太阳公转,所以无法使用rotate函数。我才用的方法是使用lunar_orbit函数计算当前帧情况下月球的具体坐标,并刷新月球的位置坐标,使其达到了一种“绕地球公转”的效果。换言之,我实际上计算出了月球相对太阳运动的轨道。

    具体计算坐标的过程请查看lunar_orbit.m,里面包含了详细的解释。

  5. 月球自转

    使用rotate函数使月球绕自身中心所在的Z轴旋转,具体旋转参数请参照Sun_Earth_Moon.m中相应的代码和注释。

  6. 光照

    由于没能找到matlab中实现面光源的方法,我在太阳表面的六个位置设置了点光源(将代表太阳的球体放入一个边长与它的直径相等的立方体内,二者接触的六个点),并提高了太阳曲面的透明度,尽量在提供光照的前提下不影响太阳的观感。具体参数请参照Sun_Earth_Moon.m中相应的代码。

其它说明

  1. 为了提供更好的观感,太阳的大小以及太阳到地球的距离都缩小了很多;
  2. 为了便于计算,星球的运行轨迹近似为正圆;
  3. 为了便于计算,没有考虑星球的轨道面的夹角。