Сдвиг, поворот, масштаб
Проще не пересчитывать каждую точку, а сдвинуть саму сетку — и рисовать в ней как в первый раз
Повернуть прямоугольник командой rect нельзя — у неё нет поля поворота. Зато можно
повернуть саму сетку, в которой он рисуется.
Три квадрата заданы одинаково, 40 на 40. Первый нарисован как есть, второй — после сдвига
и поворота сетки, третий — после reset, снова в обычных координатах.
Три команды и отмена
Заголовок раздела «Три команды и отмена»| Команда | Поля | Что делает |
|---|---|---|
translate |
x y |
сдвигает начало координат |
rotate |
угол | поворачивает сетку на угол в градусах |
scale |
x y |
растягивает сетку по осям |
reset |
— | возвращает всё как было |
У поворота поле всего одно — угол. В текстовой записи оно всё равно стоит третьим:
draw rotate 0 0 90. Первые два места заняты координатами, которые у этой команды
не используются, — так устроена запись всех draw, у них общий набор полей.
Они накапливаются: сдвиг после сдвига складывается, поворот после поворота тоже.
Отменяет их только reset.
Зачем это нужно
Заголовок раздела «Зачем это нужно»Повернуть фигуру иначе нельзя: у rect, line и triangle поворота нет вовсе,
а у poly он есть, но только вокруг её же середины. Сетка решает обе задачи:
draw translate 88 88draw rotate 0 0 уголdraw rect -20 -20 40 40draw resetКвадрат нарисован вокруг нуля — от -20 до 20, — поэтому поворот крутит его вокруг
собственной середины, а translate ставит эту середину в центр дисплея. Стрелка компаса,
секундная стрелка часов, поворотная башня — все они устроены так.
Неофициальный проект, с Anuke не связан. Спрайты, шрифты и переводы Mindustry © Anuke, используются по GPL-3.0; Fira Code — по OFL-1.1. Код сайта — GPL-3.0.