love.graphics.rotate
Поворачивает систему координат в двух измерениях.
Вызов этой функции влияет на все последующие операции рисования, поворачивая систему координат вокруг начала координат на заданный угол в радианах. Это изменение сохраняется до выхода функции love.draw().
Функция
Синопсис
love.graphics.rotate( angle )
Аргументы
number angle- Величина поворота системы координат в радианах.
Возвращаемое значение
Ничего.
Примеры
Поворот статического изображения
Этот пример демонстрирует, как повернуть статическое изображение вокруг заданной точки. Поскольку поворот всегда происходит вокруг начала координат, перемещение центра экрана в начало координат и возвращение после операции поворота позволяет сделать эффективной точкой поворота центр экрана. Это демонстрируется рисованием прямоугольника, отображающего поворот, и точки, находящейся точно в центре, которая не смещается при повороте изображения. Обратите внимание, что команды рисования имеют координаты, зависящие только от размера экрана.
local angle = 0
function love.draw()
local width = love.graphics.getWidth()
local height = love.graphics.getHeight()
-- rotate around the center of the screen by angle radians
love.graphics.translate(width/2, height/2)
love.graphics.rotate(angle)
love.graphics.translate(-width/2, -height/2)
-- draw a white rectangle slightly off center
love.graphics.setColor(0xff, 0xff, 0xff)
love.graphics.rectangle('fill', width/2-100, height/2-100, 300, 400)
-- draw a five-pixel-wide blue point at the center
love.graphics.setPointSize(5)
love.graphics.setColor(0, 0, 0xff)
love.graphics.points(width/2, height/2)
end
function love.update(dt)
love.timer.sleep(.01)
angle = angle + dt * math.pi/2
angle = angle % (2*math.pi)
end
Поворот всего экрана
В этом примере показано, как повернуть экран на 90 градусов против часовой стрелки. Особенно полезно, если вы просто распространяете файлы .love для Android, где игра всегда запускается в альбомной ориентации. После этого ширина и высота холста будут "поменяны местами". Не забудьте всегда преобразовывать входные данные и выполнять все проверки, связанные с границами экрана.
function love.load()
--get the width and height of the CANVAS, not of the DESKTOP
width, height = love.graphics.getWidth(), love.graphics.getHeight()
end
function love.draw()
love.graphics.translate(width/2, height/2)
love.graphics.rotate(-math.pi / 2)
love.graphics.translate(-height/2, -width/2)
love.graphics.setColor(255, 0, 0)
love.graphics.points(0, 0)
--It will require zoom to observe the 1 pixel point, but it goes to show that it works.
end
-- simple function for translating mouse input, for example
local function translate(_x, _y)
local y = _x
local x = height - _y
return x, y
end
--[[
--Say you are doing love.graphics.rectangle("fill", 150, 170, 125, 145), in the translated system, like above
--You would just need to translate(x, y) the mouse input and then check the x to be within
--[150, 275] and y within [170, 315] respectively. No inversion of width and height.
--]] См. также
- love.graphics
- love.graphics.pop
- love.graphics.push
- love.graphics.scale
- love.graphics.shear
- love.graphics.translate
- love.graphics.origin
© 2006–2020 LÖVE Development Team
Licensed under the GNU Free Documentation License, Version 1.3.
https://love2d.org/wiki/love.graphics.rotate