: Public abstract <<type>> Class
Created: 4/10/2008 12:16:12 PM
Modified: 7/1/2008 2:06:29 PM
Project:
Advanced:
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.<br /></p><p>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.<br /></p><p>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.<br /></p><p>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.<br /></p>
Operation
Public
boundary():GM_PrimitiveBoundary
Details:
sequential
Public
GM_Primitive( e: GM_Envelope,
):GM_Primitive
Details:
sequential
Element Source Role Target Role
«type» GM_Primitive
Class  
Name: containedPrimitive
 
Name: containingPrimitive
 
Details:
The subelement is restricted to be contained upon the super element in question. <br /></p><p><br /></p><p>The dimension of the subelement must be less than that of the super element.<br /></p><p><br /></p><p>GM_Primitive<br /></p><p>dimension()  >  coincidentSubelement.dimension()+The "Interior To" association associates GM_Primitives which are by definition coincident with one another. This association will normally be empty when the GM_Primitives are within a GM_Complex, since in that case the boundary information is sufficient for most cases.<br /></p><p>GM_Primitive::coincidentSubelement [0..*] : Reference<GM_Primitive><br /></p><p>GM_Primitive::superElement [0..*]  : Reference<GM_Primitive><br /></p><p>This association is constrained by the set theory operators and dimension operators defined at GM_Object. <br /></p><p>GM_Primitive:<br /></p><p>superElement->includes(p: GM_Primitive) = GM_Object::contains(p)<br /></p><p>dimension() >= coincidentSubelement.dimension()<br /></p>
«type» TP_Primitive
Class  
Name: geometry
 
Name: topology
 
Details:
 
«type» GM_OrientablePrimitive
Class  
Name: primitive
 
Name: proxy
 
Details:
 
«type» GM_Composite
Class  
Name: generator
 
Name: composite
 
Details:
 
Element Source Role Target Role
«type» GM_Primitive
Class  
Name: containedPrimitive
 
Name: containingPrimitive
 
Details:
The subelement is restricted to be contained upon the super element in question. <br /></p><p><br /></p><p>The dimension of the subelement must be less than that of the super element.<br /></p><p><br /></p><p>GM_Primitive<br /></p><p>dimension()  >  coincidentSubelement.dimension()+The "Interior To" association associates GM_Primitives which are by definition coincident with one another. This association will normally be empty when the GM_Primitives are within a GM_Complex, since in that case the boundary information is sufficient for most cases.<br /></p><p>GM_Primitive::coincidentSubelement [0..*] : Reference<GM_Primitive><br /></p><p>GM_Primitive::superElement [0..*]  : Reference<GM_Primitive><br /></p><p>This association is constrained by the set theory operators and dimension operators defined at GM_Object. <br /></p><p>GM_Primitive:<br /></p><p>superElement->includes(p: GM_Primitive) = GM_Object::contains(p)<br /></p><p>dimension() >= coincidentSubelement.dimension()<br /></p>
«type» GM_Complex
Class  
Name: complex
 
Name: element
 
Details:
A GM_Primitive may be in several GM_Complexes. See Clause 6.6.2.This association may not be navigable in this direction, depending on the application schema. <br /></p><p>GM_Primitive::complex [0..*] : Reference<GM_Complex><br /></p>
Tag Value
persistence persistent
Details:
 
Constraint Type Status
dimension() >= cotainedPrimitive.dimension() Invariant Approved
Details:
 
Object Type Connection Notes
«type» GM_Solid Class Generalization  
«type» GM_OrientablePrimitive Class Generalization  
«type» GM_Point Class Generalization  
«type» GM_Object Class Generalization