Калькулятор единичного вектора
Результат
Компонента x единичного вектора
- Компонента y единичного вектора
- 0,8000
- Компонента z единичного вектора
- 0,0000
- Модуль вектора
- 5,0000
Калькулятор единичного вектора превращает вектор в вектор длины 1, направленный туда же, и печатает длину, на которую он поделил. Введите компоненты через пробел или запятую — 3 4 для двумерного вектора, 2 3 6 для трёхмерного — и остальное страница сделает сама. Принимаются два или три числа, и только эти два количества: на панели три строки компонент, а одно число — это знаковая величина, а не направление. Вся арифметика — одно деление. Измерьте длину вектора, то есть его модуль, — квадратный корень из суммы квадратов компонент, — и разделите на неё каждую компоненту. Результат по построению имеет длину 1, направлен ровно по той же прямой, что и вход, и называется единичным вектором этого направления. Нужен ответ затем, чтобы отделить направление от величины. Два вектора, различающиеся только длиной, имеют один и тот же единичный вектор, поэтому это естественный способ сравнивать направления, когда модули несопоставимы: скорость ветра с направлением на север или измеренный уклон с эталонным. Так же направление попадает в формулу, которая предполагает нормированный вход, — а таких формул в геометрии и графике большинство. Две подробности стоит знать до того, как пользоваться результатом. Знак ответа повторяет вход: единичный вектор от 3 4 — это 0,6 и 0,8, а от -3 4 — это -0,6 и 0,8. Деление на положительную длину не может развернуть вектор, а вектор, направленный влево или вниз, — совершенно обычный вход. И напечатанная рядом длина — это длина набранного вами вектора, а не ответа: длина ответа равна 1 по определению и ничего бы не сообщила. Именно длина входа делает деление видимым: числа на панели — это она, вынесенная из чисел в поле. Единственный отклоняемый ввод — нулевой вектор, длина которого равна нулю, а значит, делить не на что и, что важнее, нечего сохранять: направления у него нет.
Векторы и их единичные векторы
| Вектор | Модуль вектора | Компонента x единичного вектора | Компонента y единичного вектора | Компонента z единичного вектора |
|---|---|---|---|---|
| 3 4 | 5 | 0.6 | 0.8 | 0 |
| 1 0 | 1 | 1 | 0 | 0 |
| 1 1 | 1.4142 | 0.7071 | 0.7071 | 0 |
| 0 5 | 5 | 0 | 1 | 0 |
| -3 4 | 5 | -0.6 | 0.8 | 0 |
| 2 3 6 | 7 | 0.2857 | 0.4286 | 0.8571 |
| 1 1 1 | 1.7321 | 0.5774 | 0.5774 | 0.5774 |
| 3 4 -5 | 7.0711 | 0.4243 | 0.5657 | -0.7071 |
Восемь векторов и их единичные векторы, и читать таблицу стоит ради второго столбца: в нём стоит делитель, а не та константа 1, которая получается в конце. Первая строка — та, с которой страница открывается, и она выходит точно с обеих сторон: треугольник 3-4-5 даёт длину 5 и две десятичные компоненты, которые точны. Вторая и четвёртая строки — векторы, уже лежащие вдоль оси, поэтому единичный вектор совпадает с направлением самой оси, и у четвёртой из них длина равна 5, а не 1: это самое ясное место, где видно, что в столбце стоит длина входа, а не ответа. Третья строка — случай равных компонент на плоскости: две компоненты по 0,7071 и длина √2. Пятая строка — первая с изменённым знаком у одного из чисел, и знак единичного вектора за ним следует: −0,6 и 0,8. Нормализация не разворачивает вектор, и эта строка тому доказательство. Шестая и седьмая строки трёхмерные: у одной длина целая, 7, и ни одной точной компоненты, у другой длина √3 и три равные компоненты. У восьмой третья компонента отрицательна, и это единственный единичный вектор в таблице с отрицательным z. Строки для нулевого вектора нет намеренно: у него нет направления, и страница его отклоняет. Каждое число пересчитывается при сборке страницы, а пробелы в первом столбце — это разделители, а не часть чисел. И замечание о чтении: числа, посчитанные внутри ячеек, напечатаны с точкой, а текст этой заметки использует запятую — это одно и то же число, записанное двумя способами, а не два разных числа.
Формула
û = u ÷ |u| |u| = √(u₁² + u₂² + … + uₙ²) |û| = 1
- Вектор u
- Вектор, который нормализуют: два или три числа через пробел или запятую, например 3 4. Две компоненты — это вектор на плоскости, три — вектор в пространстве; отдельного поля для числа компонент нет, и о нём говорит длина списка
- |u|
- Длина входного вектора: квадратный корень из суммы квадратов его компонент. Это то число, на которое делится всё остальное, и это четвёртый результат на панели — длина набранного вами вектора, а не единичного, длина которого всегда равна 1
- û
- Единичный вектор: каждая компонента входа, делённая на его длину. Он направлен ровно по той же прямой, что и вход, и имеет длину 1, так что эти двое различаются размером, а не направлением. Шляпка — стандартное обозначение
- Компонента x
- Первая компонента ответа: первая компонента входа, делённая на длину. Её знак — это знак входа: деление на положительную длину не может развернуть вектор, поэтому вектор, направленный влево, даёт единичный вектор, направленный влево
- Компонента y
- Вторая компонента, поделённая так же. Вместе с компонентой x она задаёт направление на плоскости при любой длине исходного вектора
- Компонента z
- Третья компонента, поделённая так же, и 0 для входа из двух чисел. Этот ноль — не заполнитель: двумерный вектор лежит в плоскости, и у того же направления, записанного тремя координатами, третья компонента равна ровно 0
- |û| = 1
- Свойство, ради которого ответ и строился, и причина, по которой его не печатают пятой строкой. Длина единичного вектора равна 1 в любом случае, так что строка панели с вечным значением 1,0000 была бы константой, переодетой в результат
- Четыре знака после запятой
- Ширина, с которой печатаются результаты. Точными они бывают только тогда, когда длина входа выходит целым числом или коротким корнем — 3 4 даёт 5, а трети и корни нацело, как правило, не выходят
Эта страница нужна, когда требуется одно направление, без привязанного к нему размера. Самый наглядный случай — сравнение двух направлений, величины которых измерены в разных масштабах: два вектора, различающиеся только длиной, имеют один и тот же единичный вектор, так что нормализация снимает ту часть, о которой вы и не спрашивали. Нормализация вектора — это и есть деление на его длину, и другого случая, где она нужна постоянно, нет: это подготовка входа для формулы, которая предполагает вектор длины 1, — отражения, проекции и расчёт освещения устроены именно так, и поданный им вектор длины 5 тихо умножает ответ на 5. Напечатанная рядом длина — то, что делает деление проверяемым: 3 4 даёт 0,6 и 0,8, и видно, как пятёрка выходит из обоих чисел. Две вещи стоит помнить. Ответ несёт знаки входа, поэтому вектор, направленный влево или вниз, даёт единичный вектор, направленный влево или вниз: нормализация меняет длину вектора и ничего больше. И длина ответа равна 1 при любом вводе — поэтому страница печатает длину входа; именно в ней есть информация. Двумерный вектор вполне допустим и возвращается с третьей компонентой 0, потому что так это же направление выглядит в трёх координатах. Единственный отклоняемый ввод — нулевой вектор: у него нет направления, которое можно было бы нормализовать.
Разобранные примеры
3 4
- Длина: √(9 + 16) = √25 = 5
- Компонента x: 3 ÷ 5 = 0,6
- Компонента y: 4 ÷ 5 = 0,8
- Компонента z: 0 ÷ 5 = 0, потому что вектор из двух чисел лежит в плоскости
Ввод, с которым страница открывается, и самый чистый случай из возможных: треугольник 3-4-5 делает длину целым числом, поэтому обе компоненты выходят точно. Именно эта строка показывает, зачем нужен четвёртый результат: пятёрка на панели — та длина, на которую были поделены 3 и 4, и чтение 0,6 и 0,8 рядом с ней и есть весь расчёт. Проверьте возведением в квадрат: 0,36 + 0,64 = 1.
2 3 6
- Длина: √(4 + 9 + 36) = √49 = 7
- Компонента x: 2 ÷ 7 = 0,285714
- Компонента y: 3 ÷ 7 = 0,428571
- Компонента z: 6 ÷ 7 = 0,857143
Трёхмерный случай, у которого длина тоже вышла целым числом, 7, а вот ни одна из трёх компонент целой не стала: все три — бесконечные дроби, округлённые до четырёх знаков. Такое сочетание — обычное дело, а не курьёз: целая длина встречается достаточно часто, а целые компоненты единичного вектора — нет. Направление то же, что у 2 3 6, просто из него вынесли длину.
-3 4
- Длина: √(9 + 16) = √25 = 5, такая же, как у 3 4
- Компонента x: −3 ÷ 5 = −0,6
- Компонента y: 4 ÷ 5 = 0,8
- Компонента z: 0 ÷ 5 = 0
Первый пример с изменённым знаком первой компоненты, и единичный вектор знак сохраняет: −0,6 и 0,8. Деление на положительную длину не может развернуть вектор, и именно на этой строке это становится видно. Вектор, направленный влево и вверх, — совершенно обычный вход, и его единичный вектор тоже направлен влево и вверх. Длина в обоих случаях равна 5, потому что смена знака у компоненты её не меняет.
0 5
- Длина: √(0 + 25) = 5
- Компонента x: 0 ÷ 5 = 0
- Компонента y: 5 ÷ 5 = 1
- Компонента z: 0 ÷ 5 = 0
Вектор, уже лежащий вдоль одной из осей, поэтому его единичный вектор — само направление оси: 0, 1, 0. Смотреть здесь стоит на четвёртый результат: там 5, а не 1. У вектора длины 5, направленного строго вверх, единичный вектор имеет длину 1, и панель говорит об этом, печатая вынесенную длину, а не ту константу 1, которая получилась.
1 1 1
- Длина: √(1 + 1 + 1) = √3 = 1,732051
- Каждая компонента: 1 ÷ 1,732051 = 0,577350
Диагональ куба, и все три компоненты выходят равными — так и должно быть, ведь три компоненты входа были равны, а деление их всех на одно и то же число этого равенства нарушить не может. Длина здесь квадратный корень, а не целое число, поэтому точного нет ничего. Проверьте результат так, как велит само определение страницы: 0,5774 в квадрате даёт 0,3334, и три таких числа складываются в 1 с точностью до округления.
Ограничения
Принимаются два или три числа, и только они: одно число — это знаковая величина, а не направление, а четыре и больше не помещаются в три строки компонент на панели. Двумерный вектор здесь ни во что не упаковывается: он лежит в плоскости, и 0 в третьей строке — это то, как то же направление выглядит в трёх координатах, поэтому странице и не нужно спрашивать, какой вектор вы имели в виду. Нулевой вектор отклоняется целиком: его длина равна нулю, так что делить было бы не на что, и, что важнее, у него нет направления, которое ответ мог бы сохранить. Компоненты читаются как обычные числа: запятая с пробелом после неё разделяет компоненты, а запятая между двумя цифрами — десятичный разделитель, так что дробь записывается привычным образом. Дальше начинается ловушка, которой нет в английской версии: компоненты разделяет и пробел, а неразрывный пробел — это ровно тот знак, которым в русском отделяют тысячи. Поэтому число 1 500, скопированное из таблицы или из другого документа, будет молча прочитано как две компоненты, 1 и 500, и никакой ошибки при этом не появится: двумерный вектор — законный ввод, проверка проходит, и ответ получается неверным без единого признака. Запись с запятой, после которой стоит ровно три цифры, при ненулевой целой части отклоняется целиком: она одинаково похожа и на десятичную дробь, и на тысячу пятьсот. Целые числа пишите без разделителя: 1500. Четыре знака после запятой — это ширина печати, а не заявление о точности, и компоненты считаются по неокруглённой длине, поэтому напечатанные числа могут не дать в сумме квадратов ровно 1. Длина, напечатанная на панели, — это длина входа, а не ответа; длина ответа равна 1 по определению, и печатать её значило бы печатать константу. Ничто на этой странице не знает, в чём измерены компоненты: у единичного вектора единицы измерения нет, в этом весь его смысл, а длину наследует та единица, в которой был задан вход. И есть одна арифметическая тонкость, которую стоит назвать: знак каждой компоненты повторяет вход, поэтому вектор, направленный влево, даёт единичный вектор, направленный влево. Если вы ждали положительного ответа, вы ждали другого вектора.
Частые вопросы
- Что такое единичный вектор?
- Вектор длины 1, направленный в заданную сторону. Он получается делением вектора на его собственную длину и несёт направление без величины. Два вектора, различающиеся только длиной, имеют один и тот же единичный вектор — именно поэтому им удобно сравнивать направления, измеренные в разных масштабах.
- Почему в четвёртой строке длина входа, а не 1?
- Потому что длина единичного вектора равна 1 в каждом случае без исключения, и строка с вечным значением 1,0000 была бы константой, а не результатом. Длина входа — это то число, которое вынесли за скобки, поэтому её печать делает деление видимым: введите 3 4, увидите 5 и прочитаете, что 0,6 и 0,8 — это те же числа, делённые на 5.
- Можно ли ввести вектор всего из двух компонент?
- Да, и третья компонента вернётся равной 0. Это не заполнитель: двумерный вектор лежит в плоскости, и 0 — это и есть его третья компонента, когда то же направление записано тремя координатами. На панели три строки компонент, поэтому входы из двух и из трёх чисел делят одну раскладку.
- Почему ответ сохраняет минус?
- Потому что деление на длину не может развернуть вектор. Длина — положительное число, поэтому каждая компонента сохраняет свой знак: единичный вектор от −3 4 — это −0,6 и 0,8. Если вы ждали положительного ответа, то это было бы другое направление, а не то же самое, только нормализованное.
- Почему вектор из одних нулей отклоняется?
- Потому что нормализовать его — значит разделить на его длину, а длина равна нулю. Кроме деления есть и вторая причина: у нулевого вектора вообще нет направления, так что ответу нечего сохранять. Страницы угла и скалярного произведения тоже его отклоняют, а страница векторного произведения принимает — там он действительно даёт нулевой вектор.
- Для чего вообще нормализуют вектор?
- Чтобы отделить направление от величины. Формулы отражения, проекции и расчёта освещения предполагают, что поданный им вектор имеет длину 1, а вектор длины 5 незаметно умножит ответ на 5. Второе применение — сравнение двух направлений, измеренных в разных масштабах: нормализуйте оба, и размеры перестанут мешать.
Источники
- Unit vector — the vector of length 1 pointing in a given direction, which is what this page returns, and the normalisation-by-division that produces it — Wolfram MathWorld (United States)
- Vector — the object being normalised, and the definition of its length as the square root of the sum of the squares of its components — Wolfram MathWorld (United States)
- Norm — the general name for the length of a vector, of which the square-root-of-sum-of-squares is the ordinary Euclidean case used here — Wolfram MathWorld (United States)