| Geometry-Primitive documentation | Contained in the Geometry-Primitive distribution. |
Geometry::Primitive::Ellipse - An Ellipse
Geometry::Primitive::Ellipse represents an elliptical conic section.
use Geometry::Primitive::Ellipse;
my $ellipse = Geometry::Primitive::Ellipse->new(
width => 15,
height => 10
);
print $ellipse->area;
Set/Get the height of this ellipse.
Set/Get the origin of this ellipse.
Set/Get the width of this ellipse.
Creates a new Geometry::Primitive::Ellipse
Returns the area of this ellipse.
Gets the "end" point for this Ellipse. Same as point_start.
Get the point that "starts" this Ellipse. Returns the a point where the X coordinate is the Ellipse origin X and the origin Y + height / 2.
Returns a new ellipse whose radius is $amount times bigger than this one.
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::Ellipse; use Moose; use MooseX::Storage; use Math::Trig ':pi'; with qw(Geometry::Primitive::Shape MooseX::Clone MooseX::Storage::Deferred); has 'height' => ( is => 'rw', isa => 'Num', default => 0 ); has 'origin' => ( is => 'rw', isa => 'Geometry::Primitive::Point', coerce => 1 ); has 'width' => ( is => 'rw', isa => 'Num', default => 0 ); sub area { my ($self) = @_; return (pi * $self->width * $self->height) / 4; }; sub point_end { my ($self) = @_; return $self->point_start; } sub point_start { my ($self) = @_; return Geometry::Primitive::Point->new( x => $self->origin->x, y => $self->origin->y - ($self->height / 2) ); } sub scale { my ($self, $amount) = @_; return Geometry::Primitive::Ellipse->new( height => $self->height * $amount, width => $self->width * $amount ); } __PACKAGE__->meta->make_immutable; no Moose; 1; __END__