a minimal implementation of nth-degree-Bezier curves in julia
This module generates Bezier curves of arbitrary degree (in theory). The nth-Degree bezier curve is generated with Bernstein-Polynomials. Since julia has a efficient binomial function, this generation, The maximum number of control points is 67. For larger numbers, a buffer overflow occurs in the binomial function.
The degree of the Bezier curve is inferred from the number of control points.
The idea was taken from "A Primer on BĂ©zier Curves".
Return two lists with the x and y values for the quadratic bezier curve that spans from (0,0) to (1,1) with the controll point (0,1);
bezier([0,1,0],[0,1,1])
Return a cubic bezier curve with an added controll point at (0,1):
bezier([0,0,0,1],[0,1,1,1])
The number of coordinates is 100 by default, but can be modified with the range keyword.
using Plots, Bezier
plot(bezier([0,0.5,1],[0,1.8,0]))
plot!(bezier([0,0,1,1],[0,1,-1,0.5]))
plot!(bezier([0,0,1,1],[0,1,-1,0.5], 0:0.2:1))
using Plots, Bezier
m = [4 7 5 4 6 5 3; 3 4 -2 4 5 6 0]
plot(bezier(m))
scatter!(m[1,:],m[2,:])