• 利用简单的力学法则来模拟天体运行(2)


    Hi,我对于之前的天体运行程序 (原贴http://www.cnblogs.com/haoxiaobo/p/3368320.html)又做了一次改进,如下:

    * 增加运动计算的精确度!

    运动计算加入了上次说的线性取中值(其实就是除于2啦),果然又精确了一点。

    * 加入相对论修正!

    在测试中发现有时星体被加速到超光速!发现自己忘记相对论效应啦!这次加入相对论修正。

    * 增加星体合并!

    当两个星距离小于半径之和时,大星吃掉小星,质量、半径、颜色、动量发生合并。

    * 星体支持贴图!

    可以构造方法里指定正方形的星星图,此图会被做为星星的显示材质。如果不指定,就用指定的颜色画一个。

    下面的图就是部分效果:

    * 用真实的比例显示星体大小!

    按真实的星体大小来显示。这个修改之后,虽然更科学了,但也发现可视性效果差了很多,比如放大到太阳占到整个屏幕大小了,地球还只是一个点点……,要想看到远行星,更是需要拖呀拖呀拖呀拖呀……滚呀滚呀滚呀……

    宇宙中的尺度真是太大太大太大了,比例真是太大太大太大了……,没办法,于是我又发明了几个功能:小于4个像素的,就画4个像素质。以及,下面的这些个功能:

    * 用Shift+滚轮可以单独缩放星体大小!

    这样,就可以在空间比例不变的情况下,缩放星星的大小,可以把星星放大到可以在屏幕上看到。

    下图就是把所有星体放大5000倍的样子。

    * 空格键可以缩放当前跟随的星体到合适的大小来观看!

    在跟随某星观察时,可以按下空格键,立即把空间比例缩放到一个合适显示这个星星的大小,并定在屏幕正中。

    谁能找出为什么有些星星会在一些大比例显示时会轻微地晃动?

    * 鼠标点击选择相机跟随!

    原来用C键切换相机跟随星体。星星多了就不方便了。现在用鼠标在屏幕上直接点选星星进行跟随。

    同时,也把标签(L)、轨迹(O)、速度(V)等设为默认不显示。当跟随时,或是鼠标在星星上晃时才显示。提高了重绘效率了。

    --------------------------------------------------------------------------------

    以下是还可以加入的功能。不过近期不会再做了。

    * 引力潮

    现在的程序里是把星体做为质点来计算的,星体的大小只用于绘图方面的处理。但实际情况下,星体之间,面对面的那边由于比互相背向的一边离得远了一个直径的距离,受到的引力是不一样的,引力差于是就形成了潮汐力,在星体之间离得很远很远时,潮汐力很微小,但在星体离得很近时,这个力就很大,大到超过星星自体的引力时,就会让星星崩解。

    我一开始想,如果能加入引力潮下的星体崩解就好了,但是仔细一想,涉及的计算量比较大,在pc上的玩具级模拟程序上,还是算了吧。

    * 史瓦西半径

    现在程序里的星体合并是出现在两星接触时,但在实际中,每个星星据引力大小都有一个半径范围,其他星体一但进入这个半径,就不可能再逃出,最终会坠入对方。

    一般密度的星体,史瓦西半径可能会小于真实星体的半径,但密码很大的星体,史瓦西半径就可能会很大,比如黑洞。

    所以,现在的程序对于普通天体的合并处理是正确的,但如果加入一个黑洞,不知道会出现什么事情,也许会自然地遵守这个法则?另一方面,如果加入黑洞的话,就应该把史瓦西半径做为黑洞的半径来处理,颜色就选黑色吧!

    * 3d空间与视图

    其实已经加入Z维的计算了,只是还没有采用3d视图来处理显示的问题,那个……OpenGL或是Dx3d什么的我还没心思下苦功夫去学习,所以,先就这样吧。

    另外,昨天网友推荐的那个3d太阳系程序,我下载了看了,是固定轨道的简易演示,并不对真实物理效应进行模拟,3d酷一点点,但里面没物理学。

    * 行星环

    现在所有的行星都是用圆处理的。于是我遇上了土星这个奇葩……那个环没法贴图。

    我想可以在现在的行星类中派生出一个有环行星的类,来额外画环。

    源码已经更新:http://files.cnblogs.com/haoxiaobo/StarsScreenSaver.rar

  • 相关阅读:
    涨知识| 在国内,如何顺利使用谷歌(转)
    css3网站收集
    淘宝客 新内容
    淘宝客工作计划
    淘宝客笔记
    java并发编程
    代理模式之远程代理
    动态代理
    模板方法模式
    Spring整合web开发
  • 原文地址:https://www.cnblogs.com/haoxiaobo/p/3372221.html
Copyright © 2020-2023  润新知