README for Geometry-0.02
Computional geometry module tree
Reini Urban
[email protected]
MODULE DESCRIPTION
Name DSLI Description Info
----------- ---- -------------------------------------------- ------
Geometry adpO Computional geometry RURBAN
INTRODUCTION
The perl Geometry module tree holds various modules for computional geometry.
Some simple functions and data structures for the needed linear
algebra, matrix and coordinate transformation, intersections, ...
Advanced space or time efficient algorithms and data structures,
dealing with pointsets (2D, 3D, nD) and 2D polygons, like decompositions,
convex hulls, intersections, location queries.
Geometry::Points - Unordered 2D/3D Pointsets and Meshes
Geometry::Polygon - Simple and General Polygons in 2D with holes.
Geometry::Delaunay - Simple Mesh Generation without constraints
Based on David Eberly's Magic Software code. In 2D or 3D
Geometry::Triangle - Quality and Constraint Mesh Generation
based on Jonathan Shewchuk's triangle. Creates also a
Voronoi diagram or the convex hull of a pointset.
Geometry::Hull2D - Convex Hulls in 2D
Geometry::QHull - Convex Hulls in arbitrary dimensions
Geometry::MapOverlay - Intersection of two maps
Intersect a 3D mesh with a set of 2D polygons, project the
polygons on to the mesh and create all intermediate polygon
segments.
You might need it for CAD, GIS or other graphics. This is a rewrite of
existing lisp modules and interfaces which is in extensive use since years.
Perl might be more appealing for converters and web-graphics.
There will be also seperate AutoCAD module for DWG and DXF handling.
(currently in alpha)
There also exist various diverse modules like Math::Trig, Math::Matrix,
Math::MatrixReal, Math::Geometry, but none is sufficient for computional
geometry and simpler geometric calculations.
INSTALLATION
Get the perl module at
ftp://xarch.tu-graz.ac.at/pub/autocad/urban/perl/
or
http://www.perl.com//CPAN/authors/id/RURBAN/
Also get an updated Tie::CArray if needed.
If needed get triangle at
http://www.cs.cmu.edu/~quake/triangle.research.html
All other sources are included.
Prerequisites needed:
perl5.005 or 5.6 Earlier versions might need some CPAN modules which are
standard now.
The xs modules use the Perl_ and PL_ prefixes which
must be removed for 5.004 and earlier.
* Math::Trig 1.00 Standard since 5.005. Not the CPAN module 0.02!
* Tie::CArray A copy is included with this package. The
latest module may be obtained seperately at CPAN.
C compiler (tested with egcs-1.1.2, gcc-2.95.2, msvc5+6)
C++ compiler for Geometry::Delauney
triangle for Geometry::Triangle
http://www.cs.cmu.edu/~quake/triangle.research.html
Geometry installs as a standard Perl module:
perl Makefile.pl
make
make test
make install
Tested Platforms:
Win32
Geometry::Polygon was developed under Win32 - MSVC6 - perl5.00502,
5.00558 w/wo threads/debugging and additionally tested
with cygwin32 - gcc 2.95 - 5.00563.
It should be 5.6 ready and namespace safe.
Please report other platforms to the author.
I see no major difficulty for CC/gcc supported platforms,
though Win32 is less strict than others.
All external C/C++ sources are reported to compile fine under the
major platforms. Hope my RCS didn't mess up the eof lines.
You might tweak the makefiles, see polytri/makefile for rand48 and
time.h defines.
This is beta. Not fully tested and implemented yet!
The interface is stable.
AUTHORS
Atul Narkhede (
[email protected]) and Dinesh Manocha wrote polytri,
based on a paper by Raimund Seidel 1991.
Graham Barr (
[email protected]) wrote reduce.
David Eberly (
[email protected]) wrote Delaunay, based on a paper
and on code by Dave Watson.
Jonathan Shewchuk (
[email protected]) wrote Triangle.
Ken Clarkson wrote 2dch.c
C. Bradford Barber (
[email protected]) and Hannu Huhdanpaa
(
[email protected]) wrote qhull.
Reini Urban (
[email protected]) wrote the rest.
COPYRIGHTS
Since this consists of various modules by different authors the different
licenses are listed here for your convenience in decreasing strictness.
See the specific docs as well, esp. for warranties.
* triangle is Copyright (c) 1996 by Jonathan Richard Shewchuk
These programs may be freely redistributed under the condition that the
copyright notices (including the copy of this notice in the code comments
and the copyright notice printed when the `-h' switch is selected) are
not removed, and no compensation is received. Private, research, and
institutional use is free. You may distribute modified versions of this
code UNDER THE CONDITION THAT THIS CODE AND ANY MODIFICATIONS MADE TO IT
IN THE SAME FILE REMAIN UNDER COPYRIGHT OF THE ORIGINAL AUTHOR, BOTH
SOURCE AND OBJECT CODE ARE MADE FREELY AVAILABLE WITHOUT CHARGE, AND
CLEAR NOTICE IS GIVEN OF THE MODIFICATIONS. Distribution of this code as
part of a commercial system is permissible ONLY BY DIRECT ARRANGEMENT
WITH THE AUTHOR. (If you are not directly supplying this code to a
customer, and you are instead telling them how they can obtain it for
free, then you are not required to make any arrangement with me.)
* 2dch.c is Copyright (c) 1996 by AT&T
Permission to use, copy, modify, and distribute this software for any
purpose without fee is hereby granted, provided that this entire notice
is included in all copies of any software which is or includes a copy
or modification of this software and in all copies of the supporting
documentation for such software.
* The Delaunay C++ code is Copyright (c) 1998 by David Eberly
This free software is supplied under the following terms:
1. You may distribute the original source code to others at no charge.
2. You may modify the original source code and distribute it to others at
no charge. The modified code must be documented to indicate that it is
not part of the original package.
3. You may use this code for non-commercial purposes. You may also
incorporate this code into commercial packages. However, you may not
sell any of your source code which contains my original and/or modified
source code (see items 1 and 2). In such a case, you would need to
factor out my code and freely distribute it.
4. The original code comes with absolutely no warranty and no guarantee is
made that the code is bug-free.
* qhull is Copyright (c) 1993 by The National Science and Technology
Research Center for Computation and Visualization of Geometric Structures
(The Geometry Center), University of Minnesota.
This software is copyrighted as noted above. It is free software and
may be obtained via anonymous ftp from geom.umn.edu. It may be freely
copied, modified, and redistributed under the following conditions:
1. All copyright notices must remain intact in all files.
2. A copy of this file (COPYING) must be distributed along with any
copies which you redistribute; this includes copies which you have
modified, or copies of programs or other software products which
include this software.
3. If you modify this software, you must include a notice giving the
name of the person performing the modification, the date of
modification, and the reason for such modification.
4. When distributing modified versions of this software, or other
software products which include this software, you must provide
notice that the original source code may be obtained as noted
above.
5. There is no warranty or other guarantee of fitness for this
software, it is provided solely "as is". Bug reports or fixes may
be sent to
[email protected]; the authors may or may not act
on them as they desire.
* reduce is Copyright (c) 1997 by Graham Barr. Same license as below.
* The rest (perl modules, xs, MapOverlay, Boolean, ...) is
Copyrighted (c) 1999 by Reini Urban.
This is free software; you can redistribute it and/or modify it under
the same terms as Perl itself.
* polytri is in the public domain.
URL'S
Perl Module:
ftp://xarch.tu-graz.ac.at/pub/autocad/urban/perl/
http://www.perl.com//CPAN/authors/id/RURBAN/
Delaunay:
http://www.magic-software.com
polytri:
http://www.cs.unc.edu/~dm/CODE/GEM/chapter.html
triangle:
http://www.cs.cmu.edu/~quake/triangle.research.html
More:
http://www.geom.umn.edu/software/cglist/trap.html
LAST CHANGED
2000-01-11 02:16