A collection of geometrically disjoint, simple primitives.
The boundary of complex objects.
A factory of complex geometric objects.
A geometric complex with an underlying core geometry that is isomorphic to a primitive.
A complex with all the geometric properties of a curve.
A separate class for composite point, included for completeness.
A complex with all the geometric properties of a solid.
A complex with all the geometric properties of a surface.
A geometric complex (
Complex) is a set of
primitive geometric objects (in a common coordinate system) whose interiors are disjoint.
Further, if a primitive is in a geometric complex, then there exists a set of primitives in
that complex whose point-wise union is the boundary of this first primitive.
A subcomplex of a complex is a subset of the primitives of that complex that is, in its own right, a geometric complex. A supercomplex of a complex is a superset of primitives that is also a complex. These definitions are essentially subset and superset with the added restriction that they must be a complex. A complex is maximal if it is a subcomplex of no larger complex.
The boundary of a geometric object in a geometric complex is a subcomplex of that complex. The simplest complex is a single point. The simplest 1-dimensional complex is a curve with its two end points. The simplest 2-dimensional complex is a surface with its boundary curve, and the curve's start and end points.
The underlying geometry of a complex is usually referred to as a "manifold". The structure of a complex organizes the geometry of the manifold into primitive elements, analogously to the way in which "charts" are organized by an "atlas" into a map of the world.
One way, but obviously not the only way, to generate a complex from a set of primitives is by beginning with those primitives and performing the following operations.
If two primitives overlap, then subdivide them, eliminating repetitions until there is no overlap.
Similarly, if a primitive is not simple, subdivide it where it intersects itself, eliminating repetitions until there is no overlap.
If a primitive is not a point, calculate its boundary as a collection of other primitives, using those already in the generating set if possible, and insert them into the complex.
Repeat previous steps until no new primitive is required.
Many systems have a concept of a universal face (for 2D) or universal solid
(for 3D). This is valid only in the case where the underlying space of the complex is an
unbounded Euclidean space. In this case, for 2D, the universal face is the surface in the
Complex that has only interior boundary rings (its exterior
one being the "point at infinity"). Analogously, in 3D, the universal solid is the one that
has only interior boundary shells. In bounded manifolds, such as the sphere, there is no point
at infinity, and all primitives are bounded. Without the Jordan Separation Theorem, all boundaries
are essentially interior boundaries. In other unbounded manifolds, such as a hyperbolic surface,
there may be more than one unbounded primitive. Since this specification does not directly address
these sorts of unbounded manifolds, the cardinality of some elements may require relaxing if this
specification were to be applied to such non-geographic manifolds. This specification does not
special case either the universal face or solid, and the relationship between them and their
boundaries are represented in the same manner as any other boundary relationship.
NOTE: A maximal complex could reasonably be considered a strong aggregation of its primitives depending on the internal semantics of the application. For this reason, the mechanism for the containment of
Primitives in a
Complexis left unspecified. In any case, once a
Primitiveis within a complex, or a
Complexis a subcomplex of a maximal
Complex, its boundary operation will not need to construct representative
Geometry, since by the definition of a complex, the objects needed to represent the boundary of the contained object will already exist, and only references to those objects are required by the
Geometry.getBoundary()method. Remember that the containment of
Complexin one another is a subset-superset association, while the containment of
Primitives in a
Complexis an element-set association.
Copyright © 1996–2023 Geotools. All rights reserved.