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

Калькулятор единичного вектора

Результат

0,6000

Компонента 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 450.60.80
1 01100
1 11.41420.70710.70710
0 55010
-3 45-0.60.80
2 3 670.28570.42860.8571
1 1 11.73210.57740.57740.5774
3 4 -57.07110.42430.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, потому что так это же направление выглядит в трёх координатах. Единственный отклоняемый ввод — нулевой вектор: у него нет направления, которое можно было бы нормализовать.

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

  1. 3 4

    1. Длина: √(9 + 16) = √25 = 5
    2. Компонента x: 3 ÷ 5 = 0,6
    3. Компонента y: 4 ÷ 5 = 0,8
    4. Компонента z: 0 ÷ 5 = 0, потому что вектор из двух чисел лежит в плоскости

    Ввод, с которым страница открывается, и самый чистый случай из возможных: треугольник 3-4-5 делает длину целым числом, поэтому обе компоненты выходят точно. Именно эта строка показывает, зачем нужен четвёртый результат: пятёрка на панели — та длина, на которую были поделены 3 и 4, и чтение 0,6 и 0,8 рядом с ней и есть весь расчёт. Проверьте возведением в квадрат: 0,36 + 0,64 = 1.

  2. 2 3 6

    1. Длина: √(4 + 9 + 36) = √49 = 7
    2. Компонента x: 2 ÷ 7 = 0,285714
    3. Компонента y: 3 ÷ 7 = 0,428571
    4. Компонента z: 6 ÷ 7 = 0,857143

    Трёхмерный случай, у которого длина тоже вышла целым числом, 7, а вот ни одна из трёх компонент целой не стала: все три — бесконечные дроби, округлённые до четырёх знаков. Такое сочетание — обычное дело, а не курьёз: целая длина встречается достаточно часто, а целые компоненты единичного вектора — нет. Направление то же, что у 2 3 6, просто из него вынесли длину.

  3. -3 4

    1. Длина: √(9 + 16) = √25 = 5, такая же, как у 3 4
    2. Компонента x: −3 ÷ 5 = −0,6
    3. Компонента y: 4 ÷ 5 = 0,8
    4. Компонента z: 0 ÷ 5 = 0

    Первый пример с изменённым знаком первой компоненты, и единичный вектор знак сохраняет: −0,6 и 0,8. Деление на положительную длину не может развернуть вектор, и именно на этой строке это становится видно. Вектор, направленный влево и вверх, — совершенно обычный вход, и его единичный вектор тоже направлен влево и вверх. Длина в обоих случаях равна 5, потому что смена знака у компоненты её не меняет.

  4. 0 5

    1. Длина: √(0 + 25) = 5
    2. Компонента x: 0 ÷ 5 = 0
    3. Компонента y: 5 ÷ 5 = 1
    4. Компонента z: 0 ÷ 5 = 0

    Вектор, уже лежащий вдоль одной из осей, поэтому его единичный вектор — само направление оси: 0, 1, 0. Смотреть здесь стоит на четвёртый результат: там 5, а не 1. У вектора длины 5, направленного строго вверх, единичный вектор имеет длину 1, и панель говорит об этом, печатая вынесенную длину, а не ту константу 1, которая получилась.

  5. 1 1 1

    1. Длина: √(1 + 1 + 1) = √3 = 1,732051
    2. Каждая компонента: 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. Второе применение — сравнение двух направлений, измеренных в разных масштабах: нормализуйте оба, и размеры перестанут мешать.

Источники

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