2014-05-06 35 views
-1

我已经找到了处理抛射体运动的数学,但是与我的不同之处在于方向矢量和时间。如何用单位方向矢量计算抛射体运动

在我的代码中,我的方向矢量是-1到1,时间是间隔时间。

如何使用这些矢量和时间来计算由于重力导致的新的方向矢量?

请帮

+1

请,描述问题更好。什么是矢量-1到1? – MBo

+1

一个好主意是增加一些关于空间的信息(轴方向,尺寸,平面/球形重力场......)速度也很重要,你想要牛顿/德兰伯特机制或相对论效应...... btw我看到这里有很多关于子弹物理学的问题,试着用[bullet]标签进行搜索 – Spektre

回答

0

我假设三维空间(与重力-Y方向上引导)

  1. 初始化

    // 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; 
    

    在这里你可以添加测试,如

  2. 更新:碰到了什么东西,打地面, ...也摩擦是一个好主意......

    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]