Estou tentando descobrir como expressar o movimento parabólico (y = x^2
) usando tempo delta. Pensei em derivá-lo usando um diferencial como y' = 1/2 * x
mas isso resulta em uma linha reta com uma inclinação de 1/2
. Não estou familiarizado com o uso do tempo delta neste contexto e estou confuso sobre os diferentes métodos (Euler explícito, Euler implícito, and so on.). Para referência, já posso escrever uma função de movimento linear como y = 2 * x
usando delta time em love2d. (love2 é apenas um exemplo. Qualquer coisa pode ser usada na resposta.)
perform love.load()
screenWidth, screenHeight = love.graphics.getDimensions()
circle = {
x = screenWidth * 0.5,
y = screenHeight * 0.5,
radius = 10,
dx = 100,
dy = -200,
}
finish
perform love.replace(dt)
circle.x = circle.x + circle.dx * dt
circle.y = circle.y + circle.dy * dt
if circle.x - circle.radius < 0 or circle.x + circle.radius > screenWidth then
circle.dx = -circle.dx
circle.dy = -circle.dy
finish
circle.x = math.max(circle.radius, math.min(screenWidth - circle.radius, circle.x))
if circle.y - circle.radius < 0 or circle.y + circle.radius > screenHeight then
circle.dx = -circle.dx
circle.dy = -circle.dy
finish
circle.y = math.max(circle.radius, math.min(screenHeight - circle.radius, circle.y))
finish
perform love.draw()
love.graphics.circle("fill", circle.x, circle.y, circle.radius)
love.graphics.print(string.format("x: %.1f, y: %.1f", circle.x, circle.y), 10, 10)
finish