我正在编写一个函数,该函数在 3D 空间中接收具有轨迹(包括起始位置、起始速度和加速度,均表示为 Vector3s)的对象,如果它撞到另一个对象,则返回碰撞点和碰撞时间. 我正在使用带有时间步长的运动学方程来检测可能的碰撞,我可以通过这种方式获得碰撞点,但是一旦我有了它,我想找到发生碰撞的确切时间。我想重新排列一个运动学方程解决时间并插入我已经拥有的东西,但我不知道如何使用所有三个运动轴来做到这一点,因为我的其他值是 Vec3 的,而时间只是标量。我考虑过只在一个轴上进行计算,但我不确定这是否会导致准确的结果。
仅基于一个轴计算是否准确,或者有没有办法将所有三个轴都纳入计算?我用来求解时间的公式是:
t = (v_init +/- Sqrt((v_init)^2 - (accel * disp * 4 * .5)))/accel;
其中 v_init 是初始速度,disp 是总位移,accel 是加速度。我基于运动学方程:
d = v*t + .5*a*t^2