Математика·Геометрия

Как найти угол между векторами: формулы и методы

Разбираем, как вычислить угол между двумя векторами через скалярное и векторное произведение. Пошаговые инструкции, формулы в координатах и примеры.

x
y
z
x
y
z

Для решения большинства задач по геометрии, физике и программированию (особенно в разработке игр и 3D-графике) требуется определить угол между двумя векторами. Поскольку векторы можно свободно переносить в пространстве, для вычисления угла их принято сводить в одну точку (начало координат).

Существует два основных способа нахождения угла: через скалярное произведение (самый популярный) и через векторное произведение.

Способ 1: Через скалярное произведение (косинус)

Это универсальный метод, который работает в любом количестве измерений (2D, 3D и выше). В его основе лежит связь между длиной векторов и косинусом угла между ними.

Основная формула

Скалярное произведение двух векторов a\vec{a} и b\vec{b} определяется как: ab=abcosα\vec{a} \cdot \vec{b} = |\vec{a}| \cdot |\vec{b}| \cdot \cos \alpha

Отсюда выражаем косинус искомого угла: cosα=abab\cos \alpha = \frac{\vec{a} \cdot \vec{b}}{|\vec{a}| \cdot |\vec{b}|}

Расчёт в координатах

Если векторы заданы координатами a=(x1,y1,z1)\vec{a} = (x_1, y_1, z_1) и b=(x2,y2,z2)\vec{b} = (x_2, y_2, z_2), расчет делится на три простых шага:

  1. Находим скалярное произведение (сумма произведений соответствующих координат): ab=x1x2+y1y2+z1z2\vec{a} \cdot \vec{b} = x_1 x_2 + y_1 y_2 + z_1 z_2

  2. Вычисляем длины (модули) векторов по теореме Пифагора: a=x12+y12+z12|\vec{a}| = \sqrt{x_1^2 + y_1^2 + z_1^2} b=x22+y22+z22|\vec{b}| = \sqrt{x_2^2 + y_2^2 + z_2^2}

  3. Вычисляем косинус и ищем угол: Подставляем значения в формулу cosα\cos \alpha. Чтобы получить сам угол α\alpha, используем функцию арккосинуса (arccos\arccos): α=arccos(x1x2+y1y2+z1z2x12+y12+z12x22+y22+z22)\alpha = \arccos\left(\frac{x_1 x_2 + y_1 y_2 + z_1 z_2}{\sqrt{x_1^2 + y_1^2 + z_1^2} \cdot \sqrt{x_2^2 + y_2^2 + z_2^2}}\right)

Пример: Даны векторы a=(3,0)\vec{a} = (3, 0) и b=(3,3)\vec{b} = (3, 3).

  1. ab=33+03=9\vec{a} \cdot \vec{b} = 3 \cdot 3 + 0 \cdot 3 = 9.
  2. a=32+02=3|\vec{a}| = \sqrt{3^2 + 0^2} = 3; b=32+32=184.24|\vec{b}| = \sqrt{3^2 + 3^2} = \sqrt{18} \approx 4.24.
  3. cosα=9/(34.24)0.707\cos \alpha = 9 / (3 \cdot 4.24) \approx 0.707.
  4. α=arccos(0.707)=45\alpha = \arccos(0.707) = 45^\circ.

Способ 2: Через векторное произведение (синус)

Этот метод применяется только в трехмерном пространстве (3D). Он позволяет найти синус угла, что полезно, если угол очень мал или если вам нужно найти площадь параллелограмма, образованного векторами.

Формула

Длина вектора, полученного в результате векторного произведения a×b\vec{a} \times \vec{b}, равна: a×b=absinα|\vec{a} \times \vec{b}| = |\vec{a}| \cdot |\vec{b}| \cdot \sin \alpha

Отсюда синус угла: sinα=a×bab\sin \alpha = \frac{|\vec{a} \times \vec{b}|}{|\vec{a}| \cdot |\vec{b}|}

Особенность: Поскольку синус положителен для всех углов от 0° до 180°, этот метод не позволяет определить, является ли угол тупым (больше 90°). Для этого всё равно придется проверить знак скалярного произведения.

Как быстро определить тип угла по скалярному произведению

Если вам не нужно точное значение в градусах, а достаточно знать характер угла, посмотрите на знак результата скалярного произведения ab\vec{a} \cdot \vec{b}:

Значение произведенияТип углаКосинус
Положительное (>0> 0)Острый (0<α<900^\circ < \alpha < 90^\circ)cosα>0\cos \alpha > 0
Отрицательное (<0< 0)Тупой (90<α<18090^\circ < \alpha < 180^\circ)cosα<0\cos \alpha < 0
Равно нулю (=0= 0)Прямой (α=90\alpha = 90^\circ)cosα=0\cos \alpha = 0

Резюме: что выбрать?

  • Если нужно просто найти угол \to используйте скалярное произведение. Это самый короткий путь с минимальным количеством вычислений.
  • Если работаете с 3D-графикой и нужна нормаль к плоскости \to используйте векторное произведение.
  • Если векторы сонаправлены \to угол равен 00^\circ.
  • Если векторы противоположно направлены \to угол равен 180180^\circ.

Часто задаваемые вопросы

Что делать, если скалярное произведение равно нулю?
Если скалярное произведение двух ненулевых векторов равно нулю, это означает, что косинус угла между ними равен 0. Следовательно, векторы перпендикулярны, а угол между ними составляет ровно 90°.
Можно ли найти угол между векторами в 2D и 3D пространствах по одной формуле?
Да, формула через скалярное произведение универсальна. Различается только количество координат при расчёте: для 2D используются две координаты (x, y), для 3D — три (x, y, z), но общий принцип вычисления косинуса остаётся прежним.
Какой угол считается углом между векторами, если они направлены в разные стороны?
Угол между векторами всегда измеряется в диапазоне от 0° до 180°. Если векторы противоположно направлены (коллинеарны), угол между ними равен 180°, а их скалярное произведение будет отрицательным.
Когда лучше использовать векторное произведение вместо скалярного?
Векторное произведение полезно в трёхмерном пространстве, если вам нужно найти синус угла или определить вектор-нормаль, перпендикулярный плоскости двух исходных векторов. Для простого поиска самого угла скалярный метод гораздо быстрее и проще.