Евклидовы преобразования и их свойства
Евклидовы преобразования — это такие преобразования в пространстве, которые сохраняют расстояния между точками. К основным видам евклидовых преобразований относятся:
- Смещение (Трансляция)
- Поворот (Ротация)
- Отражение (Рефлексия)
1. Смещение (Трансляция)¶
Математика: Смещение представляет собой добавление постоянного вектора ко всем точкам пространства. Если точка \(\mathbf{v}\) перемещается на вектор \(\mathbf{t}\), то новое положение точки \(\mathbf{v}'\) будет: \(\mathbf{v}' = \mathbf{v} + \mathbf{t}\)
Код на Python:
import numpy as np
# Исходная точка
v = np.array([1, 2, 3])
# Вектор смещения
t = np.array([4, 5, 6])
# Новая точка после смещения
v_prime = v + t
print(v_prime)
# Результат: [5 7 9]
2. Поворот (Ротация)¶
Математика: Поворот точки в пространстве на угол \(\theta\) вокруг заданной оси \(\mathbf{u}\) (нормализованной) можно представить матрицей поворота \(\mathbf{R}\). Для двумерного случая матрица поворота на угол \(\theta\) выглядит так: \(\mathbf{R} = \begin{pmatrix} \cos \theta & -\sin \theta \\ \sin \theta & \cos \theta \end{pmatrix}\)
Код на Python (для двумерного случая):
import numpy as np
# Угол поворота в радианах
theta = np.radians(45)
# Матрица поворота
R = np.array([[np.cos(theta), -np.sin(theta)], [np.sin(theta), np.cos(theta)]])
# Исходная точка
v = np.array([1, 0])
# Новая точка после поворота
v_prime = np.dot(R, v)
print(v_prime)
# Результат: [0.70710678 0.70710678] (примерно [sqrt(2)/2, sqrt(2)/2])
3. Отражение (Рефлексия)¶
Математика: Отражение точки относительно оси можно представить матрицей отражения. Например, для отражения относительно оси \(x\) в двумерном пространстве используется матрица: \(\mathbf{M_x} = \begin{pmatrix} 1 & 0 \\ 0 & -1 \end{pmatrix}\)
Код на Python (для двумерного случая):
import numpy as np
# Матрица отражения относительно оси x
M_x = np.array([[1, 0], [0, -1]])
# Исходная точка
v = np.array([1, 2])
# Новая точка после отражения
v_prime = np.dot(M_x, v)
print(v_prime)
# Результат: [ 1 -2]
Свойства евклидовых преобразований:¶
- Сохранение расстояний: Для любых двух точек \(\mathbf{v}_1\) и \(\mathbf{v}_2\) в пространстве расстояние между ними остается неизменным после применения любого евклидова преобразования.
Пример проверки свойства:
import numpy as np
# Исходные точки
v1 = np.array([1, 2])
v2 = np.array([4, 6])
distance_before = np.linalg.norm(v1 - v2)
# Вектор смещения
t = np.array([3, 3])
v1_prime = v1 + t
v2_prime = v2 + t
distance_after = np.linalg.norm(v1_prime - v2_prime)
print(distance_before) # Результат: 5.0
print(distance_after) # Результат: 5.0
-
Сохранение углов: Углы между любыми двумя векторами остаются неизменными после евклидова преобразования.
-
Обратимость: Каждое евклидово преобразование имеет обратное преобразование, которое также является евклидовым. Например, обратное смещение на \(\mathbf{t}\) — это смещение на \(-\mathbf{t}\), а обратное повороту на угол \(\theta\) — это поворот на угол \(-\theta\).
Эти примеры демонстрируют основные евклидовы преобразования и их свойства. NumPy позволяет легко и эффективно работать с этими преобразованиями и проверять их свойства.