BezierCurve:evaluate
Available since LÖVE 0.9.0 |
This function is not supported in earlier versions. |
Evaluate Bézier curve at parameter t. The parameter must be between 0 and 1 (inclusive).
This function can be used to move objects along paths or tween parameters. However it should not be used to render the curve, see BezierCurve:render for that purpose.
Contents
Function
Synopsis
x,y = BezierCurve:evaluate(t)
Arguments
number t
- Where to evaluate the curve.
Returns
number x
- x coordinate of the curve at parameter t.
number y
- y coordinate of the curve at parameter t.
Examples
Make a circle follow a curve
local controlPoints = {125,125, 125,225, 175,125, 225,125}
local curve = love.math.newBezierCurve(controlPoints)
function love.draw()
local time = love.timer.getTime()
local loopTime = 4
local t = (time / loopTime) % 1
local x, y = curve:evaluate(t)
love.graphics.circle("fill", x, y, 8)
love.graphics.line(curve:render())
end
Calculate point at value t
function evaluateBezier (controlPoints, t)
local nPts = #controlPoints /2
local Vtemp = {}
for i = 1, #controlPoints, 2 do
table.insert (Vtemp, {x=controlPoints[i], y=controlPoints[i+1]})
end
for i = 2, nPts do
for j = 1, i-1 do
Vtemp[j].x = (1-t)*Vtemp[j].x + t*Vtemp[j+1].x
Vtemp[j].y = (1-t)*Vtemp[j].y + t*Vtemp[j+1].y
end
end
local Q = {x=Vtemp[1].x, y=Vtemp[1].y}
return Q
end
local controlPoints = {125,125, 125,225, 175,125, 225,125}
local t = 0.5
local point = evaluateBezier (controlPoints, t)
See Also
Other Languages
Dansk –
Deutsch –
English –
Español –
Français –
Indonesia –
Italiano –
Lietuviškai –
Magyar –
Nederlands –
Polski –
Português –
Română –
Slovenský –
Suomi –
Svenska –
Türkçe –
Česky –
Ελληνικά –
Български –
Русский –
Српски –
Українська –
עברית –
ไทย –
日本語 –
正體中文 –
简体中文 –
Tiếng Việt –
한국어
More info