| Geometry-Primitive documentation | Contained in the Geometry-Primitive distribution. |
Geometry::Primitive::Bezier - Cubic Bézier Curve
Geometry::Primitive::Bezier represents a cubic Bézier curve.
use Geometry::Primitive::Bezier;
my $line = Geometry::Primitive::Bezier->new(
start => $point1,
control1 => $point2,
control2 => $point3,
end => $point4
);
Set/Get the first control point of the curve.
Set/Get the second control point of the curve.
Set/Get the end point of the curve.
Set/Get the start point of the line.
Creates a new Geometry::Primitive::Bezier
Does nothing, as I'm not sure how. Patches or hints welcome.
Get the end point. Provided for Shape role.
Get the start point. Provided for Shape role.
Scales this curve by the amount provided. Multiplies each coordinate by the amount.
Guess!
Cory Watson <gphat@cpan.org>
You can redistribute and/or modify this code under the same terms as Perl itself.
| Geometry-Primitive documentation | Contained in the Geometry-Primitive distribution. |
package Geometry::Primitive::Bezier; use Moose; use MooseX::Storage; with qw(Geometry::Primitive::Shape MooseX::Clone MooseX::Storage::Deferred); use overload ('""' => 'to_string'); use Geometry::Primitive::Point; has 'control1' => ( is => 'rw', isa => 'Geometry::Primitive::Point', required => 1, coerce => 1 ); has 'control2' => ( is => 'rw', isa => 'Geometry::Primitive::Point', required => 1, coerce => 1 ); has 'end' => ( is => 'rw', isa => 'Geometry::Primitive::Point', required => 1, coerce => 1 ); has 'start' => ( is => 'rw', isa => 'Geometry::Primitive::Point', required => 1, coerce => 1 ); sub scale { my ($self, $amount) = @_; $self->start->x($self->start->x * $amount); $self->start->y($self->start->y * $amount); $self->end->x($self->end->x * $amount); $self->end->y($self->end->y * $amount); $self->control1->x($self->control1->x * $amount); $self->control1->y($self->control1->y * $amount); $self->control2->x($self->control2->x * $amount); $self->control2->y($self->control2->y * $amount); } sub point_end { my ($self) = @_; return $self->end; } sub point_start { my ($self) = @_; return $self->start; } sub to_string { my ($self) = @_; return $self->start->to_string.' - '.$self->control1->to_string .' = '.$self->control2->to_string.' = '.$self->end->to_string; } __PACKAGE__->meta->make_immutable; no Moose; 1; __END__