Уроки · 57
Поворот на 90°
В играх часто нужно не посчитать направление с нуля через cos и
sin, как в уроке «Вращение», а взять уже готовый
вектор и повернуть его на какой-то угол — например, развернуть пулю
в обратную сторону или направить персонажа на четверть оборота в
сторону от того, куда он и так смотрел. Для произвольного угла без
cos и sin никак не обойтись. Но если угол кратен 90° — ровно 90°,
180° или −90° (он же 270°) — поворот получается почти бесплатно:
несколько минусов и перестановка местами, без единого умножения.
Поворот на 180° — развернуть в другую сторону
Заголовок раздела «Поворот на 180° — развернуть в другую сторону»Самый простой случай. Развернуть вектор ровно в обратную сторону — значит просто отрицать обе его координаты:
let (x180, y180) = (-x, -y);Справа здесь не вызов функции, а просто два числа в скобках — такой
же кортеж, какой возвращала mouse_position(), только собранный
прямо тут, на месте. А слева (x180, y180) сразу раскладывает его на
две отдельные переменные — ровно так, как мы раньше раскладывали
кортеж, который возвращала функция. Написать можно было бы и подлиннее,
по одной переменной за раз:
let x180 = -x;let y180 = -y;Это одно и то же — просто короче, и заодно видно, что обе координаты
выражены через исходные x и y.
Длина та же самая, направление — ровно противоположное.
Поворот на 90° — поменять местами и один минус
Заголовок раздела «Поворот на 90° — поменять местами и один минус»Тут координаты меняются местами, и той, что получилась на месте x
(а была раньше y), достаётся минус:
let (x90, y90) = (-y, x);Поворот на −90° — то же самое, но минус у другой
Заголовок раздела «Поворот на −90° — то же самое, но минус у другой»Тот же самый трюк наоборот: координаты меняются местами, но минус
теперь достаётся той, что получилась на месте y (а была раньше x):
let (x_minus90, y_minus90) = (y, -x);Попробуй сам
Заголовок раздела «Попробуй сам»Тяни серый вектор за кончик мышью — его числа меняются. Кнопки ниже показывают остальные три вектора, посчитанные по формулам из урока прямо из текущих чисел серого — сравни их с тем, что получается на картинке.
Что здесь происходит
Заголовок раздела «Что здесь происходит»- Серый вектор — тот, что ты крутишь мышью. Три кнопки показывают
остальные три вектора, посчитанные прямо из его текущих
xиy— теми же формулами, что выше. (-x, -y)— поворот на 180°: обе координаты отрицаются, вектор смотрит в обратную сторону.(-y, x)— поворот на 90°: координаты меняются местами, и новомуx(бывшемуy) достаётся минус.(y, -x)— поворот на −90°: то же самое наоборот, минус достаётся новомуy(бывшемуx).- Ни одна из трёх формул не трогает длину вектора — только направление, как и положено повороту.