Что делает этот калькулятор
Калькулятор поворота 3D-координат находит новое положение точки в трёхмерном пространстве после её поворота вокруг осей X, Y и (или) Z. Он работает в правосторонней системе координат и использует знаковое соглашение по правилу правой руки: положительный угол поворачивает точку против часовой стрелки, если смотреть со стороны положительного конца оси вращения в направлении начала координат. Это чистая аналитическая геометрия, которая применима везде — в физике, робототехнике, компьютерной графике, САПР и инженерных расчётах.
Как пользоваться
Введите исходные координаты точки (начальные x, y, z). Выберите, в чём заданы углы — в градусах или радианах. Затем задайте до трёх шагов поворота, у каждого из которых есть своя ось и угол. Шаги выполняются по порядку: шаг 1 действует на исходную точку, шаг 2 — на результат шага 1 и так далее. Чтобы пропустить шаг, оставьте поле угла пустым или поставьте 0. Для одного поворота достаточно заполнить только шаг 1.
Разбор формулы
Для каждого шага обозначим угол в радианах через \(\theta\), а также \(c = \cos\theta\) и \(s = \sin\theta\). Поворот вокруг оси Z оставляет \(z\) неизменной и переводит \((x, y)\) в \((x\cdot c - y\cdot s,\; x\cdot s + y\cdot c)\):
$$R_z(\theta) = \begin{bmatrix} \cos\theta & -\sin\theta & 0 \\ \sin\theta & \cos\theta & 0 \\ 0 & 0 & 1 \end{bmatrix}$$Поворот вокруг X не меняет \(x\), поворот вокруг Y не меняет \(y\) — в каждом случае две оставшиеся координаты смешиваются по тому же принципу.
$$\begin{aligned} x^{\prime} &= x \\ y^{\prime} &= y\cos\theta - z\sin\theta \\ z^{\prime} &= y\sin\theta + z\cos\theta \end{aligned}$$$$\begin{aligned} x^{\prime} &= x\cos\theta + z\sin\theta,\; y^{\prime}=y,\; z^{\prime}=-x\sin\theta + z\cos\theta \\ x^{\prime} &= x\cos\theta - y\sin\theta,\; y^{\prime}=x\sin\theta + y\cos\theta,\; z^{\prime}=z \end{aligned}$$Композиция нескольких поворотов равносильна перемножению их матриц поворота, но применение их к вектору шаг за шагом избавляет от ошибок в порядке действий.
Пример расчёта
Возьмём точку \((1, 0, 1)\) и повернём её на \(90°\) вокруг оси Z. Здесь \(\theta = \pi/2\), поэтому \(c = 0\) и \(s = 1\). Тогда
$$x' = 1\cdot 0 - 0\cdot 1 = 0,\quad y' = 1\cdot 1 + 0\cdot 0 = 1$$а \(z'\) остаётся равной \(1\). Результат — \((0, 1, 1)\).
Частые вопросы
Какое направление поворота считается положительным? Положительное направление — против часовой стрелки, если смотреть со стороны положительной полуоси в сторону начала координат (правило правой руки).
Важен ли порядок поворотов? Да. Повороты в 3D не коммутативны, поэтому поворот сначала вокруг X, а затем вокруг Z в общем случае отличается от поворота сначала вокруг Z, а потом вокруг X. Этот инструмент всегда выполняет шаг 1 первым.
Почему иногда выводится 0 вместо очень маленького числа? Такие значения, как \(\cos(90°)\), в формате с плавающей точкой не равны строго нулю, поэтому близкие к нулю результаты округляются до 0 для наглядности.
Часто используемые углы поворота
Элементы любой матрицы поворота зависят только от \(\cos\theta\) и \(\sin\theta\). В таблице приведены точные значения для наиболее распространённых углов, которые вы можете подставить непосредственно в \(R_X\), \(R_Y\) или \(R_Z\). Десятичные приближения показаны до четырёх знаков.
| \(\theta\) (град) | \(\theta\) (рад) | \(\cos\theta\) | \(\sin\theta\) |
|---|---|---|---|
| 0° | 0 | 1 | 0 |
| 30° | \(\pi/6\) | \(\tfrac{\sqrt3}{2}\approx0.8660\) | \(\tfrac12=0.5\) |
| 45° | \(\pi/4\) | \(\tfrac{\sqrt2}{2}\approx0.7071\) | \(\tfrac{\sqrt2}{2}\approx0.7071\) |
| 60° | \(\pi/3\) | \(\tfrac12=0.5\) | \(\tfrac{\sqrt3}{2}\approx0.8660\) |
| 90° | \(\pi/2\) | 0 | 1 |
| 180° | \(\pi\) | −1 | 0 |
| 270° | \(3\pi/2\) | 0 | −1 |
Заметьте, что поворот на \(180^\circ\) меняет знак двух координат, перпендикулярных оси, в то время как \(270^\circ\) эквивалентно \(-90^\circ\) (четверть оборота в направлении по часовой стрелке при взгляде с положительного конца оси).
Ключевые термины и переменные
- Правая система координат
- 3D система отсчёта, в которой оси X, Y и Z ориентированы так, что если направить пальцы правой руки от +X к +Y, то большой палец будет указывать вдоль +Z. Это стандартное математическое и физическое соглашение; матрицы поворота предполагают её.
- Правило правой руки
- Мнемоническое правило для положительного направления поворота: направьте большой палец правой руки вдоль положительной оси вращения, и загибание пальцев покажет положительное (против часовой стрелки) направление вращения для этой оси.
- Матрица поворота
- Ортогональная матрица \(3\times3\) с определителем \(+1\), которая поворачивает векторы вокруг фиксированной оси, не изменяя их длину. Здесь \(R_X\), \(R_Y\) и \(R_Z\) поворачивают вокруг осей X, Y и Z соответственно.
- \(\theta\) (тета), угол поворота
- Величина поворота вокруг выбранной оси. Вводится в градусах или радианах; инструмент конвертирует градусы внутренне с помощью \(\theta_{\text{рад}} = \theta_{\text{град}}\cdot\pi/180\) перед вычислением \(\cos\theta\) и \(\sin\theta\).
- Ось вращения
- Фиксированная линия (X, Y или Z), точки на которой остаются неизменными, в то время как всё остальное вращается вокруг неё. В этом инструменте ось каждого шага выбирается как 0 = X, 1 = Y, 2 = Z.
- Положительное / направление против часовой стрелки
- Положительный угол создаёт вращение против часовой стрелки при взгляде с положительного конца оси на начало координат. Отрицательный угол меняет это на обратное (по часовой стрелке).
- Выходные координаты \(x'\), \(y'\), \(z'\)
- Компоненты повёрнутой точки \(\mathbf{p}' = R\,\mathbf{p}\). При одном или нескольких последовательных поворотах \(\mathbf{p}' = R_{a_3}(\theta_3)\,R_{a_2}(\theta_2)\,R_{a_1}(\theta_1)\,\mathbf{p}\), где матрица справа применяется первой.