Сколько идти до школы?
Вы живёте в точке A = (0, 0), школа — в точке B = (3, 4). Расстояния в условных единицах.
Задача: чему равно расстояние от дома до школы — то есть длина вектора пути (3, 4)?
Подсказка: вспомните теорему Пифагора. Вектор (3, 4) можно изобразить как гипотенузу прямоугольного треугольника с катетами 3 и 4.
Смотрите: у вас есть вектор (3, 4). Вы знаете куда он смотрит. Но сколько он длиной — три? четыре? семь?
Ответ — ровно пять. И это не случайность и не удобный пример. Это древний математический факт, которому четыре тысячи лет. Египтяне знали тройку 3-4-5 задолго до того, как её доказал Пифагор. Они натягивали верёвку с 12 узлами на равных расстояниях, складывали из неё треугольник со сторонами 3-4-5 — и получали идеальный прямой угол. Этим способом строились пирамиды.
Та же тройка лежит в основе длины вектора. Нарисуйте (3, 4): три шага вправо, четыре вверх. Теперь проведите горизонтальную и вертикальную линию от начала к концу стрелки. Что получилось?
Прямоугольный треугольник. Катеты — 3 и 4. Стрелка — гипотенуза.
Теорема Пифагора. Та самая.
Синяя стрелка — вектор. Оранжевый и зелёный — катеты. Гипотенуза² = 3² + 4² = 9 + 16 = 25. Длина = 5.
Проверьте: (5, 12). Длина = √(25 + 144) = √169 = 13. Снова целое число. Это не случайность — такие тройки называют пифагоровыми, и их бесконечно много. Теперь другой вопрос. Представьте: вы программируете камеру в игре. Камера должна смотреть на персонажа. У вас есть вектор — он указывает куда смотреть. Вот только его длина случайная: зависит от того, где стоит камера.
Длина вам не нужна. Нужно только направление.
Что сделать? Разделить вектор на его длину. Каждая компонента уменьшится пропорционально — направление сохранится, а длина станет ровно 1. Это называется нормализацией.
v = (3, 4)
|v| = 5
v̂ = (3/5, 4/5) = (0.6, 0.8)
Проверка: |v̂| = √(0.6² + 0.8²) = √(0.36 + 0.64) = √1 = 1. Длина ровно единица.
Нормализованный вектор принято обозначать v̂ — «v с крышечкой». Он хранит только «куда», без «насколько далеко».
Последнее. Вы знаете длину вектора из начала координат. Но что если нужно расстояние между двумя произвольными точками — A и B где-то на плоскости?
Никакой новой формулы. Вспомните вычитание: вектор от A до B — это B − A. Расстояние — это его длина. Всё.
A = (1, 1), B = (4, 5)
B − A = (3, 4)
dist(A, B) = |B − A| = √(9 + 16) = 5
Красная точка — A, синяя — B. Пунктиры показывают компоненты вектора B−A: три единицы вправо и четыре вверх. Синяя стрелка — сам вектор. Его длина — расстояние между A и B. Тот же треугольник 3-4-5, просто нарисованный не из нуля, а между двумя произвольными точками.
Официальное название — евклидово расстояние. Оно работает в пространстве любой размерности: добавляйте компоненты — добавляйте слагаемые под корень.
dist(A, B) = √((b₁−a₁)² + (b₂−a₂)² + ... + (bₙ−aₙ)²)
Квартира (54, 2, 7, 12) и квартира (50, 2, 5, 8) — два вектора в четырёхмерном пространстве. Евклидово расстояние между ними говорит, насколько они похожи. Именно на этой идее работают алгоритмы поиска ближайших соседей, кластеризации, рекомендательные системы.
Длина вектора: |v| = √(v₁² + v₂²) — теорема Пифагора. Вектор и его катеты образуют прямоугольный треугольник.
Нормализация: v̂ = v / |v|. Единичный вектор того же направления. Нельзя нормализовать нулевой вектор.
Расстояние между точками: dist(A, B) = |B − A|. Сначала вычитание — получаем вектор, потом берём его длину.
Евклидово расстояние работает в любом числе измерений — основа поиска похожих объектов.