【发布时间】:2018-07-15 22:32:36
【问题描述】:
我想创建一个物理模拟,其中初始值将是所有物体的初始位置向量、所有物体的初始速度向量、所有物体的质量、所有物体的电荷, 初始时间为 0。
模拟中计算两个物体之间距离的距离公式应与欧几里得空间中的距离公式相同。
任何物体上任何其他物体的力矢量将取决于两个物体的电荷乘以两个物体之间的距离 f(距离)乘以(该物体的位置矢量减去位置的函数)的乘积另一个物体的矢量)除以两个物体之间的距离。任何物体上的总力矢量将取决于该物体上来自其他物体的所有力矢量的总和。任何物体的加速度矢量取决于该物体上的总力矢量除以该物体的质量。
在初始时间步之后的每个时间步中,每个物体的新位置向量将取决于 1/2 乘以先前的加速度向量乘以先前的时间步长的平方加上先前的速度向量乘以先前的时间步长加上前一个位置向量。新的速度向量将取决于先前的加速度向量乘以先前的时间步长加上先前的速度向量。此外,经过的新时间将取决于之前经过的时间加上之前的时间步长。
如果我改变维数、添加新物体、移除现有物体、改变现有物体的质量、改变现有物体的电荷,公式需要自动调整以继续匹配我之前所说的内容,改变现有物体的位置矢量,改变现有物体的速度矢量,或者改变我前面提到的力公式中的距离函数。
模拟应该在超过三个维度的空间中工作。同样对于我在第三段中提到的距离函数 f(距离),模拟应该支持尽可能多的距离函数,包括距离的三角函数,例如距离的 sin(距离)和 cos(距离),双曲线距离的三角函数,例如距离的 cosh(distance) 和 sinh(distance) 多项式,距离的幂,例如 e^distance,距离的对数,距离的 Bessel 函数,距离的误差函数,以及这些功能和其他功能(如果可能)的组合。
理想情况下,模拟应该有可能每分钟运行数百万个时间步,以便模拟速度快,同时最大限度地减少模拟计算中的累积误差。
如何编写符合上述所有标准的物理模拟以及哪种类型的程序最适合此类模拟?
【问题讨论】:
-
这个问题及其变体已经并继续在计算科学中得到广泛研究。您可能比将您最喜欢的搜索引擎指向 n-body 模拟 做得更糟。我认为您在 SO 所提出的限制内得到一个好的答案的机会非常接近
0。 -
如果你打算自己创建这个程序,我建议你先从很多简单的东西开始,然后再构建。
标签: math simulation physics game-physics skphysicsbody