Cocos物理科学计算

想用cocos引擎做科学计算,物理引擎计算结果无法重复,计算不精确,怎么办?

定位为js的小数问题,需要自己写一个定点数引擎


请问这几个引擎中有定点数引擎吗?
@minggo

额,众所周知,物理量都不是精确值,都是一个均值附带一个误差范围。要做物理模拟控制误差的根本途径,是使用《数值分析》学里的算法理论,设计误差收敛的算法,而不是试图寻找什么现实世界中都不存在的“定点数物理引擎”


https://github.com/yingyugang/FixedPointPhysics

物理不是精确数值,但是计算结果可以是精确数值,要的是计算结果的准确

1赞

举个例子,火箭的发射不能实时测试,也不能随机,必须有精确的物理计算

找到原因了,可能是因为update里用了deltatime插值,有没有不用deltatime,每帧固定计算的物理引擎
@minggo


看起来所有模拟都是按照固定时间计算的


具体应用例如这个,主要是对细节的把控

如果不按照帧计算,把游戏放入后台,再进入前台,会出现反常行为,这个问题还是很严重的
@minggo

定点数不是用来做帧同步的吗,和科学计算有啥关系。科学计算是fem cfd啥的吧,js性能完全不行

1赞

应该添加一个使用帧计算的选项,目前的计算方式似乎是在每个时间段里进行计算


看起来bullet是一个帧计算物理引擎,但是cocos似乎给改了


问题似乎出在刚体组件,update中有插值

能否自己写一个刚体组件,继承原刚体组件,覆盖update函数

普通的物理模拟还是使用刚体,根本用不到流体


看了一下引擎,应该是这个加速度的问题

前台后台切换之后,会出现突然强烈的加速度,应该就是deltatime导致的

fixedtime应该是在引擎里设置的时间,那么这个加速度也要在引擎里设置了,但是引擎没有给接口