Рассчитать вектор между 2 D3DXVECTOR3 независимо от расстояния

Итак, вот мой сценарий: у меня есть игра на космическом корабле, каждый космический корабль может нацеливаться на другой корабль и запускать торпеды, и для торпеды нужен вектор направления, чтобы двигаться дальше, вектор должен быть независимым от расстояния.

Я ищу, чтобы создать метод, который возвращает D3DXVECTOR3 построено так:

D3DXVECTOR3 TargetVector(D3DXVECTOR3 *target, D3DXVECTOR3 *firer)

У кого-нибудь есть опыт в этом вопросе? Было бы замечательно, если бы кто-нибудь даже указал мне на какие-нибудь приличные, простые для понимания учебники по математике D3D, поскольку все, что я нашел до сих пор, основано на рендеринге изображений, а не на математических уравнениях.

Спасибо!

-Райан

0

Решение

Если вы хотите вектор направления, который начинается с firer и указывает на target просто вычесть firer от target т.е.

direction = target - firer;

Есть D3DXVec3Subtract для этого в D3DX lib.

Если вы хотите иметь нормальную единицу, то есть вектор, имеющий длину 1, то нормализуйте его с помощью D3DXVec3Normalize.

Итак, вы будете иметь:

D3DXVECTOR3 TargetVector(D3DXVECTOR3 *target, D3DXVECTOR3 *firer)
{
D3DXVECTOR3 direction;
D3DXVec3Subtract(&direction, target, firer);

D3DXVec3Normalize(&direction, &direction);
return direction;
}
2

Другие решения

Других решений пока нет …