首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >三维弹丸运动:碰撞时间的计算

三维弹丸运动:碰撞时间的计算
EN

Stack Overflow用户
提问于 2020-07-31 05:36:37
回答 1查看 1.2K关注 0票数 0

我正在编写一个函数,它接收一个具有轨迹的物体(包括起始位置、启动速度和加速度,所有这些都表示为Vector3s),如果它碰到另一个物体,返回碰撞点和碰撞时间。我用带时间步长的运动方程来检测可能发生的碰撞,我可以用这种方法得到碰撞点,但一旦有了,我就想找出碰撞发生的确切时间。我想重新安排一个运动方程来求解时间,并插入我已经有的东西,但我想不出如何利用所有三个运动轴来实现这一点,因为我的其他值是矢量3,时间只是标量。我考虑过在一个轴上进行计算,但我不确定这是否会得到一个准确的结果。

仅仅基于一个轴进行计算是准确的,还是有一种方法将所有这三者结合到计算中?我用来解时间的公式是:

代码语言:javascript
复制
t = (v_init +/- Sqrt((v_init)^2 - (accel * disp * 4 * .5)))/accel;

当v_init为初速度时,disp为总位移,accel为加速度。我是从运动方程出发的:

D= v*t + .5*a*t^2

EN

回答 1

Stack Overflow用户

发布于 2020-07-31 07:08:45

让我在一般情况下写字。分方向运动定律是

x(t) = x0 + v_x t+ 0.5 a_x t^2

y(t) = y0 + v_y t+ 0.5 a_y t^2

z(t) = z0 + v_z t+ 0.5 a_z t^2

其中(x0,y0,z0)^t为初始位置,(v_x,v_y,v_z)^t为初始速度矢量,(a_x,a_y,a_z)^t为加速度矢量。后者的第三部分也可以包括重力加速度。

假设碰撞平面是水平的,因此方程z= k。

z(t) =k

用来找出弹丸击中飞机的时间t_c。然后用上述公式计算碰撞坐标x( t_c )和y(t_c),用t_c代替t。

如果平面上有一般方程

A x+++d=0

我建议将参照系放在平面上,将xy平面放在碰撞平面上,然后应用上述程序。

你也可以解非线性系统。

X= x0 + v_x t+ 0.5 a_x t^2

Y= y0 + v_y t+ 0.5 a_y t^2

Z= z0 + v_z t+ 0.5 a_z t^2

A x+++d=0

采用t>0的解决方案(对于x、y和z,我放弃了对t的依赖)。

要在C++中解决这个问题,您可以搜索一个数学库,比如本征,它有一个用于非线性系统的模块

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63186310

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档