求助:想做一个引力的动画, A 绕 B 旋转,并被吸引,求公式 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
wl879
V2EX    程序员

求助:想做一个引力的动画, A 绕 B 旋转,并被吸引,求公式

  •  
  •   wl879
    wl879 2017 年 5 月 12 日 5112 次点击
    这是一个创建于 3249 天前的主题,其中的信息可能已经有所发展或是发生改变。

    像黑洞的动画,星星围绕它转,最后被吸入的动画

    23 条回复    2017-05-13 23:02:29 +08:00
    SeanChense
        1
    SeanChense  
       2017 年 5 月 12 日   1
    多体系统,你想要的是双体系统。
    N 大于等于 3 的多体系统现在科学家都头疼。

    https://zh.wikipedia.org/wiki/%E4%BA%8C%E9%AB%94%E5%95%8F%E9%A1%8C
    https://zh.wikipedia.org/wiki/N%E4%BD%93%E9%97%AE%E9%A2%98
    jianzhiyao020
        2
    jianzhiyao020  
       2017 年 5 月 12 日
    百度:
    万有引力公式
    圆周运动公式
    eoxy
        3
    eoxy  
       2017 年 5 月 12 日
    F=Gmmr
    ryd994
        4
    ryd994  
       2017 年 5 月 12 日 via Android   1
    如果忽略星星之间的相互作用的话,就是独立问题,最简单。不忽略就是 n body,你先试试 verlet

    @SeanChense n body 问题难的是解析解。数值方法求近似还是很容易的。不然各种分子动力学都不用做了。
    finab
        5
    finab  
       2017 年 5 月 12 日
    直接被楼上吓尿了
    我以为楼主就要个 这个的计算公式呢,
    hard2reg
        6
    hard2reg  
       2017 年 5 月 12 日 via iPhone
    请 flash
    am241
        7
    am241  
       2017 年 5 月 12 日 via Android
    要么推导出轨迹随时间变化的函数并绘制
    要么找一个最小时间间隔做数值积分
    Kilerd
        8
    Kilerd  
       2017 年 5 月 12 日 via iPhone
    @SeanChense 三体找不到一个稳定的状态。
    因此引发了《三体》
    menc
        9
    menc  
       2017 年 5 月 12 日   4
    楼上都想什么呢,三体都出来了?强行吹比?看不懂题意?
    二体也用不上,人家固定了一个物体,哪来的双体问题?
    feng32
        10
    feng32  
       2017 年 5 月 12 日
    多体用计算机模拟特简单,类似数值积分的方法就行了
    shijingshijing
        11
    shijingshijing  
       2017 年 5 月 12 日   2
    很早以前,替我妈做了个地球围绕太阳转的物理课程动画教案,用的 Authorware,供楼主参考。
    ProjectAmber
        12
    ProjectAmber  
       2017 年 5 月 12 日 via iPhone   1
    用阿基米德螺线近似下比较简单。
    pcwow
        13
    pcwow  
       2017 年 5 月 12 日   1
    《 HTML5+Javascript 动画基础》第 12 章粒子与万有引力
    这里有 Demo:
    http://lamberta.github.io/html5-animation/
        14
    blankme  
       2017 年 5 月 12 日   1
    动量守恒 + 能量守恒 就能算出 r(t) 和 \theta(t)

    不过最后是个微分方程。。。 - -

    最实际的方法其实是找个差不多的螺旋线直接拿来用就行了,不是专业用途没人会细究的
    acros
        15
    acros  
       2017 年 5 月 12 日 via iPhone   1
    最简单做法,直接绕圈不就好了,只是 r 值慢慢变小。
    复杂点用速度合成,一个切向力,一个向心力(渐大),做向量叠加。

    不是做模拟天体吧,是的话我不知道....
    flyingghost
        16
    flyingghost  
       2017 年 5 月 12 日
    不就是引力公式和速度 /加速度公式吗?不就是速度合成吗?
    三体问题是找不出解析解,模拟三个体直接跑跑看还不简单嘛。
    而且 @menc #9 也指出了,题意根本没说 B 也绕 A 旋转。更简化了。
    这样的题面,画个九大行星绕太阳然后改改参数让他们都掉进去也不难啊。
    blankme
        17
    blankme  
       2017 年 5 月 12 日 via Android
    @flyingghost 你这样是算不出来的,因为引力是含时的
    quadpixels
        18
    quadpixels  
       2017 年 5 月 12 日 via Android
    积分可以用 Runge-Kutta 法,会比直接的加法(又叫欧拉法)要好。
    有一个叫 Hattrick 的程序,就是用了 GNU GSL 中的 Runge-Kutta 积分器来解 N 体问题的: https://github.com/wtolson/hattrick
    quadpixels
        19
    quadpixels  
       2017 年 5 月 12 日 via Android
    在那个 Hattrick 的这个文件中的 Acceleration 函数就有速度和加速度的公式,其实有了那两个就能让系统动起来。
    https://github.com/wtolson/hattrick/blob/master/src/Gravity.cc
    这个程序精度很高,我自己试过低精度,如果只是要起来看起来好看就 OK 其实也行不需要这么高级的方法的
    dongoo
        20
    dongoo  
       2017 年 5 月 13 日 via Android
    斐波那契数列?
    不知道可不可以要倒过来呢?
    dangyuluo
        21
    dangyuluo  
       2017 年 5 月 13 日
    实际上你考虑一下,强行另一个大质量物体 A 静止,另一个小质量物体 B 以一定初速度绕 A 运转。不考虑阻力,只要初速度矢量方向不在 AB 连线方向上的话,那轨迹肯定是个封闭的椭圆,二者永远不会相交的。
    dangyuluo
        22
    dangyuluo  
       2017 年 5 月 13 日
    @dangyuluo 更正一句:那轨迹肯定是抛物线、双曲线、封闭的椭圆中的一种。
    codehz
        23
    codehz  
       2017 年 5 月 13 日 via Android   1
    只是做动画而已啊。。。又不用在乎科学性。。。
    用极坐标,然后弄个递减函数就可以了(比如 a/x-b)。。。然后角度增加的速度,应该是越来越快的,这里再弄一个递增函数(比如 c^x),完美。。。这样参数化之后,只要调整几个参数,看着好看就可以了
    基于物理的方法去做这个基本是费力不讨好,可能物理上都对了,但是不好看。。。。。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     1515 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 34ms UTC 00:01 PVG 08:01 LAX 17:01 JFK 20:01
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86