Obteniendo el vector de velocidad de los vectores de posición

Miré un montón de preguntas similares, y parece que no puedo encontrar una que responda particularmente a mi pregunta. Estoy programando un juego simple en 3D, y estoy tratando de permitir que el jugador recoja y mueva entidades alrededor de mi mapa. Básicamente, quiero obtener un vector de velocidad que "empuje" al objeto físico a una distancia de los ojos del jugador, dondequiera que miren. Aquí estáun ejemplo esto se hace en otro juego (el jugador tiene una entidad de silla frente a sus ojos).

Para hacer esto, descubro los ángulos de los ojos del jugador, luego obtengo el vector directo de los ángulos y luego calculo la velocidad del objeto. Aquí está mitrabajando código:

void Player::PickupOtherEntity( Entity& HoldingEntity )
{
    QAngle eyeAngles = this->GetPlayerEyeAngles();
    Vector3 vecPos = this->GetEyePosition();
    Vector3 vecDir = eyeAngles.Forward();

    Vector3 holdingEntPos = HoldingEntity.GetLocation();

    // update object by holding it a distance away
    vecPos.x += vecDir.x * DISTANCE_TO_HOLD;
    vecPos.y += vecDir.y * DISTANCE_TO_HOLD;
    vecPos.z += vecDir.z * DISTANCE_TO_HOLD;

    Vector3 vecVel = vecPos - holdingEntPos;
    vecVel = vecVel.Scale(OBJECT_SPEED_TO_MOVE);

    // set the entity's velocity as to "push" it to be in front of the player's eyes
    // at a distance of DISTANCE_TO_HOLD away
    HoldingEntity.SetVelocity(vecVel);
}

Todo eso es genial, pero quiero convertir mi matemática para poder aplicar un impulso. En lugar de establecer una velocidad completamente nueva para el objeto, quiero "agregar" algo de velocidad a su velocidad existente. Entonces, suponiendo que tenga su velocidad actual, ¿qué tipo de matemáticas necesito para "agregar" velocidad? Esto es esencialmente una cuestión de física del juego. ¡Gracias!

Respuestas a la pregunta(3)

Su respuesta a la pregunta