Spec-Zone.ru › LÖVE

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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API