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

Documentation
An orientable primitives (Figure 10) are those that can be mirrored into new geometric objects in terms of their internal local coordinate systems (manifold charts). For curves, the orientation reflects the direction in which the curve is traversed, that is, the sense of its parameterization. When used as boundary curves, the surface being bounded is to the "left" of the oriented curve. For surfaces, the orientation reflects from which direction the local coordinate system can be viewed as right handed, the "top" or the surface being the direction of a completing z-axis that would form a right-handed system. When used as a boundary surface, the bounded solid is "below" the surface. The orientation of points and solids has no immediate geometric interpretation in 3-dimensional space.
GM_OrientablePrimitive objects are essentially references to geometric primitives that carry an "orientation" reversal flag (either "+" or "-") that determines whether this primitive agrees or disagrees with the orientation of the referenced object.
NOTE There are several reasons for subclassing the "positive" primitives under the orientable primitives. First is a matter of the semantics of subclassing. Subclassing is assumed to be a "is type of" hierarchy. In the view used, the "positive" primitive is simply the orientable one with the positive orientation. If the opposite view were taken, and orientable primitives were subclassed under the "positive" primitive, then by subclassing logic, the "negative" primitive would have to hold the same sort of geometric description that the "positive" primitive does. The only viable solution would be to separate "negative" primitives under the geometric root as being some sort of reference to their opposite. This adds a great deal of complexity to the subclassing tree. To minimize the number of objects and to bypass this logical complexity, positively oriented primitives are self-referential (are instances of the corresponding primitive subtype) while negatively oriented primitives are not.
Orientable primitives are often denoted by a sign (for the orientation) and a base geometry (curve or surface). The sign datatype is defined in ISO 19103. If "c" is a curve, then "<+, c>" is its positive orientable curve and "<-, c>" is its negative orientable curve. In most cases, leaving out the syntax for record "< , >" does not lead to confusion, so "<+, c>" may be written as "+c" or simply "c", and "<-, c>" as "-c". Curve space arithmetic can be performed if the curves align properly, so that:
For c, d : GM_OrientableCurves such that c.endPoint = d.startPoint then
( c + d ) ==: GM_CompositeCurve = < c, d >


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


Attributes
NameClassTypeInitial Value
orientationGM_OrientablePrimitiveSign 


Associations
NameMy RoleMy ClassOther RoleOther Element
OrientedproxyGM_OrientablePrimitiveprimitiveGM_Primitive
Interior tocontainingPrimitiveGM_PrimitivecontainedPrimitiveGM_Primitive
OrientedproxyGM_OrientablePrimitiveprimitiveGM_Primitive
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_OrientablePrimitiveGM_Primitive
--Not Named--GM_PrimitiveGM_Object


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