金星和地球的轨迹图

某日在微博上看到一张很有意思的动图:金星和地球位置连线动态变化,最后得到一张很美,看着极度舒适的图。

image.png

于是计划写一个程序模拟这么一个过程。

思路应该是非常简单的,查找一些金星和地球的基本数据,然后分别计算出某一时刻它们所在的位置,最后用线段将两个位置连接起来就可以了。

当然,用程序实现起来也不难,在R中或者在Python中,使用三角函数求值,一段代码就能搞定。不过不过,既然前段时间学习了C语言,何不用C语言写呢,这是一次很好的练习机会。(用C画图对初学者来说有点困难,因而还是回归到R中作图)。


模拟条件设定:

  1. 地球公转:365天

  2. 金星公转:225天

  3. 地球公转半径:1个天文单位

  4. 金星公转半径:0.7个天文单位

  5. 假定公转是在同一平面的两个同心圆



按照上述简化模型,金星和地球完成一个周期需要45年。假如我们以10天为一个采样单位,来绘制金星和地球之间的相对位置的连线。可以得到以下过程(内部圆为金星轨道,外部圆为地球轨道):

image.png

当然,这儿没有再做其他的美化效果,看起来不如微博上的好看。


下面分别以5天、10天、50天和100天为采样时间点,最终得到以下图形。


image.png

此处不在展示具体代码,参见GitHub主页:

https://github.com/Yiguan/earth_venus_orbit


总结两个知识点:

  1. 文件指针的使用方法,以此将程序生成的数据写入到外部文档。

  2. 对命令行参数的传入。源代码中使用了sscanf()函数将参数传入代码内部使用。



======= THE END =====

image.png


猜你喜欢

转载自blog.51cto.com/15069450/2577317