最初,两个半径为 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
最佳答案
使用给定的变量名:
(x1,y1,z1)
(x2,y2,z2)
p1(t) = (x1,y1,z1) + 0.5 * (a1i,a1j,a1k) * t * t
p2(t) = (x2,y2,z2) + 0.5 * (a2i,a2j,a2k) * 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/