Перейти к основному содержанию
CalcMax

Калькулятор угла между векторами

Результат

60,0000 °

Угол между векторами

Косинус угла
0,5000
Угол в радианах
1,0472

Калькулятор угла между векторами принимает два вектора и возвращает угол между ними вместе с косинусом, из которого этот угол получен, и тот же угол в радианах. Введите компоненты каждого вектора через пробел или запятую — 1 1 0 для трёхмерного вектора, 0 3 для двумерного — и остальное страница сделает сама. Число компонент у двух векторов должно совпадать, других ограничений нет, а отрицательные компоненты допустимы. Арифметика за ответом короткая. Перемножьте первые компоненты, вторые, третьи и так далее, а произведения сложите — это скалярное произведение. Возьмите модуль каждого вектора: квадратный корень из суммы квадратов его компонент. Разделите скалярное произведение на произведение двух модулей, и получится косинус угла; сам угол — это арккосинус этого числа. Работа через косинус, а не сразу через угол, и есть весь приём: косинус — то, что скалярное произведение даёт естественно, и заодно то число, на которое стоит смотреть. Он идёт от 1 у двух векторов, направленных в одну сторону, через 0 при прямом угле, до −1 у направленных противоположно. Эти три значения люди узнают с ходу, и ни одно из них не требует калькулятора. Перпендикулярные векторы — тот случай, ради которого страницу открывают чаще всего, — это ровно те, у которых косинус равен нулю. Всё остальное попадает куда-то между, и страница печатает результат с четырьмя знаками после запятой сразу в градусах и в радианах: половине формул нужны радианы, а большинство людей читают градусы. Один ввод отклоняется вместо того, чтобы быть посчитанным, — нулевой вектор, модуль которого равен нулю, а значит, направления у него нет вовсе. Делить на его модуль, чтобы получить косинус, означало бы деление на ноль, а ответ 0 градусов утверждал бы, что он направлен так же, как ваш вектор, поэтому страница отказывается считать целиком.

Пары векторов и угол между ними

Вектор uВектор vКосинус углаУгол (°)
1 1 01 0 10.560
1 00 1090
1 0 01 0 010
-1 0 01 0 0-1180
1 11 00.707145
3 4 04 3 00.9616.2602
1 2 22 2 10.888927.266
2 -34 5-0.3032107.6501

Восемь пар, и первая строка — та, с которой страница открывается. Столбец косинуса и есть смысл таблицы: один только столбец углов скрывает закономерность, а рядом с косинусом три особых значения сразу бросаются в глаза. В первой строке косинус равен ровно 0,5 и даёт ровно 60 градусов, а в шестой косинус 0,96 даёт 16,26 градуса — между этими двумя строками и умещается всё предупреждение этой страницы: косинус сжимает диапазон от 0 до 90 градусов в отрезок от 1 до 0 и сжимает его неравномерно. Вторая строка — самый простой прямой угол, третья — вектор сам с собой, дающая два конца диапазона косинуса, 0 и 1, а четвёртая добавляет третий конец, −1, ставя вектор рядом с его собственным отрицанием. Эти три строки вместе и составляют всю шкалу. Пятая строка — пара под 45 градусов, половина прямого угла, которая постоянно встречается на практике, а седьмая — неаккуратная трёхмерная: оба модуля равны ровно 3, но скалярное произведение равно 8, поэтому косинус равен 8 ÷ 9 и повторяется бесконечно. Восьмая строка — тупоугольный случай с компонентами разных знаков: косинус −0,3032 и угол 107,6501, и они согласны друг с другом, как и обязаны, ведь отрицательный косинус и угол меньше 90 градусов не могут быть верны одновременно. Числа радиан здесь намеренно нет отдельным столбцом: это тот же угол в другой записи, и пятый столбец не сказал бы ничего нового. Каждое число в таблице пересчитывается при сборке страницы, а пробелы в первых двух столбцах — это разделители, а не часть чисел. И замечание о чтении: числа, посчитанные внутри ячеек, напечатаны с точкой, а текст этой заметки использует запятую — это одно и то же число, записанное двумя способами, а не два разных числа.

Формула

cos θ = (u · v) ÷ (|u| × |v|) θ = arccos(cos θ) u · v = u₁v₁ + u₂v₂ + … + uₙvₙ

Вектор u
Первый вектор, записанный своими компонентами через пробел или запятую: 1 1 0 для трёх измерений, 0 3 для двух или сколько угодно, если их больше. Фиксированного числа полей нет, потому что страница принимает любую размерность, но компонент у двух векторов должно быть поровну
Вектор v
Второй вектор, записанный так же и с тем же числом компонент, что и первый. Перестановка двух векторов ничего не меняет: угол между ними одинаков в любую сторону
u · v
Скалярное произведение, которое страница использует, но не печатает: перемножьте первые компоненты, вторые и так далее, а произведения сложите. Здесь это сырьё для угла, а не самостоятельный ответ
|u| и |v|
Модуль каждого вектора в тех же единицах, в которых измерены компоненты: квадратный корень из суммы квадратов его компонент. Это два числа, на которые делится скалярное произведение, и каждое из них — дело самого вектора: большой модуль у одного ничего не говорит о другом
cos θ
Косинус угла между двумя векторами: скалярное произведение, делённое на произведение двух модулей. Он идёт от 1 у векторов, направленных в одну сторону, через 0 при прямом угле, до −1 у направленных противоположно, и за эти пределы не выходит никогда. Именно из него вычисляется угол, поэтому страница его и печатает
θ
Угол между векторами в градусах: от 0, когда они направлены одинаково, через 90, когда они перпендикулярны, до 180, когда они направлены противоположно. Это арккосинус числа строкой выше, поэтому он наследует его пределы и никогда не выходит за них
Радианы
Тот же угол, записанный иначе: 180 градусов — это π радиан, а 90 — половина этого. Радианы нужны формулам в математическом анализе и почти всем языкам программирования, поэтому страница даёт оба значения, а не заставляет умножать на π и делить на 180. Результат в радианах — обычное число без единицы измерения
Градусы
Единица измерения главного результата и единственная единица на всей странице. Косинус и число радиан — просто числа
Четыре знака после запятой
Ширина, с которой печатается каждый результат. Косинус точен только в особых случаях — 0, 0,5, 1 и −1, — а угол точен только тогда, когда косинус равен одному из них, поэтому почти в каждой строке этой страницы числа округлены

Это страница для случая, когда нужен сам угол, а не просто соотношение двух направлений. Три угла стоит узнавать без всякой арифметики: косинус 1 — это 0 градусов, и векторы направлены одинаково; косинус 0 — это 90 градусов, и они перпендикулярны; косинус −1 — это 180 градусов, и они направлены противоположно. Всё остальное — настоящий угол, и страница даёт его с четырьмя знаками. Чаще всего этим пользуются, чтобы сверить направление с эталонным: насколько ветер ушёл от направления на север, насколько повернулась камера, насколько измеренное направление отклонилось от того, каким оно должно было быть. Задачи геометрии с двумя известными направлениями — тот же расчёт, как и угол между двумя прямыми, стоит записать каждую из них вектором. Полезная проверка любого ответа состоит в том, что косинус и угол обязаны говорить одно и то же: косинус больше нуля всегда идёт с углом меньше 90 градусов, отрицательный косинус — с углом больше, а косинус, равный нулю, — ровно с 90. Если эти двое расходятся, значит компоненты не те, какими вы их считали. Результат в радианах нужен для случая, когда угол вот-вот попадёт в формулу или в строку кода: там почти всегда ждут радианы, а ручной перевод — источник ошибок со знаком и промахов ровно на множитель 180.

Разобранные примеры

  1. 1 1 0 и 1 0 1

    1. Скалярное произведение: 1 × 1 + 1 × 0 + 0 × 1 = 1
    2. Модуль u: √(1 + 1 + 0) = √2 = 1,414214
    3. Модуль v: √(1 + 0 + 1) = √2 = 1,414214
    4. Косинус: 1 ÷ (1,414214 × 1,414214) = 1 ÷ 2 = 0,5
    5. Угол: арккосинус 0,5 равен 60 градусам, то есть 60 × π ÷ 180 = 1,047198 радиана

    Ввод, с которым страница открывается, и самая чистая строка из всех: косинус получается ровно одна вторая, а угол — ровно 60 градусов. Обратите внимание, что скалярного произведения, то есть 1, на панели нет нигде: эта страница печатает косинус и угол, а скалярное произведение — шаг между ними. Оба модуля равны корню из двух, поэтому в произведении дают ровно 2, — вот почему косинус и угол выходят точными, а не округлёнными.

  2. 3 4 0 и 4 3 0

    1. Скалярное произведение: 3 × 4 + 4 × 3 + 0 × 0 = 24
    2. Модуль каждого: √(9 + 16) = 5, потому что третья компонента нулевая
    3. Косинус: 24 ÷ (5 × 5) = 0,96
    4. Угол: арккосинус 0,96 равен 16,2602 градуса, то есть 0,2838 радиана

    Строка, которая показывает, зачем вообще печатать косинус. Косинус 0,96 звучит как два почти одинаковых вектора, а угол при нём — 16,26 градуса, около шестой части прямого угла. Косинус сжимает весь диапазон от 0 до 90 градусов в числа от 1 до 0, причём сжимает неравномерно, поэтому читать его как долю от чего бы то ни было нельзя. Оба модуля здесь ровно 5, так что треугольник 3-4-5 делает свою обычную работу.

  3. 1 0 и 0 1

    1. Скалярное произведение: 1 × 0 + 0 × 1 = 0
    2. Модуль каждого: 1
    3. Косинус: 0 ÷ 1 = 0
    4. Угол: арккосинус нуля равен ровно 90 градусам, то есть 1,570796 радиана

    Ответ, ради которого страницу открывают чаще всего, и притом точный случай: косинус, равный нулю, означает перпендикулярные векторы, и угол возвращается ровно 90, а не округлённым числом. Эти двое — самая простая перпендикулярная пара из возможных: один вдоль оси x, другой вдоль оси y. Число радиан, 1,5708, — это π ÷ 2.

  4. -1 0 0 и 1 0 0

    1. Скалярное произведение: (−1) × 1 + 0 × 0 + 0 × 0 = −1
    2. Модуль каждого: 1
    3. Косинус: −1 ÷ 1 = −1
    4. Угол: арккосинус −1 равен ровно 180 градусам, то есть 3,141593 радиана

    Другой конец диапазона. Косинус −1 — это самый большой угол, какой могут образовать два вектора, 180 градусов, а число радиан — это π. Два вектора, направленные точно противоположно, остаются двумя векторами, и угол между ними не ноль: на эту строку стоит смотреть, когда ответ 180 кажется ошибкой. Это не ошибка: противоположность — такое же отношение, как параллельность.

  5. 2 -3 и 4 5

    1. Скалярное произведение: 2 × 4 + (−3) × 5 = 8 − 15 = −7
    2. Модуль u: √(4 + 9) = √13 = 3,605551
    3. Модуль v: √(16 + 25) = √41 = 6,403124
    4. Косинус: −7 ÷ (3,605551 × 6,403124) = −7 ÷ 23,086793 = −0,303201
    5. Угол: арккосинус −0,303201 равен 107,6501 градуса, то есть 1,8788 радиана

    Тупоугольный ответ — случай, который застаёт людей врасплох: угол между двумя векторами может быть больше 90 градусов, и он такой всякий раз, когда скалярное произведение отрицательно. Одна компонента u здесь отрицательна, а так и записывается вектор, направленный влево или вниз. Косинус −0,3032 невелик, но его знак и есть всё сообщение: он говорит, что векторы расходятся, и угол 107,6501 градуса с ним согласен.

Ограничения

Число компонент у двух векторов должно совпадать, и несовпадающая пара отклоняется, а не дополняется нулями. Нулевой вектор отклоняется целиком: у вектора, все компоненты которого нули, нет направления, поэтому угол между ним и чем угодно не определён, и страница отказывается считать целиком, вместо того чтобы показать угол 0, который читался бы как утверждение о сонаправленности. Компоненты читаются как обычные числа: запятая с пробелом после неё разделяет компоненты, а запятая между двумя цифрами — десятичный разделитель, так что полторы записываются привычным образом. Дальше начинается ловушка, которой нет в английской версии: компоненты разделяет и пробел, а неразрывный пробел — это ровно тот знак, которым в русском отделяют тысячи. Поэтому число 1 500, скопированное из таблицы или из другого документа, будет молча прочитано как две компоненты, 1 и 500, и никакой ошибки при этом не появится. На этой странице компонент ровно две, так что такое число как раз даёт нужную длину, проверка проходит, и ответ получается неверным без единого признака. Запись с запятой, после которой стоит ровно три цифры, при ненулевой целой части отклоняется целиком: она одинаково похожа и на десятичную дробь, и на тысячу пятьсот, и поле отказывается угадывать. Целые числа пишите без разделителя: 1500. Каждый вектор принимает до 200 компонент — намного больше любого рукописного случая, но меньше размеров, с которыми работал бы конвейер данных. Скалярного произведения среди результатов нет намеренно: это шаг, из которого вычислен угол, и страница, печатающая его как ответ, — другая. Четыре знака после запятой — это ширина печати, а не заявление о точности, и оба результата считаются по неокруглённым модулям, поэтому перемножение напечатанных чисел обратно может не воспроизвести напечатанный угол точно. Ничто на странице не знает, в чём измерены компоненты: входные данные — просто числа, и косинус с числом радиан тоже, а градусы — единственная единица измерения на всей странице.

Частые вопросы

Как ввести компоненты?
Разделяйте их пробелами или запятой с пробелом: подойдут и 1 1 0, и 1, 1, 0. Запятая между двумя цифрами читается как десятичный разделитель. Есть и ловушка: компоненты разделяет и пробел, а неразрывный пробел — это знак, которым в русском отделяют тысячи, поэтому 1 500 превратится в две компоненты, 1 и 500, и ответ посчитается неправильно. Целые числа пишите без разделителя: 1500. Число компонент у двух векторов должно совпадать, а ограничений на само число нет, лишь бы оно совпадало: два измерения и три измерения — одна и та же страница.
Зачем нужен косинус угла?
Из него вычислен угол, и в трёх случаях, которые важны, читать его проще, чем угол. Косинус 1 означает, что векторы направлены одинаково, 0 — что они перпендикулярны, −1 — что направлены противоположно. Всё, что между, — настоящий угол, и страница даёт его и в градусах, и в радианах.
Как понять, что два вектора перпендикулярны?
У них нулевой косинус угла, и страница покажет ровно 90 градусов. Для такой проверки не нужна тригонометрия, которой пользуется результат в градусах: она верна ровно тогда, когда скалярное произведение равно нулю, а для этого нужны только умножения. Косинус и печатается здесь для того, чтобы случай прямого угла был виден без всяких вычислений.
Почему угол никогда не больше 180 градусов?
Потому что косинус ограничен отрезком от −1 до 1, а арккосинус возвращает значения только от 0 до 180 градусов. Угол 180 градусов означает, что два вектора направлены точно противоположно, а угла в 200 градусов между двумя направлениями не бывает: 200 и 160 описывают одну и ту же пару стрелок.
Почему результатов два — градусы и радианы?
Потому что аудитории разные. Люди читают градусы; формулы и языки программирования почти всегда ждут радианы, и 180 градусов — это π радиан. Оба числа на панели избавляют от умножения на π и деления на 180, откуда и берутся промахи ровно на этот множитель. Число радиан — обычное число без единицы измерения.
Почему вектор из одних нулей отклоняется?
Потому что у нулевого вектора нет направления, поэтому угол между ним и чем угодно не определён. Его модуль равен нулю, а косинус — это скалярное произведение, делённое на произведение двух модулей, так что вычисление означало бы деление на ноль. Страница, вернувшая 0 градусов, утверждала бы, что он направлен так же, как ваш вектор, — а это утверждение о направлении, которого не существует.

Источники

Похожие калькуляторы