Provided by: libmath-bezier-perl_0.01-4_all bug

NAME

       Math::Bezier - solution of Bezier Curves

SYNOPSIS

           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);

DESCRIPTION

       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";
           }

AUTHOR

       Andy Wardley <abw@kfs.org>

SEE ALSO

       Graphics Gems 5, edited by Alan W. Paeth, Academic Press, 1995, ISBN 0-12-543455-3.
       Section IV.8, 'Quick and Simple Bezier Curve Drawing' by Robert D. Miller, pages 206-209.