collision-detection - 没有初始速度的两个加速球体之间的碰撞检测?

标签 collision-detection physics collision game-physics bulletphysics

最初,两个半径为 R1 和 R2 的非接触球体处于静止状态。
然后在时间 = 0 时分别给它们两个加速度 a1 和 a2。查明他们是否会接触。它们的初始位置分别表示为 (x1,y1,z1) 和 (x2,y2,z2)。加速度在 3D 中有各自的分量。它们分别表示为 (a1i,a1j,a1k) 和 (a2i,a2j,a2k)。

球体成功碰撞的数学条件是什么?或者应该用什么样的编程思维来解决这类问题。

注意:如果你能给出问题中提到的变量的满意条件,即 r1,r2,x1,y1,z1,x2,y2,z2,a1i,a2i,a1j,a2j,a1k 和a2k

最佳答案

使用给定的变量名:

  • 时间 0 点 1 的位置是 (x1,y1,z1)
  • 点 2 在时间 0 的位置是 (x2,y2,z2)
  • 点 1 在时间 t 的位置是 p1(t) = (x1,y1,z1) + 0.5 * (a1i,a1j,a1k) * t * t
  • 点 2 在时间 t 的位置是 p2(t) = (x2,y2,z2) + 0.5 * (a2i,a2j,a2k) * t * t
  • 在时间 t 的交叉点的条件是 | p1(t) - p2(t) | < r1+r2
  • | ... |表示欧氏距离,即 | (x,y,z) | = sqrt(x*x+y*y+z*z)
    这产生了条件:
    sqrt((x1+0.5*a1i*t*t - x2+0.5*a2i*t*t)^2+
         (y1+0.5*a1j*t*t - y2+0.5*a2j*t*t)^2+
         (z1+0.5*a1k*t*t - z2+0.5*a2k*t*t)^2) < r1 + r2
    

    当有 t如果此条件为真,则球体在该时间点接触/相交。

    我试图将其输入 WolframAlpha 并求解 t ,但没有成功。无论如何,实现纯粹的分析解决方案将是困难的。

    关于collision-detection - 没有初始速度的两个加速球体之间的碰撞检测?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24244432/

    相关文章:

    Java-3d 碰撞检测

    Javascript Spring 物理 : Apply direction vector to spring

    Java迷宫游戏--如何不穿墙

    javascript - 如何在游戏中的障碍物底部添加 2d 碰撞?

    swift - SpriteKit tilemaps 与弯曲或倾斜的地砖碰撞

    math - 投影到 2D 平面以进行重心计算

    c++ - 如何为球形物体和三角形地形提供高效的碰撞检测和响应?

    javascript - 使用boundingSphere进行碰撞检测

    python - 归一化倾斜的地球磁场

    c++ - Bullet vs Newton 游戏动力学 vs ODE 物理引擎