`
``
use Math::Bezier;
# create curve passing list of (x, y) control points
my $bezier = Math::Bezier->new($x1, $y1, $x2, $y2, ..., $xn, $yn);
# or pass reference to list of control points
my $bezier = Math::Bezier->new([ $x1, $y1, $x2, $y2, ..., $xn, $yn]);
# determine (x, y) at point along curve, range 0 -> 1
my ($x, $y) = $bezier->point(0.5);
# returns list ref in scalar context
my $xy = $bezier->point(0.5);
# return list of 20 (x, y) points along curve
my @curve = $bezier->curve(20);
# returns list ref in scalar context
my $curve = $bezier->curve(20);
`

This module implements the algorithm for the solution of Bezier curves
as presented by Robert D. Miller in Graphics Gems V, Quick and Simple
Bezier Curve Drawing.
A new Bezier curve is created using the *new()* constructor, passing a list
of (x, y) control points.

`
`

`
use Math::Bezier;
my @control = ( 0, 0, 10, 20, 30, -20, 40, 0 );
my $bezier = Math::Bezier->new(@control);
`

Alternately, a reference to a list of control points may be passed.

`
`

`
my $bezier = Math::Bezier->new(\@control);
`

The point($theta) method can then be called on the object, passing a
value in the range 0 to 1 which represents the distance along the
curve. When called in list context, the method returns the x and y
coordinates of that point on the Bezier curve.

`
`

`
my ($x, $y) = $bezier->point(0.5);
print "x: $x y: $y\n
`

When called in scalar context, it returns a reference to a list containing
the x and y coordinates.

`
`

`
my $point = $bezier->point(0.5);
print "x: $point->[0] y: $point->[1]\n";
`

The curve($n) method can be used to return a set of points sampled
along the length of the curve (i.e. in the range 0 <= `$theta` <= 1).
The parameter indicates the number of sample points required,
defaulting to 20 if undefined. The method returns a list of ($x1,
`$y1`, `$x2`, `$y2`, ..., `$xn`, `$yn`) points when called in list context, or
a reference to such an array when called in scalar context.

`
`

`
my @points = $bezier->curve(10);
while (@points) {
my ($x, $y) = splice(@points, 0, 2);
print "x: $x y: $y\n";
}
my $points = $bezier->curve(10);
while (@$points) {
my ($x, $y) = splice(@$points, 0, 2);
print "x: $x y: $y\n";
}
`