-1
我已经找到了处理抛射体运动的数学,但是与我的不同之处在于方向矢量和时间。如何用单位方向矢量计算抛射体运动
在我的代码中,我的方向矢量是-1到1,时间是间隔时间。
如何使用这些矢量和时间来计算由于重力导致的新的方向矢量?
请帮
我已经找到了处理抛射体运动的数学,但是与我的不同之处在于方向矢量和时间。如何用单位方向矢量计算抛射体运动
在我的代码中,我的方向矢量是-1到1,时间是间隔时间。
如何使用这些矢量和时间来计算由于重力导致的新的方向矢量?
请帮
我假设三维空间(与重力-Y方向上引导)
初始化
// player/gun parameters
const float v0 = ???; // [m/s] gun projectile escape velocity
float direction[3] = { ?,?,? }; // [-] your unit direction vector
float position[3] = { ?,?,? }; // [m] your player position + gun barrel offset
// projectile parameters
float a[3]={0,-9.81,0}; // [m/s^2] actual acceleration (just gravity in down direction)
float v[3]=direction*v0; // [m/s] actual velocity
float p[3]=position; // [m] actual position
,如果你想成为精确添加到v也你的球员速度矢量。如果你是弹丸的火箭,然后添加到它的方向也是其信任的加速......在一些计时器
const float dt = 0.001; // [s] update 'timer' period
v += a*dt;
p += v*dt;
在这里你可以添加测试,如
更新:碰到了什么东西,打地面, ...也摩擦是一个好主意......
F=c0*|v|^2; for air
F=c1*|v|^3; for liquid
方向(-v/|v|)
所以加开始更新如此:
a={0,-9.81,0}
a-=v*c0*|v|/m; // or a-=v*c1*|v|^2/m;
c0,c1
哪里是摩擦常数(尝试~0.01
)和m
是弹丸的质量[kg]
请,描述问题更好。什么是矢量-1到1? – MBo
一个好主意是增加一些关于空间的信息(轴方向,尺寸,平面/球形重力场......)速度也很重要,你想要牛顿/德兰伯特机制或相对论效应...... btw我看到这里有很多关于子弹物理学的问题,试着用[bullet]标签进行搜索 – Spektre