Второй формой операции умножения, определенной в векторной алгебре, является векторное произведение. В отличие от скалярного произведения, результатом которого является число, результатом векторного произведения будет вектор. Векторным произведением двух векторов u и v будет другой вектор, p, являющийся взаимно перпендикулярным для векторов u и v. Это означает, что вектор p перпендикулярен вектору u и одновременно вектор p перпендикулярен вектору v.
Вычисляется векторное произведение по следующей формуле:
В компонентной форме вычисление выглядит так:
Рис. 7. Векторное произведение. Вектор p = u × v перпендикулярен как вектору u, так и вектору v
ПРИМЕР
Вычислите j = k × i = (0, 0, 1) × (1, 0, 0) и проверьте, что вектор j перпендикулярен как вектору i, так и вектору k.
Решение
Таким образом, j = (0, 1, 0). Вспомните, в предыдущем разделе «Скалярное произведение векторов» говорилось, что если u × v = 0, значит u ^ v. Поскольку j × k = 0 и j × i = 0, мы знаем что вектор j перпендикулярен как вектору k, так и вектору i.
Для вычисления векторного произведения двух векторов в библиотеке D3DX предназначена следующая функция:
D3DXVECTOR3 *D3DXVec3Cross(
D3DXVECTOR3* pOut, // Результат
CONST D3DXVECTOR3* pV1, // Левый операнд
CONST D3DXVECTOR3* pV2 // Правый операнд
);
Как явствует из рис. 7, вектор –p также взаимно перпендикулярен векторам u и v. Какой из векторов, p или –p будет возвращен в качестве результата векторного произведения определяется порядком операндов. Другими словами, u × v = –(v × u). Это заначит, что операция векторного произведения не является коммутативной. Определить, какой вектор будет возвращен в качестве результата, можно с помощью правила левой руки. (Мы используем правило левой руки, поскольку работаем с левосторонней системой координат. Если бы у нас была правосторонняя система координат, пришлось бы воспользоваться правилом правой руки.) Если расположить пальцы левой руки вдоль первого вектора, а ладонь руки — вдоль второго, отогнутый на 90 градусов большой палец укажет направление результирующего вектора.