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

NAME

Math::Geometry - Geometry related functions

SYNOPSIS

        use Math::Geometry;

        @P2=rotx(@P1,$angle);
        @P3=rotx(@P1,$angle);
        @N =triangle_normal(@P1,@P2,@P3);
        @ZP=zplane_project(@P1,$d);

NOTES

This is about to get a massive overhaul, but first im adding tests, lots of lovely lovely tests.

Currently for zplane_project onto a plane with normal of the z axis and z=0, the function returns the orthographic projections as opposed to a perspective projection. I'm currently looking into how to properly handle z=0 and will update it shortly.

DESCRIPTION

This package implements classic geometry methods. It should be considered alpha software and any feedback at all is greatly appreciated. The following methods are available:

vector_product.

Also known as the cross product, given two vectors in Geometry space, the vector_product of the two vectors, is a vector which is perpendicular to the plane of AB with length equal to the length of A multiplied by the length of B, multiplied by the sin of @, where @ is the angle between the two vectors.

triangle_normal

Given a triangle ABC that defines a plane P. This function will return a vector N, which is a normal to the plane P.

    ($Nx,$Ny,$Nz) =
       triangle_normal(($Ax,$Ay,$Az),($Bx,$By,$Bz),($Cx,$Cy,$Cz));

zplane_project

Project a point in Geometry space onto a plane with the z-axis as the normal, at a distance d from z=0.

    ($x2,$y2,$z2) = zplane_project ($x1,$y1,$z1,$d);

rotx

Rotate about the x axis r radians.

    ($x2,$y2,$z2) = rotx ($x1,$y1,$z1,$r);

roty

Rotate about the y axis r radians.

    ($x2,$y2,$z2) = roty ($x1,$y1,$z1,$r);

rotz

Rotate about the z axis r radians.

    ($x2,$y2,$z2) = rotz ($x1,$y1,$z1,$r);

deg2rad

Convert degree's to radians.

rad2deg

Convert radians to degree's.

pi

Returns an approximate value of Pi, the code has been cribed from Pg146, Programming Perl 2nd Ed.

EXAMPLE

    use Math::Geometry;

AUTHOR

    Greg McCarroll <greg@mccarroll.org.uk> 
    - http://www.mccarroll.org.uk/~gem/

COPYRIGHT

Copyright 2006 by Greg McCarroll <greg@mccarroll.org.uk>

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

See http://www.perl.com/perl/misc/Artistic.html