Калькулятор угла между векторами
Результат
Угол между векторами
- Косинус угла
- 0,5000
- Угол в радианах
- 1,0472
Калькулятор угла между векторами принимает два вектора и возвращает угол между ними вместе с косинусом, из которого этот угол получен, и тот же угол в радианах. Введите компоненты каждого вектора через пробел или запятую — 1 1 0 для трёхмерного вектора, 0 3 для двумерного — и остальное страница сделает сама. Число компонент у двух векторов должно совпадать, других ограничений нет, а отрицательные компоненты допустимы. Арифметика за ответом короткая. Перемножьте первые компоненты, вторые, третьи и так далее, а произведения сложите — это скалярное произведение. Возьмите модуль каждого вектора: квадратный корень из суммы квадратов его компонент. Разделите скалярное произведение на произведение двух модулей, и получится косинус угла; сам угол — это арккосинус этого числа. Работа через косинус, а не сразу через угол, и есть весь приём: косинус — то, что скалярное произведение даёт естественно, и заодно то число, на которое стоит смотреть. Он идёт от 1 у двух векторов, направленных в одну сторону, через 0 при прямом угле, до −1 у направленных противоположно. Эти три значения люди узнают с ходу, и ни одно из них не требует калькулятора. Перпендикулярные векторы — тот случай, ради которого страницу открывают чаще всего, — это ровно те, у которых косинус равен нулю. Всё остальное попадает куда-то между, и страница печатает результат с четырьмя знаками после запятой сразу в градусах и в радианах: половине формул нужны радианы, а большинство людей читают градусы. Один ввод отклоняется вместо того, чтобы быть посчитанным, — нулевой вектор, модуль которого равен нулю, а значит, направления у него нет вовсе. Делить на его модуль, чтобы получить косинус, означало бы деление на ноль, а ответ 0 градусов утверждал бы, что он направлен так же, как ваш вектор, поэтому страница отказывается считать целиком.
Пары векторов и угол между ними
| Вектор u | Вектор v | Косинус угла | Угол (°) |
|---|---|---|---|
| 1 1 0 | 1 0 1 | 0.5 | 60 |
| 1 0 | 0 1 | 0 | 90 |
| 1 0 0 | 1 0 0 | 1 | 0 |
| -1 0 0 | 1 0 0 | -1 | 180 |
| 1 1 | 1 0 | 0.7071 | 45 |
| 3 4 0 | 4 3 0 | 0.96 | 16.2602 |
| 1 2 2 | 2 2 1 | 0.8889 | 27.266 |
| 2 -3 | 4 5 | -0.3032 | 107.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 0 и 1 0 1
- Скалярное произведение: 1 × 1 + 1 × 0 + 0 × 1 = 1
- Модуль u: √(1 + 1 + 0) = √2 = 1,414214
- Модуль v: √(1 + 0 + 1) = √2 = 1,414214
- Косинус: 1 ÷ (1,414214 × 1,414214) = 1 ÷ 2 = 0,5
- Угол: арккосинус 0,5 равен 60 градусам, то есть 60 × π ÷ 180 = 1,047198 радиана
Ввод, с которым страница открывается, и самая чистая строка из всех: косинус получается ровно одна вторая, а угол — ровно 60 градусов. Обратите внимание, что скалярного произведения, то есть 1, на панели нет нигде: эта страница печатает косинус и угол, а скалярное произведение — шаг между ними. Оба модуля равны корню из двух, поэтому в произведении дают ровно 2, — вот почему косинус и угол выходят точными, а не округлёнными.
3 4 0 и 4 3 0
- Скалярное произведение: 3 × 4 + 4 × 3 + 0 × 0 = 24
- Модуль каждого: √(9 + 16) = 5, потому что третья компонента нулевая
- Косинус: 24 ÷ (5 × 5) = 0,96
- Угол: арккосинус 0,96 равен 16,2602 градуса, то есть 0,2838 радиана
Строка, которая показывает, зачем вообще печатать косинус. Косинус 0,96 звучит как два почти одинаковых вектора, а угол при нём — 16,26 градуса, около шестой части прямого угла. Косинус сжимает весь диапазон от 0 до 90 градусов в числа от 1 до 0, причём сжимает неравномерно, поэтому читать его как долю от чего бы то ни было нельзя. Оба модуля здесь ровно 5, так что треугольник 3-4-5 делает свою обычную работу.
1 0 и 0 1
- Скалярное произведение: 1 × 0 + 0 × 1 = 0
- Модуль каждого: 1
- Косинус: 0 ÷ 1 = 0
- Угол: арккосинус нуля равен ровно 90 градусам, то есть 1,570796 радиана
Ответ, ради которого страницу открывают чаще всего, и притом точный случай: косинус, равный нулю, означает перпендикулярные векторы, и угол возвращается ровно 90, а не округлённым числом. Эти двое — самая простая перпендикулярная пара из возможных: один вдоль оси x, другой вдоль оси y. Число радиан, 1,5708, — это π ÷ 2.
-1 0 0 и 1 0 0
- Скалярное произведение: (−1) × 1 + 0 × 0 + 0 × 0 = −1
- Модуль каждого: 1
- Косинус: −1 ÷ 1 = −1
- Угол: арккосинус −1 равен ровно 180 градусам, то есть 3,141593 радиана
Другой конец диапазона. Косинус −1 — это самый большой угол, какой могут образовать два вектора, 180 градусов, а число радиан — это π. Два вектора, направленные точно противоположно, остаются двумя векторами, и угол между ними не ноль: на эту строку стоит смотреть, когда ответ 180 кажется ошибкой. Это не ошибка: противоположность — такое же отношение, как параллельность.
2 -3 и 4 5
- Скалярное произведение: 2 × 4 + (−3) × 5 = 8 − 15 = −7
- Модуль u: √(4 + 9) = √13 = 3,605551
- Модуль v: √(16 + 25) = √41 = 6,403124
- Косинус: −7 ÷ (3,605551 × 6,403124) = −7 ÷ 23,086793 = −0,303201
- Угол: арккосинус −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 градусов, утверждала бы, что он направлен так же, как ваш вектор, — а это утверждение о направлении, которого не существует.
Источники
- Dot product — the sum of the products of corresponding components, and the identity equating it to the two lengths times the cosine of the angle, which is the equation this page solves backwards — Wolfram MathWorld (United States)
- Vector — the object with a magnitude and a direction whose components this page reads, and whose length is the square root of the sum of the squares of those components — Wolfram MathWorld (United States)
- Perpendicular — the right-angle relation, the one case where the cosine is exactly zero and the angle exactly 90 degrees, and the reason this calculation is worth doing at all — Wolfram MathWorld (United States)