The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

NAME

Math::Shape::Rectangle - an axis-aligned 2d rectangle

VERSION

version 0.15

METHODS

new

Constructor, requires 4 values: the x,y values for the origin and the x,y values for the size.

    my $rectangle = Math::Shape::Rectangle->new(1, 1, 2, 4);
    my $width = $rectangle->{size}->{x}; # 2

clamp

Takes a vector object and returns a new vector object whose x & y coordinates are "clamped" to the size of the rectangle. Requires a Math::Shape::Vector object as an argument.

    my $clamped_vector = $rectangle->clamp($vector);

corner

Returns a Math::Shape::Vector object representing a corner point of the rectangle. Requires a number between 0 and 3.

    my $corner = $rectangle->corner(2); # get the 3rd corner

separating_axis

Boolean method that returns 1 if the axis is outside of the rectangle, or 0 if not. Requires a Math::Shape::LineSegment object as an argument.

enlarge

Returns a new rectangle object increased to the size of a vector. Requires a Math::Shape::Vector object as an argument.

    my $larger_rectangle = $rectangle->enlarge($vector);

collides

Boolean method returns 1 if the rectangle collides with another object, else returns 0. Requires another Math::Shape::Vector library object as an argument.

    my $is_collision = $rectangle->collides($other_rectangle);

    my $circle = Math::Shape::Circle->new(54, 19, 30);
    if ($rectangle->collides($circle))
    {
        ...
    }

AUTHOR

David Farrell <dfarrell@cpan.org>

COPYRIGHT AND LICENSE

This software is copyright (c) 2015 by David Farrell.

This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.