mirror of
https://github.com/love2d/love.git
synced 2026-08-13 00:50:51 +02:00
Add support for Bezier curves of arbitrary degree.
New functions: bezier = love.math.newBezierCurve(control-points) degree = bezier:getDegree() -- degree = #control-points - 1 x,y = bezier:getControlPoint(pos) -- pos < 0 => string.sub semantics bezier:setControlPoint(pos, x, y) -- pos < 0 => string.sub semantics bezier:insertControlPoint(x,y, [pos = -1]) x,y = bezier:eval(t) -- 0 <= t <= 1 polyline = bezier:render([accuracy = 5]) -- returns a table of points Example: function love.load() b = love.math.newBezierCurve(10,10, 80,400, 380,400, 470,10) end function love.draw() if not curve then -- curve rendering is expensive-ish curve = b:render() end love.graphics.line(curve) end
This commit is contained in:
@@ -21,6 +21,7 @@
|
||||
// LOVE
|
||||
#include "MathModule.h"
|
||||
#include "common/Vector.h"
|
||||
#include "BezierCurve.h"
|
||||
|
||||
// STL
|
||||
#include <cmath>
|
||||
@@ -95,6 +96,11 @@ RandomGenerator *Math::newRandomGenerator()
|
||||
return new RandomGenerator();
|
||||
}
|
||||
|
||||
BezierCurve *Math::newBezierCurve(const vector<Vector> &points)
|
||||
{
|
||||
return new BezierCurve(points);
|
||||
}
|
||||
|
||||
vector<Triangle> Math::triangulate(const vector<vertex> &polygon)
|
||||
{
|
||||
if (polygon.size() < 3)
|
||||
|
||||
Reference in New Issue
Block a user