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

NAME

Math::Shape::Point - a 2d point object in cartesian space with utility angle methods

VERSION

version 1.00

SYNOPSIS

    use Math::Shape::Point;
    use Math::Trig ':pi';

    my $p1 = Math::Shape::Point->new(0, 0, 0);
    my $p2 = Math::Shape::Point->new(5, 5, 0);
    $p1->rotate_about_point($p2, pip2);
    my $angle = $p1->get_angle_to_point($p2);
    my $distance = $p1->get_distance_to_point($p2);

DESCRIPTION

This module is designed to provide some useful 2d functions for manipulating point shapes in cartesian space. Advanced features include rotating around another point, calculating the distance to a point and the calculating the angle to another point. The module uses cartesian coordinates and radians throughout.

Coverage Status

METHODS

new

Instantiates a new point object. Requires the x and y cartesian coordinates and the facing direction in radians.

    my $p = Math::Shape::Point->new(0, 0, 0);

get_location

Returns an arrayref containing the point's location in cartesian coordinates.

    $p->get_location;

set_location

Sets the point's location in cartesian coordinates. Requires two numbers as inputs for the x and y location.

    $p->set_location($x, $y);

get_direction

Returns the current facing direction in radians.

    $p->get_direction;

set_direction

Sets the current facing direction in radians.

    $p->set_direction(2.5);

advance

Requires a numeric distance argument - moves the point forward that distance in Cartesian coordinates towards the direction it is facing.

    $p->advance(5);

retreat

Requires a numeric distance argument - moves the point backwards that distance in Cartesian coordinates from the direction it is facing.

    $p->retreat(5);

move_left

Requires a numeric distance argument - moves the point that distance to the left.

    $p->move_left(3);

move_right

Requires a numeric distance argument - moves the point that distance to the right.

    $p->move_right(7);

rotate

Updates the point's facing direction by radians.

    $p->rotate(2);

rotate_about_point

Rotates the point around another point of origin. Requires a point object and the angle in radians to rotate. This method updates the facing direction of the point object, as well as it's location.

    my $p1 = Math::Shape::Point->new(0, 0, 0); #new point at 0,0 facing 0 radians.
    my $p2 = Math::Shape::Point->new(1, 2, 3.14); #new point at 1,2 facing 3.14 radians.
    $p1->rotate_about_point($p2, 3.14);

get_distance_to_point

Returns the distance to another point object. Requires a point object as an argument.

    $p1->get_distance_to_point($p2);

get_angle_to_point

Returns the angle of another point object. Requires a point as an argument.

    $p1->get_angle_to_point($p2);

get_direction_to_point

Returns the direction of another point objection as a string (front, right, back or left). Assumes a 90 degree angle per direction. Requires a point object as an argument.

    $p1->get_direction_to_point($p2); # front

normalize_radian

Takes a radian argument and returns it between 0 and PI2. Negative numbers are assumed to be backwards (e.g. -1.57 == PI + PI / 2)

AUTHOR

David Farrell, <davidnmfarrell at gmail.com>, perltricks.com

BUGS

Please report any bugs or feature requests to bug-math-shape-point at rt.cpan.org, or through the web interface at http://rt.cpan.org/NoAuth/ReportBug.html?Queue=math-shape-point. I will be notified, and then you'll automatically be notified of progress on your bug as I make changes.

SUPPORT

You can find documentation for this module with the perldoc command.

    perldoc Math::Shape::Point

REPOSITORY

https://github.com/sillymoose/Math-Shape-Point.git

AUTHOR

David Farrell <sillymoos@cpan.org>

COPYRIGHT AND LICENSE

This software is copyright (c) 2014 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.