Math::Geometry implements classic geomtrical functions in Perl, it has an emphasis on 3 dimensional geometry including projects, rotations and other standard 3 dimensional operations.
use Math::Geometry;
@P2=rotx(@P1,$angle);
@P3=rotx(@P1,$angle);
@N =triangle_normal(@P1,@P2,@P3);
@ZP=zplane_project(@P1,$d);
See the pod documentation in Geometry.pm for more details.