FastGEO is a library that contains a wide range of highly optimized computational
geometry algorithms and routines for many different types of geometrical
operations such as geometrical primitives and predicates, hull construction,
triangulation, clipping, rotations and projections.
FastGEO offers a concise, predictable, highly deterministic interface for
geometric primitives and complex geometric routines using the Object Pascal
language.
In the past it has been widely acknowledged by many computational
geometers that vectorized primitives are in general the most efficient and
highly optimized path for computational geometry solutions. Hence FastGEO's
primitives are mainly based around vector primitives that allow for seemingly
complex operations to be carried out with little computational over-head hence
allowing for high levels of efficiency in more complex algorithms which in
theory are composites of the provided geometric primitives.
FastGEO however does not provide an environment for arbitrary precision in
its calculations. The results rendered will only be as good as the floating
point processor's error rating. A user of the library if needed could in theory
modify FastGEO's routines to be forward error correcting, and allow for the
sampling of calculation errors, and hence allow for some corrective measures
to be undertaken. This is left to the end user of the library.
FastGEO as a library is not object oriented but rather structured, this is due
to the fact that many of the algorithms are tightly coupled with the data structures
they munge and hence would be computationally irresponsible to also have them endure
the over-heads of object orientation. However this doesn't mean FastGEO can't be
integrated into an object hierarchy. In fact for complex algorithms such as triangulation
and convex hulls it is recommended that an object oriented approach be taken and to
use the FastGEO library as a utilities library within the solution.
FastGEO provides an environment where mathematical theory regarding computational
geometry can be observed in the real-world using real-world data with little
fuss and computational overhead. This type of programming model in conjunction with
the usage of the object pascal language provide a good learning base for people
interested in computational geometry and its related fields.
The current version of FastGEO has the following capabilities:
2D/3D Orientation primitive
2D/3D Signed area and volume primitive
2D/3D Collinear and coplanar point determination
2D/3D Segment intersection detection
2D/3D Thick segment intersection detection
2D/3D Segment intersection point calculation
2D/3D Segment half point calculation
2D/3D Parallel segment determination
2D/3D Point to point Euclidean, Ley, Manhattan, Chebyshev and inverse Chebyshev distances
2D/3D Vertex angle calculation
2D/3D Geometric span
2D/3D Triangle, quadix, rectangle, circle and polygon area calculation
2D/3D Triangle, quadix, rectangle, circle and polygon perimeter calculation
Free use of the FastGEO computational geometry library is permitted under the guidelines and in accordance with the most current
version of the "Common Public License."
Current FastGEO Release Version
The current version of the FastGEO computational geometry library has been set at version 5.0.1(stable).
No new major release (aka version increment) will be made until the majority of the following
capabilities are implemented within the FastGEO frame-work:
An implementation of the graham scan algorithm used in calculating the convex hull
(or surrounding convex polygon) for a set of arbitrary points in 2D.