Перейти к содержимому

Сдвиг, поворот, масштаб

Проще не пересчитывать каждую точку, а сдвинуть саму сетку — и рисовать в ней как в первый раз

среднийНужно знать: Фигуры и линии, Углы и расстояния

Повернуть прямоугольник командой rect нельзя — у неё нет поля поворота. Зато можно повернуть саму сетку, в которой он рисуется.

тик 0
Рисование0
rgb
Рисование1
rgb
a
Рисование2
xy
ширинавысота
Рисование3
xy
Рисование4
degrees
Рисование5
xy
ширинавысота
Рисование6
Рисование7
rgb
a
Рисование8
xy
ширинавысота
Вывод рисования9
Стоп10
@counter0number

Три квадрата заданы одинаково, 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 88
draw rotate 0 0 угол
draw rect -20 -20 40 40
draw reset

Квадрат нарисован вокруг нуля — от -20 до 20, — поэтому поворот крутит его вокруг собственной середины, а translate ставит эту середину в центр дисплея. Стрелка компаса, секундная стрелка часов, поворотная башня — все они устроены так.

Неофициальный проект, с Anuke не связан. Спрайты, шрифты и переводы Mindustry © Anuke, используются по GPL-3.0; Fira Code — по OFL-1.1. Код сайта — GPL-3.0.