Obtendo o vetor de velocidade a partir de vetores de posição

Eu olhei para um monte de perguntas semelhantes, e não consigo encontrar uma que responda particularmente a minha pergunta. Eu estou codificando um jogo 3d simples, e estou tentando permitir que o jogador pegue e mova entidades pelo meu mapa. Eu essencialmente quero pegar um vetor de velocidade que "empurre" o objeto físico a uma distância dos olhos do jogador, onde quer que eles estejam olhando. Aquium exemplo Isso é feito em outro jogo (o jogador está segurando uma cadeira de entidade na frente de seus olhos).

Para fazer isso, eu descubro os ângulos do olho do jogador, então obtenho o vetor de avanço dos ângulos, então calculo a velocidade do objeto. Aqui está o meutrabalhando 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);
}

Tudo isso é ótimo, mas quero converter minha matemática para poder aplicar um impulso. Em vez de definir uma velocidade completamente nova para o objeto, quero "adicionar" alguma velocidade à sua velocidade existente. Então, supondo que eu tenha sua velocidade atual, que tipo de matemática eu preciso para "adicionar" velocidade? Esta é essencialmente uma questão de física do jogo. Obrigado!

questionAnswers(3)

yourAnswerToTheQuestion