Why not adopt me?
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