<<Type>> GM_Primitive {Analysis} derived from: GM_Object

Documentation
GM_Primitive (Figure 8) is the abstract root class of the geometric primitives. Its main purpose is to define the basic "boundary" operation that ties the primitives in each dimension together. A geometric primitive (GM_Primitive) is a geometric object that is not decomposed further into other primitives in the system. This includes curves and surfaces, even though they are composed of curve segments and surface patches, respectively. This composition is a strong aggregation: curve segments and surface patches cannot exist outside the context of a primitive.
NOTE Most geometric primitives are decomposable infinitely many times. Adding a centre point to a line may split that line into two separate lines. A new curve drawn across a surface may divide that surface into two parts, each of which is a surface. This is the reason that the normal definition of primitive as "non-decomposable" is not plausible in a geometry model - the only non-decomposable object in geometry is a point.
Any geometric object that is used to describe a feature is a collection of geometric primitives. A collection of geometric primitives may or may not be a geometric complex. Geometric complexes have additional properties such as closure by boundary operations and mutually exclusive component parts.
GM_Primitive and GM_Complex share most semantics, in the meaning of operations, attributes and associations. There is an exception in that a GM_Primitive shall not contain its boundary (except in the trivial case of GM_Point where the boundary is empty), while a GM_Complex shall contain its boundary in all cases. This means that if an instantiated object implements GM_Object operations both as GM_Primitive and as a GM_Complex, the semantics of each set theoretic operation is determined by the its name resolution. Specifically, for a particular object such as GM_CompositeCurve, GM_Primitive::contains (returns FALSE for end points) is different from GM_Complex::contains (returns TRUE for end points). Further, if that object is cast as a GM_Primitive value and as a GM_Complex value, then the two values need not be equal as GM_Objects.


Parent PackageGeometric primitiveAbstractYes
Export ControlPublicAccessLink Class forNone
Class KindNormalClassCardinalityn
Space ConcurrencySequential
PersistenceYes  


Operations
NameSignatureClass
boundaryGM_PrimitiveBoundary boundary ()GM_Primitive
GM_PrimitiveGM_Primitive GM_Primitive (GM_Envelope e)GM_Primitive
mbRegionGM_Object mbRegion ()GM_Object
representativePointDirectPosition representativePoint ()GM_Object
boundaryGM_Boundary boundary ()GM_Object
closureGM_Complex closure ()GM_Object
isSimpleBoolean isSimple ()GM_Object
isCycleBoolean isCycle ()GM_Object
distanceDistance distance (GM_Object geometry)GM_Object
dimensionInteger dimension (DirectPosition point = NULL)GM_Object
coordinateDimensionInteger coordinateDimension ()GM_Object
maximalComplexSet<GM_Complex> maximalComplex ()GM_Object
transformGM_Object transform (SC_CRS newCRS)GM_Object
envelopeGM_Envelope envelope ()GM_Object
centroidDirectPosition centroid ()GM_Object
convexHullGM_Object convexHull ()GM_Object
bufferGM_Object buffer (Distance radius)GM_Object


Associations
NameMy RoleMy ClassOther RoleOther Element
Interior tocontainingPrimitiveGM_PrimitivecontainedPrimitiveGM_Primitive
OrientedprimitiveGM_PrimitiveproxyGM_OrientablePrimitive
RealizationgeometryGM_PrimitivetopologyTP_Primitive
ComplexelementGM_PrimitivecomplexGM_Complex
CompositiongeneratorGM_PrimitivecompositeGM_Composite
--Not Named--elementGM_Object--Not Named--GM_Aggregate
SpatialCompositionspatialElementGM_Object--Not Named--CV_DomainObject
Coordinate Reference SystemobjectGM_ObjectCRSSC_CRS


Generalization Relationships
NameClassSupplier
--Not Named--GM_PrimitiveGM_Object


Realize Relationships
NameClassSupplier
--Not Named--GM_ObjectTransfiniteSet<DirectPosition>