已知某质点初速度、初位置、及其在空间任意一点的加速度,用计算机模拟出该质点在t时间的坐标 很麻烦的问题就是计算机没法处理连续时间,只能离散地模拟,这样会导致很大的误差……求
来源:学生作业帮助网 编辑:作业帮 时间:2024/11/16 15:59:42
已知某质点初速度、初位置、及其在空间任意一点的加速度,用计算机模拟出该质点在t时间的坐标 很麻烦的问题就是计算机没法处理连续时间,只能离散地模拟,这样会导致很大的误差……求
已知某质点初速度、初位置、及其在空间任意一点的加速度,用计算机模拟出该质点在t时间的坐标 很麻烦的问题就是计算机没法处理连续时间,只能离散地模拟,这样会导致很大的误差……求好的算法 几个测试数据:1.直线运动 2.抛物线 3.圆周运动
已知某质点初速度、初位置、及其在空间任意一点的加速度,用计算机模拟出该质点在t时间的坐标 很麻烦的问题就是计算机没法处理连续时间,只能离散地模拟,这样会导致很大的误差……求
做过物理引擎的给你点思路吧:首先,计算可以不是离散的.否则你会随时发现碰撞检测失败.以最基本的碰撞检测为例,其算法大致可以表达如下:首先,确定这一帧与上一帧之间的时间间隔,设为T.预测所有物体间的所有碰撞中最近的下一次碰撞在何时.将该时间从T中扣除,并将所有物体的状态更新到该碰撞时刻(位置,速度,角速度,姿态.看你模拟多少了).反复运算,直到时间T被消耗完毕,进入下一帧.这期间,你要考虑若干极限情况,比如极短程的碰撞(运动物体进入“碰撞陷阱”),比如静止,动能或者动量的耗散,物体的破碎和结合.简单说,我们把【系统物体之间不发生互动,物体仅与环境发生互动】的时段,视作【系统状态稳定】,而将【系统对象之间发生的任何互动,看作事件】.然后我们【将事件看作瞬时的】.不断的检查下一次事件在何处,而期间的时间让系统和环境互动,消费掉,直到这一帧的时间耗尽.我必须指出,上述系统仅仅适用于一切成员都视作刚体的系统.成员之间没有约束关系.但是我想这对你想要模拟的物理系统应该够用了.如果你要模拟更多因素,比如自带动力和导航(自主运动,要做AI计算)、布料、浮力、不均匀的风,穿越不同介质.这答案不可能是免费的.做之前要好好的想好系统复杂度.要竭尽一切可能的消除哪怕一丁点多余和不必要的计算.要考虑清楚计算的时间消耗.我不得不指出一个超系统性的问题:如果你的算法效率太低,那么下一帧的T值会因为上一帧花了太多时间计算而延长,于是下一帧的计算任务在某些情况下会变得更重,从而进一步的拉长下下帧的T值.陷入一个局部的恶性循环,让你的系统突然陷入一个“泥沼”.预处理——比如快速粗略判断事件发生的可能性——也是消耗时间的.是否要做预处理,你需要权衡考虑,有时保持算法简单(哪怕粗暴点)更重要.不过呢,作为一名前程序员向你保证:再没有比重建一个物理世界更令人满意的娱乐了——也许只有编制AI比这更好玩吧 .按下播放键,让你的世界飞转吧.没事还可以创造点新物理定律.其实你的本题非常简单,看起来只是一个理想运动要求任意时刻状态,套公式就行了,和时间的离散性本来就没什么关系.如果是要模拟连续的运动,无非缩小时间单位,让离散更接近连续而已.