0

Как сделать компонентное умножение двух 3D-векторов? похоже, MS не предоставляла такие функции в DirectXMath.h, что там делает Microsoft? в старых SDK (DX 10/9), я могу сделать произведение двух векторов непосредственно как:Компонентное умножение для 3D-векторов в программном обеспечении для приложений Windows

v3 = v1 * v2;

или умножать вектор на скаляр, как:

v2 = v1 * 1.0f;

, но теперь у оператора XMVECTOR нет оператора *, поэтому я не могу этого сделать. поэтому мне нужно сделать продукт вручную как

v3 = (v1.x * v2.x + v1.y * v2.y + v1.z * v2.z);

Хотя это не так сложно, я думаю, что DirectXMath должен обеспечить такую ​​базовую функцию.

ответ

2

Точечный продукт может быть достигнут с помощью метода XMVector*Dot. MSDN link for dot3product.

И хорошая страница существует на сайте MSDN со списком методов: MSDN

Кроме того, я думаю, что Microsoft не делает оператор * переопределение, потому что не ясно, какой продукт этот оператор должен использовать - точка или декартово произведение.

+0

Большое спасибо, я уверен, что вижу XMVector3Dot, но, на мой взгляд, результат точечного произведения является скалярным (как то, что делает D3DXVec3Dot), но теперь MS делает результат как вектор. Я не понял этого изменения, поэтому я пропустил эту функцию. – zdd