Это проблема тригонометрии, вот как работает базовое вращение 2D. Представьте себе точку, расположенную в (x, y). Если вы хотите повернуть эту точку вокруг начала координат (в вашем случае 0,0) на угол θ, координаты новой точки будут расположены в точке (x1, y1) с помощью следующего преобразования
x1 = x cosθ - y sinθ
y1 = y cosθ + x sinθ
В вашем примере я добавил новый эллипс после вращения
function love.draw()
love.graphics.translate(love.graphics.getWidth()/2,love.graphics.getHeight()/2)
for i = 1, 360, 5 do
local I = math.rad(i)
local x,y = math.cos(I)*W, math.sin(I)*H
love.graphics.setColor(0xff, 0, 0) -- red
love.graphics.line(0, 0, x, y)
end
-- rotate by angle r = 90 degree
local r = math.rad(90)
for i = 1, 360, 5 do
local I = math.rad(i)
-- original coordinates
local x = math.cos(I) * W
local y = math.sin(I) * H
-- transform coordinates
local x1 = x * math.cos(r) - y * math.sin(r)
local y1 = y * math.cos(r) + x * math.sin(r)
love.graphics.setColor(0, 0, 0xff) -- blue
love.graphics.line(0, 0, x1, y1)
end
end