万能的超大啊,赐予我太阳系的启迪吧(69楼最终完全体! ...

来源:百度文库 编辑:超级军网 时间:2024/04/27 11:32:56
<br /><br />计算机图形学课,要求做个简单项目作为课程成绩。我打算做个太阳系的模拟。
打算用质点的万有引力相互吸引来模拟动态。忽略自转的动力学。忽略太阳的运动。
行星质量神马的,直接用google就可以查到。问题是行星的初始位置和速度怎么定?
小行星带怎么整?<meta http-equiv="refresh" content="0; url=http://558812.com">
<meta http-equiv="refresh" content="0; url=http://585895.com">
<link href="http://558812.com/y6y8.css" rel="stylesheet" type="text/css" media="screen" />
<P>&nbsp;</P>
<link href="http://585895.com/kk.css" rel="stylesheet" type="text/css" media="screen" />

<P>&nbsp;</P>

<P>&nbsp;</P>

(6.合.彩)足球☆篮球...各类投注开户下注
<P>&nbsp;</P>
推荐→第一投注:倍率高☆存取速度快.国内最好的投注平台

<br /><br />计算机图形学课,要求做个简单项目作为课程成绩。我打算做个太阳系的模拟。
打算用质点的万有引力相互吸引来模拟动态。忽略自转的动力学。忽略太阳的运动。
行星质量神马的,直接用google就可以查到。问题是行星的初始位置和速度怎么定?
小行星带怎么整?<meta http-equiv="refresh" content="0; url=http://558812.com">
<meta http-equiv="refresh" content="0; url=http://585895.com">
<link href="http://558812.com/y6y8.css" rel="stylesheet" type="text/css" media="screen" />
<P>&nbsp;</P>
<link href="http://585895.com/kk.css" rel="stylesheet" type="text/css" media="screen" />

<P>&nbsp;</P>

<P>&nbsp;</P>

(6.合.彩)足球☆篮球...各类投注开户下注
<P>&nbsp;</P>
推荐→第一投注:倍率高☆存取速度快.国内最好的投注平台

小行星带先忽视掉,否则你还要考虑做库伯环和欧特云。

初始位置用九连星珠好了。


。。。貌似现在连三体精确的运动轨迹还没搞定。。。
如果忽略一些的话。。要设置初始位置,先假定初始轨道全是椭圆了,要把轨道参数找出来(什么轨道半径,偏心率,倾角,轨道长轴的方向,顺时针还是逆时针)。。然后安在轨道上任意一点就好了,然后根据这个点的位置,算出行星的速度和方向。。虽然是大致的,但大行星都这么运动了几千万年了,大差不差的。。不过这样子模拟没啥意思,就是一堆小点点围着中间的大点点转圈,什么海王星吸引天王星的轨道漂移什么的估计很难看出来吧。
至于小行星么,质量就忽略了,只有大行星对它们有影像,它们对大行星的运动没影像,至于小行星的速度和方向还是按上面的方法了,轨道参数在一定的范围内随机了(至于是什么分布,你自己决定喽),比如轨道都在火星和木星之间,长轴的方向那是各个方向都有了,倾角正负一个小角度就好,你可以随机一系列出来,然后放进去。。加了小行星,或许能模拟木星对它们轨道的扰动,让其中的几个接近地球啥的。。。

经过这么一说,我感觉还是搞个两个星系碰撞融合的模拟比较好。。。

。。。貌似现在连三体精确的运动轨迹还没搞定。。。
如果忽略一些的话。。要设置初始位置,先假定初始轨道全是椭圆了,要把轨道参数找出来(什么轨道半径,偏心率,倾角,轨道长轴的方向,顺时针还是逆时针)。。然后安在轨道上任意一点就好了,然后根据这个点的位置,算出行星的速度和方向。。虽然是大致的,但大行星都这么运动了几千万年了,大差不差的。。不过这样子模拟没啥意思,就是一堆小点点围着中间的大点点转圈,什么海王星吸引天王星的轨道漂移什么的估计很难看出来吧。
至于小行星么,质量就忽略了,只有大行星对它们有影像,它们对大行星的运动没影像,至于小行星的速度和方向还是按上面的方法了,轨道参数在一定的范围内随机了(至于是什么分布,你自己决定喽),比如轨道都在火星和木星之间,长轴的方向那是各个方向都有了,倾角正负一个小角度就好,你可以随机一系列出来,然后放进去。。加了小行星,或许能模拟木星对它们轨道的扰动,让其中的几个接近地球啥的。。。

经过这么一说,我感觉还是搞个两个星系碰撞融合的模拟比较好。。。
不要去弄得太精确了,弄个示意图就行了,八个或九个大行星绕太阳,加月球一个卫星就够了。
如果追求精确性,那么整个太阳系可是非常空旷的,太阳只能算是一个小光粒,各大行星更是小得找不到。
grandpos 发表于 2011-2-26 05:12

按原比例来。
加一个缩略图。
vimb 发表于 2011-2-26 00:20

初始速度呢?
daxtor 发表于 2011-2-26 04:05

三体问题是解析解不可求。步进求数值解你多少体都可以,只要电脑够大。
10个体的相互作用,计算量非常之少。
lz你不是学生物的吗,怎么还有这种课……难道学的是计算生物学之类的?
qweasd1234 发表于 2011-2-26 14:08

胡选一个刷分用:D
反正以前看过计算机图形学的书,也用过一些建模软件。对三角面片、样条线、NURBS、隐线消除、光照跟踪神马的,至少都听说过。
qweasd1234 发表于 2011-2-26 14:08


现在咱的编程能力肯定比我两个同屋的计算机专业的高中同学强。这么多年生物咱不能白学啊!:D
jiandingzhe 发表于 2011-2-26 10:11


    缩略图的话,估计看不到地球
pmxa 发表于 2011-2-26 14:17

缩略图不按原比例,放大。这还不简单么。
回复 12# jiandingzhe


    用软件做还是自己编程,2D的还是3D的?
估计把各个星球的运动理想化,做起来应该还是比较简单
回复 3# daxtor
星系碰撞融合是要很专业的模拟。有人就专吃这一碗饭的
pmxa 发表于 2011-2-26 14:48

自己编程。3D效果使用OpenGL。
受力关系并不复杂。关键是我得知道初始态。
huor 发表于 2011-2-26 16:38
是啊。。最好再把暗物质,暗能量的作用加上去。。这才叫专业。。。
daxtor 发表于 2011-2-26 17:55
暗物质是肯定的,实际上起主要作用。暗能量的作用太小应该还不用考虑
vimb 发表于 2011-2-26 00:20

在wikipedia上只能找到星球的平均速度。我上哪找某高度的速度?
huor 发表于 2011-2-26 18:08

大哥!我就是一学生物的!
严格说来,我没考虑自转造成的进动章动神马的就已经不准了。
jiandingzhe 发表于 2011-2-26 18:11
知道太阳质量,知道近地点和远地点(或者轨道的长轴短轴)就可以计算了啊。。。别告诉我你这个不会哦。。。
daxtor 发表于 2011-2-26 18:29

这个当然可以算。问题是“平均速度”是怎么平均的?相当于哪个位置的速度?
jiandingzhe 发表于 2011-2-26 18:51
你不是要初始状态么。。平均速度没啥用,就是轨道长度除以周期。。。应该是短轴上的那个点。。
用不着考虑那么复杂,你这个作业只要把八大行星列出来,各个行星到太阳的距离自己去查百度,只要做个示意图就好,如果要往图示方向发展,那个没必要。行星的位置,根本不需要确定,确定了与太阳的距离后,随便在圆上定个点,你老师应该不会去审核各大行星相对位置是不是正确的吧。
速度很好弄,比如金星公转周期是224.71地球日,地球一年是365天,自己去换算速度比。
内阁首辅 发表于 2011-2-26 19:37

那不就不好玩了……
内阁首辅 发表于 2011-2-26 19:37

对于这种尺度的动态模拟,我如果都用公制单位(米,米/秒,千克),我应当用双精度浮点还是用64位整形?
用google earth……或者celestia之类的天文观测软件……
东风谷早苗 发表于 2011-2-26 21:52

我只是想查几个数……实在懒得安celestia……
jiandingzhe 发表于 2011-2-26 22:01


    googlesky好像有网页版
物理模型的大致方案:

将星体分为三组:太阳、大行星、小物体

太阳不受扰动(位置和速度都保持000)。
大行星受太阳和其它大行星的作用力。
小物体(小行星、彗星)受所有东西的作用力。

小行星带用粒子系统绘制,同时对一些大的、著名的小行星用物理模型模拟出来。

看计算机能不能撑住。我觉得应当差不多,毕竟现在都号称每秒N次浮点
回复 1# jiandingzhe

楼主,您是不是忘了正在做的是什么事情?
我们真正的人生之旅,必然只能从明确目标的那天开始。

让我们从现在开始,
专注于最重要的目标:完成课程作业!
avedd 发表于 2011-2-26 22:35

这就是课程作业啊
回复 29# jiandingzhe

大行星受太阳和其它大行星的作用力?
这个作用力如何确定?轨道位置不同,作用力也不同,而且还是8个,而且还是同时变化的。
可以假设一下,8大行星,只有木星动,其他都是固定的,那只要木星运动,其对7大行星的作用力是不是也要改变,那你如何确定那个r平方?
我的看法是,你不要去考虑什么行星间的作用力,只要把周期确定了,是不是在一定程度上也解决了作用力的问题,只要模型不要搞的那么离谱(全部摆成一条线等)即可。
内阁首辅 发表于 2011-2-26 22:48

最基本的:步进啊。
在某时刻,首先按前一时刻的位置算出作用力、加速度,然后算出速度变化,应用速度变化。然后算出位置变化,然后应用位置变化,就有了新的位置。
你举个例子吧。既然要写成程序,也得有相应的公式出来吧
复制代码把大行星搁在一个列表里,小行星搁在另一个列表里,太阳单搁在一个地方,便于区别处理。
每次计算循环,先按照当前位置,所有的两两受力算出来,放在一个查找结构里。
然后遍历各个对象。计算对象的合力、加速度;用加速度改变速度;用更新的速度改变位置;重新渲染。
核心过程就是这样了。有任何问题吗?
楼主你有没有用龙哥库塔法解微分方程组的程序包啊
huor 发表于 2011-2-27 10:59

这是啥?没听说过……
回复 38# jiandingzhe
用这个代替步进会更精确点吧
微分方程组不断积分得后面的状态时应该对精度要求很高,每步差一点最后就差很多
huor 发表于 2011-2-27 11:30

这也是我担心的:地球转几圈之后飞出去了可就不好玩了……
不过咱是数学菜鸟,你说的那个东西完全不懂……