Information technology — SEDRIS —
Part 1: Functional specification
7 DRM class constraints
7.1 Introduction
7.1.1 Topics
Table 7.1 lists the topics of this clause.
7.1.2 Description
This clause specifies the constraints that specify the rules for using
instances of the DRM classes. These constraints describe the allowable
behaviours and relationships beyond those specified by the allowable
association, component, and aggregate relationships.
7.2 Constraints
7.2.1 Overview
The constraints stated below specify the restrictions on field values and
associations that may apply when creating and modifying DRM class instances. Since many of these constraints apply to
multiple DRM classes, they are specified here and only referenced in
6.2 DRM class specifications.
7.2.2 Animation related
organizing principle
For every <DRM Animation
Related Geometry> instance A with N
<DRM Geometry Hierarchy>
components, the following shall hold:
- No <DRM Geometry
Hierarchy> instance shall appear more than once as a component of
A.
- For every <DRM Animation
Behaviour> component B of
A:
- The
beginning_frame field of B shall have a value in the
range 1..N.
- The
ending_frame
field of B shall have a value in the range
beginning_frame..N.
7.2.3
Characteristics of <DRM Property Table Reference>
For any <DRM Property Table Reference>
instance R specifying a <DRM Property
Table> instance T:
- T shall be a component of a
<DRM Data Table Library>
instance.
- T shall have a <DRM Axis>
component, the
axis_type of which corresponds to that specified by
R.
- The <DRM Axis> instance thus
specified shall have
axis_value_count
greater than or equal to (index_on_axis
+ 1), where
index_on_axis is that specified by R.
7.2.4 Colour mapping constraints
The colour_mapping
field of a <DRM Colour>
instance shall not be
empty.
In addition,
- The PRIMARY and SECONDARY
flags may only be used for DRM objects with <DRM Light Rendering
Properties> components.
- The PRIMARY_LIGHT_RENDERING_BEHAVIOUR flag may not be combined with any other
use of the
5.2.8.2 Colour_Mapping data type.
- The SECONDARY_LIGHT_RENDERING_BEHAVIOUR
flag may not be combined with any other use of the
5.2.8.2
Colour_Mapping data type.
7.2.5 Constraints on associates
DRM objects are constrained in taking associate DRM objects as follows:
- Let M be a <DRM Model>
instance.
- Let M have a <DRM Feature
Model> component F, and let
F1 be a
<DRM Feature
Representation> instance in the component tree of
F and T be a
<DRM Feature Topology>
instance in the component tree of F.
- F1 shall not associate to a
<DRM Feature
Representation> instance outside the component tree of
F.
- No <DRM
Feature Representation> instance outside the component tree
of F shall associate to
F1.
- F1 shall not associate to a
<DRM Feature Topology>
instance outside the component tree of F.
- No <DRM Feature
Topology> instance outside the component tree of
F shall
associate to F1.
- T shall not associate to a
<DRM Feature Topology>
instance outside the component tree of F.
- No <DRM Feature
Topology> instance outside the component tree of
F shall
associate to T.
- Let M have a <DRM Geometry
Model> component G, and let
G1 be a
<DRM Geometry
Representation> instance in the component tree of
G and T be a
<DRM Geometry Topology>
instance in the component tree of G.
- G1 shall not associate to a
<DRM Geometry
Representation> instance outside the component tree of
G.
- No <DRM
Geometry Representation> instance outside the component tree
of G shall associate to
G1.
- G1 shall not associate to a
<DRM Geometry Topology>
instance outside the component tree of G.
- No <DRM Geometry
Topology> instance outside the component tree of
G shall
associate to G1.
- T shall not associate to a
<DRM Geometry Topology>
instance outside the component tree of G.
- No <DRM Geometry
Topology> instance outside the component tree of
G shall
associate to T.
- Let M have both a <DRM
Feature Model> component F and a
<DRM Geometry Model>
component G. Let
F1 be a
<DRM Feature
Representation> instance in the component tree of
F and let G1
be a <DRM Geometry
Representation> instance in the component tree of
G.
- F1 shall not associate to a
<DRM Geometry
Representation> instance outside the component tree of
G.
- No <DRM
Geometry Representation> instance outside the component tree
of G shall associate to
F1.
- G1 shall not associate to a
<DRM Feature
Representation> instance outside the component tree of
F.
- No <DRM
Feature Representation> instance outside the component tree
of F shall associate to
G1.
- Let M have a <DRM Interface Template> component
T.
- For every <DRM Variable> instance
V in the component tree
of M, V shall associate exactly once with
T.
- If V is a <DRM Variable> instance that does not appear
in the component tree of M,
T shall not associate with
V.
- Let R be a <DRM
Environment Root> instance.
- Let R2 be a <DRM
Environment Root> instance,
where the
srf_context_info
of R does not match that of
R2.
- Let R have a <DRM Feature Hierarchy> component
F, and
let X be a <DRM Feature Representation> instance in
the component tree of F.
Let R2 have a <DRM Feature Hierarchy> component
F2, and
let X2 be a <DRM Feature Representation> instance in
the component tree of F2.
X shall not associate to
X2, and
X2 shall not associate to
X.
- Let R have a <DRM Geometry Hierarchy> component
G, and
let Y be a <DRM Geometry Representation> instance in
the component tree of G.
Let R2 have a <DRM Geometry Hierarchy> component
G2, and
let Y2 be a <DRM Geometry Representation> instance in
the component tree of G2.
Y shall not associate to
Y2, and
Y2 shall not associate to
Y.
- Let R have a <DRM Feature Hierarchy> component
F, and
let X be a <DRM Feature Representation> instance in
the component tree of F.
Let R2 have a <DRM Geometry Hierarchy> component
G2, and
let Y2 be a <DRM Geometry Representation> instance in
the component tree of G2.
X shall not associate to
Y2, and
Y2 shall not associate to
X.
- Let R have a
<DRM Interface Template> component
T.
- For every <DRM Variable> instance
V in the component tree
of R, V shall associate exactly once with
T.
- If V is a <DRM Variable> instance that does not appear
in the component tree of R,
T shall not associate with
V.
7.2.6 Constraints on components
DRM objects are constrained in taking component DRM objects as follows:
- Let M be a <DRM Model>
instance.
- Let T be a <DRM
Property Table> instance. If T appears in the component tree of
M, T shall
not appear in the component tree of a
<DRM Data Table Library>
instance.
- Let X be a <DRM
Property Grid> instance that is not a component of a
<DRM Data Table Library>
instance, where X appears in the component tree of
M.
- X shall not appear in the component tree of a
<DRM Model> instance other
than M.
- X shall not
appear in the component tree of a
<DRM Environment Root>
instance.
- Let V be a <DRM Variable> instance, where
V appears in the component tree of
M.
- V shall not appear in the component tree of a
<DRM Model> instance other than
M.
- V shall not appear in the component tree of
a
<DRM Environment Root> instance.
- M shall have a <DRM Interface Template>
component, which shall comply with
7.2.5 Constraints on associates.
- Let X be an instance of a class other than
<DRM Property Grid> or
<DRM Symbol>, where
X appears in the
component tree of M.
- X shall not appear in the component tree of a
<DRM Model> instance other
than M.
- X shall not appear in the component tree of a
<DRM Environment Root>
instance.
- Let R be a
<DRM Environment Root>
instance.
- Let T be a <DRM
Property Table> instance. If T appears in the component tree of
R, T shall
not appear in the component tree of a
<DRM Data Table Library>
instance.
- Let X be an instance of <DRM
Property Grid> that is not a component of a
<DRM Data Table Library>
instance, where X appears in the component tree of
R.
- X shall not appear in the component tree of a
<DRM Environment Root>
instance other than R.
- X shall not appear in the component tree of a
<DRM Model> instance.
- Let V be a <DRM Variable> instance, where
V appears in the component tree of
R.
- V shall not appear in the component tree of a
<DRM Model> instance other than
R.
- V shall not appear in the component tree of
a
<DRM Environment Root> instance.
- R shall have a <DRM Interface Template>
component, which shall comply with
7.2.5 Constraints on associates.
- Let X be an instance of a class other than
<DRM Property Grid> or
<DRM Symbol>, where
X appears in the
component tree of R.
- X shall not appear in the component tree of a
<DRM Model> instance.
- If X appears in the component tree of another
<DRM Environment Root>
instance R2, the
srf_context_info of
R2 shall match that of
R.
7.2.7 Contained edge constraints
The following constraints apply to instances of
<DRM Feature Volume>/<DRM
Geometry Volume>,
respectively:
- A <DRM Feature Volume>
instance V shall have the following
relationship with its associated
<DRM Feature Edge> instances, if any exist:
- At any feature topology level, if V is associated with any
<DRM Feature Edge> instance
E,
E shall lie completely within the external shell of
V, if any, and shall
not lie within any of the internal shells of V, if any.
- At feature topology levels 5 and higher, if a
<DRM Feature Edge> instance
E
lies within the boundaries of V,
E shall be associated with
V.
- At any feature topology level, if no
<DRM Feature Edge> instances
lie within its boundaries, V shall not be associated with any
<DRM Feature Edge> instances.
- A <DRM Geometry Volume>
instance V shall have the following relationship with its associated
<DRM Geometry Edge> instances, if
any exist:
- At any geometry topology level, if V is associated with any
<DRM Geometry Edge> instance
E, E shall lie completely within the interior of
V.
- At geometry topology levels 5 and higher, if a
<DRM Geometry Edge> instance
E lies completely within the interior of
V, E shall be associated with
V.
- At any geometry topology level, if no
<DRM Geometry Edge> instances
lie completely within its interior, V shall not be associated with any
<DRM Geometry Edge>
instances.
7.2.8 Contained node constraints
The following constraints apply to instances of
<DRM Feature Node>/<DRM
Geometry Node> that are contained within an instance of
<DRM Feature Face>/<DRM
Geometry Face> or <DRM Feature
Volume>/<DRM Geometry Volume>,
respectively.:
- A <DRM Feature Face>
instance F shall have the
following relationship with its associated <DRM
Feature Node> instances, if any exist.
- At any feature topology level, if F is
associated with any <DRM Feature Node> instance
N, N
shall lie within the external ring of F, if any, and shall not lie within
any of the internal rings of F, if any.
- At feature topology
levels 3 and higher, if a <DRM Feature Node> instance
N lies
within the boundaries of F,
N shall be associated with
F.
- At any feature topology level, if no
<DRM Feature Node> instances lie
within the boundaries of F,
F shall not be associated with any
<DRM Feature Node> instances.
- A <DRM Feature Volume> instance
V
shall have the following relationship with its associated <DRM Feature Node> instances, if
any exist.
- At any feature topology level, if V is associated with any
<DRM Feature Node> instance
N, N
shall lie completely within the external shell of
V, if any, and shall not
lie within any of the internal shells of V, if any.
- At feature
topology levels 5 and higher, if a <DRM Feature Node> instance
N lies
within the boundaries of V,
N shall be associated with
V.
- At any feature topology level, if no
<DRM Feature Node> instances lie
within the boundaries of V,
V shall not be associated with any
<DRM Feature Node> instances.
- A <DRM Geometry Face> instance
F
shall have the following relationship with its associated
<DRM Geometry Node> instances, if
any.
- At any geometry topology level, if F is associated with any
<DRM Geometry Node> instances
N,
N shall lie within the interior of
F.
- At geometry topology
levels 3 and higher, if a <DRM Geometry Node> instance
N
lies within the interior of F,
N shall be associated with
F.
- At any geometry topology level, if no
<DRM Geometry Node> instances lie
within the boundaries of F,
F shall not be associated with any
<DRM Geometry Node> instances.
- A <DRM Geometry Volume>
instance V shall have the following relationship with its associated
<DRM Geometry Node> instances, if
any exist.
- At any geometry topology level, if V is associated with any
<DRM Geometry Node> instance
N,
N shall lie within the interior of
V.
- At geometry topology
levels 5 and higher, if a <DRM Geometry Node> instance
N lies within the interior of
V, N shall be associated with
V.
- At any geometry topology level, if no
<DRM Geometry Node> instances lie
within the interior of V,
V shall not be associated with any
<DRM Geometry Node> instances.
7.2.9 Continuous LOD constraints
The following constraints apply:
- <DRM
Continuous LOD Related Geometry> instances can be used only in the
component tree
of a <DRM Environment
Root> instance.
- A <DRM Primitive
Geometry> instance that is within the component tree of a
<DRM
Continuous LOD Related Geometry> instance shall not have a <DRM Union Of Primitive
Geometry> component
7.2.10 Cylindrical structure
For a <DRM
Cylindrical Volume Extent> instance C, the following conditions shall
hold:
- The <DRM Reference
Vector> components of C shall be
perpendicular to one another, and shall comply with restrictions imposed in
the specification of the <DRM
Cylindrical Volume Extent> class on their
vector_type
field values.
- If a <DRM Reference
Vector> component of C specifies a <DRM
Location> subclass component L,
L shall be the <DRM Location 3D> instance specified by the
volume context in which C appears.
7.2.11 Distinct <DRM Geometric Centre>
If a <DRM Aggregate
Geometry> instance specifies more than one
<DRM Geometric Centre> component, each shall specify a different value for
its meaning field.
7.2.12 Distinct link objects
The following constraints apply to link objects:
- Under any single <DRM Aggregate
Feature> instance or <DRM Aggregate
Geometry> instance, the link objects (if any) shall have non-identical field
values or components, as appropriate. In the case of
<DRM
Separating Plane Related Geometry> instance, this constraint applies to the link
objects of the <DRM
Separating Plane Relations> components of the aggregate, as the
aggregate itself does not have link objects.
- Under any single topology hierarchy, whether a <DRM Feature Topology
Hierarchy> instance or a <DRM
Geometry Topology Hierarchy> instance, the link objects shall have non-identical field
values or components, as appropriate.
- Under any single model instance, whether a <DRM Feature Model Instance>
instance
or a <DRM Geometry Model
Instance> instance, the
index field values of the <DRM
Model Instance Template Index> link objects shall be distinct.
7.2.13 Distinct time significance
For any instance of <DRM
Transmittal Root> or <DRM
Environment Root>, no two <DRM
Base Time Data> components shall specify the same
time_significance value.
7.2.14 <DRM Classification
Data> constraints
For a <DRM Union of Features>
instance F:
- If F has a directly attached
<DRM Classification Data>
component, the
union_reason
field of F shall not have value
OTHER.
- If F has an inherited <DRM
Classification Data> component, the
union_reason
field of F shall not have value OTHER.
- Otherwise, the
union_reason
field of F shall have value OTHER.
For a <DRM Union of Geometry>
instance G:
- If G has a directly attached
<DRM Classification Data>
component, the
union_reason
field of G
shall not have value OTHER.
- If G has an inherited <DRM
Classification Data> component, the
union_reason
field of G
shall not have value OTHER.
- Otherwise, the
union_reason
field of G
shall have value OTHER.
7.2.15 <DRM Colour Table> size
For a given <DRM
Colour Table Group> instance G with
table_size = k, each <DRM Colour Table> component
T of
G shall have k <DRM Primitive
Colour> components. <DRM Colour
Table> components of a <DRM
Colour Table Group> instance are free to have different types of <DRM Primitive Colour>
components from other <DRM Colour
Table> components.
EXAMPLE Some components use <DRM Specular Colour> instances; some do not.
7.2.16 <DRM Conformal
Behaviour> constraints
For every <DRM Conformal
Behaviour> instance C, the following
constraints shall apply.
- Where C is a component of a
<DRM Geometry Hierarchy>
instance G, one of the following shall
apply:
- If G is part of the component
tree of a <DRM Environment
Root> instance, G shall be
specified within a context in which a
<DRM Reference Surface>
instance R applies, where the
(possibly qualified) classification of C
matches that of R.
- If G is part of the component
tree of a <DRM Model> instance
M, any
<DRM Geometry Model
Instance> instance or
<DRM Feature Model
Instance> instance that instantiates M
shall be specified in a context in which a
<DRM Reference Surface>
instance R applies, where the
(possibly qualified) classification of C
matches that of R.
- C shall not be a component of a
<DRM Geometry Hierarchy>
instance G that does not comply with
either a.1 or a.2.
- If C is a component of a
<DRM Point> instance
P, any
<DRM Union Of Primitive
Geometry> instance of which P is a
component shall comply with a.
- If C is a component of a
<DRM Vertex> instance
V, every
<DRM Union Of Primitive
Geometry> instance U for which
V appears in the component tree of
U shall comply with a.
7.2.17 <DRM Control Link>
constraints
For any given <DRM Control Link>
instance with one or more index fields containing non-zero values, there
shall be a corresponding <DRM Expression>
component that is referenced by each non-zero index field value.
For any <DRM Control Link>
instance containing an upper and lower bound index field both of whose values
are non-zero, the value produced by the
<DRM Expression> component for the lower bound shall be less than or
equal to the value produced by the <DRM
Expression> component for the upper bound.
7.2.18 <DRM Environment Root> SRF
Consider a <DRM
Transmittal Root> instance TR having one or more <DRM Environment Root>
instances as components:
- For TR, no two <DRM
Environment Root> instances may have identical SRF parameters.
- All <DRM Location> instances
appearing in the hierarchy rooted at a given <DRM Environment Root> instance
shall be specified within the SRF
of that <DRM Environment Root>
instance, unless such <DRM Location>
instances
fall within the scope of a DRM object that specifies its own SRF
, such as a <DRM Property Grid>
instance
or a <DRM Image Anchor> instance.
- No <DRM Location> instances
under a <DRM Environment Root>
instance
may be invalid within that SRF
; they shall be either valid
or extended.
7.2.19 <DRM Face Direction> levels 0 - 3
At feature topology levels 0 through 3, the
front field of <DRM Face Direction> shall
always be TRUE.
7.2.20 <DRM FeatureEdge> constraints
The following restrictions apply:
- The <DRM Location> instances within a <DRM Feature Edge> instance shall be
distinct; that is, no two <DRM Location>
instances may have the same position in space.
- <DRM
Feature Edge> instances may meet only at
<DRM
Feature Node> instances, and <DRM
Feature Face> instances may meet only along one or more <DRM
Feature Edge> instances.
- At feature topology level 2 or higher, no <DRM Feature Edge> instance may intersect with or
overlap another <DRM Feature Edge>
instance.
- At feature topology level 3, each <DRM
Feature Edge> instance forms part of the boundaries of exactly two <DRM Feature Face> instances.
- At feature topology level 4, at least one <DRM
Feature Edge> instance forms part of the boundary of more than two <DRM Feature Face> instances.
- At feature topology level 5, if a <DRM
Feature Edge> instance E is located within a
<DRM Feature Volume> instance
V,
E shall associate to
V.
7.2.21 <DRM Finite Element
Mesh> structure
For a <DRM Finite Element Mesh>
instance F with a <DRM Mesh Face Table>
component M, the following conditions shall hold:
- Each <DRM Vertex> component of
F
shall appear exactly once as a component of F.
- No two <DRM Vertex> components of
F
shall occupy the same position in space.
- If F has a <DRM Property Table>
component P such that
P’s <DRM
Classification Data> component classifies P as an
ECC_MESH_NODE_PROPERTY_SET, P shall be the only
<DRM Property Table component of
F that is so classified, and shall have the structure specified in the
definition of the <DRM Finite
Element Mesh> class for a <DRM
Property Table> instance of its classification.
- If F has a <DRM Property Table>
component P such that
P’s <DRM
Classification Data> component classifies P as an
ECC_MESH_FACE_PROPERTY_SET, P shall be the only
<DRM Property Table> component
of F that is so classified, and shall have the structure specified in the
definition of the <DRM Finite
Element Mesh> class for a <DRM
Property Table> instance of its classification.
- If F has a <DRM Property Table>
component P such that
P’s <DRM
Classification Data> component classifies P as an
ECC_MESH_SOLID_SET, P shall be the only
<DRM Property Table> component
of F that is so classified, and shall have the structure specified in the
definition of the <DRM Finite
Element Mesh> class for a <DRM
Property Table> instance of its classification.
- If F has a <DRM Property Table>
component P such that
P’s <DRM
Classification Data> component classifies P as an
ECC_MESH_SOLID_PROPERTY_SET, P shall be the only
<DRM Property Table> component
of F that is so classified, and shall have the structure specified in the
definition of the <DRM Finite
Element Mesh> class for a <DRM
Property Table> instance of its classification.
7.2.22 <DRM Image Anchor> SRF
Consider a <DRM
Image Anchor> instance X.
- The <DRM Location>
components of X shall be valid or extended as allowed by the SRF specified
by the
srf_context_info field
of X.
- The <DRM Location>
components of X shall specify distinct coordinate values that shall not be
collinear.
- X shall be either a component of one or more <DRM Image> instances or of one or more <DRM Image Mapping Function>
instances, but not both.
- If X is a component of a <DRM
Image Mapping Function> instance F, and if
F appears within the context
of some SRF
S, the following shall apply.
- The
srf_context_info
field of X shall specify the same SRF as
S.
- If X specifies a non-planar projection, the
<DRM Location> components of
X
shall specify the endpoints of orthogonal axes.
7.2.23 <DRM Linear Geometry>
structure
For a <DRM
Linear Geometry> instance G, the following conditions shall hold:
- Each <DRM Vertex> component of
G
shall appear exactly once as a component of G.
- No two <DRM Vertex> components of
G
shall occupy the same position in space.
- If G is a <DRM Arc> instance, the
<DRM Location> component of
G
shall not occupy the same position in space as any of the
<DRM Vertex> components of
G.
- For any <DRM Geometry Edge>
instance E associated with
G, the
<DRM Geometry Node> instances forming the endpoints of
E shall be
associated with <DRM Vertex> components
of G.
7.2.24 <DRM LSR Transformation> components
A <DRM LSR
Transformation> instance L shall have a <DRM Local 4x4> component, an ordered set of
<DRM LSR Transformation Step>
components, or both. If L has both a <DRM
Local 4x4> component and a set of
<DRM LSR Transformation Step>
components, the ordered set of
<DRM LSR Transformation Step>
components
shall be mathematically equivalent to the <DRM
Local 4x4> component. If a <DRM LSR
Transformation> instance is specified by a <DRM Local 4x4> component only, it
shall be possible to express the <DRM LSR
Transformation> instance as an ordered set of
<DRM LSR Transformation Step>
components.
7.2.25 <DRM Model> SRF
The following constraints apply:
- Consider a <DRM Model>
instance M specified in an SRF other than LSR.
- M shall be instanced only by
<DRM Geometry Model
Instance> and/or <DRM
Feature Model Instance> instances specified in a matching SRF, and
- The
has_moving_parts field of
M shall be set to
FALSE.
- Consider a <DRM Model> instance
M
specified in an LSR SRF.
- If the has_units field of
M is set to
FALSE, M shall not be referenced by any
<DRM Geometry Model
Instance> or <DRM
Feature Model Instance> instances.
- If M is to be instanced into a non-LSR SRF by any
<DRM Geometry Model
Instance> or <DRM
Feature Model Instance> instances, each such <DRM Geometry Model
Instance> instance and <DRM
Feature Model Instance> instance shall specify a <DRM World Transformation>
instance.
- M cannot be instanced into another LSR SRF
unless the target SRF has identical parameters to the
parameters of M
or the <DRM Geometry Model
Instance>
instance or <DRM
Feature Model Instance> instance that references
M contains a <DRM
Transformation> component that maps the SRF of
M into the target SRF.
- If the component hierarchy of M contains any
<DRM LSR Transformation>
instances that have <DRM Control
Link> instances, and if M provides controlling <DRM Variable> instances to those <DRM Control Link> instances such
that they allow motion, the
has_moving_parts
field of M shall be set to TRUE;
otherwise, the
has_moving_parts
field of M shall be set to FALSE.
- M shall not contain any
<DRM Reference Surface>
instances.
- All <DRM Location> instances
under a <DRM Model> instance shall be expressed
in the SRF specified by that <DRM
Model> instance.
7.2.26 <DRM Polyhedron> structure
The collection of <DRM Polygon>
components of a <DRM Polyhedron>
instance shall completely enclose a region of 3D space.
7.2.27 <DRM Presentation
Domain> constraints
The following constrains the use of
<DRM Presentation Domain>
instances:
- In a given transmittal, every instance of
<DRM Colour>,
<DRM Image Mapping Function>,
and <DRM Rendering Properties>
shall specify a <DRM
Presentation Domain> component, whether directly or through inheritance.
- In a given transmittal, every instance of
<DRM Image> that specifies a <DRM
Image Anchor> component shall specify a
<DRM Presentation Domain>
component.
- Let X be a DRM object such that
X has
<DRM Image Mapping Function>
components F1 and
F2. F1
shall specify a <DRM Presentation Domain>
component P1 and
F2 shall specify a
<DRM Presentation Domain>
component P2 such that the presentation
domain sets of P1 and
P2 do not intersect.
- Let X be a DRM object such that
X has <DRM
Colour> components F1 and
F2. F1 shall specify a
<DRM Presentation Domain>
component P1 and
F2 shall specify a
<DRM Presentation Domain>
component P2 such that the presentation domain sets of
P1 and P2 do not
intersect.
- The
presentation_domain field of a
<DRM Presentation Domain>
instance shall not be empty.
7.2.28 <DRM Primitive Summary
Item> constraints
The following constraints apply:
- An instance of <DRM
Primitive Summary Item> shall have a
drm_class
field value corresponding to one of the following:
- <DRM Primitive Feature>
or one of its subclasses,
- <DRM Primitive
Geometry> or one of its subclasses, or
- classes that may legally appear in the component tree of a <DRM Primitive Feature>
or <DRM Primitive Geometry>
instance.
- For any <DRM
Primitive Summary Item>
instance B that is a component of another
<DRM Primitive Summary Item>
instance A, the
drm_class
represented by B shall be specified
as a formal component of A, and the multiplicity of
B shall comply with the corresponding
component relationship between the two classes.
- For any <DRM
Primitive Summary Item> component S of a
<DRM Environment Root>
instance ER, where the
drm_class
field corresponds to a class P, the component
tree of ER shall contain at least one instance of
P, in its
<DRM Feature Hierarchy>
instance and/or its
<DRM Geometry Hierarchy>
instance, such that the component tree of the instance of
P conforms with the
pattern specified by S.
- For any <DRM
Primitive Summary Item> component S of a <DRM
Model> instance M, where the
drm_class
field corresponds
to a class P, the component tree of
M shall contain at least one instance of
P, in the <DRM Feature Hierarchy>
instance of
its <DRM Feature Model>
instance and/or the <DRM Geometry Hierarchy>
instance of its
<DRM Geometry Model>
instance,, such that the component tree of the instance of
P conforms with the
pattern specified by S.
- An empty
<DRM Model> cannot
have <DRM Primitive Summary
Item> components.
7.2.29 <DRM Property> constraints
For every <DRM Property>
instance P, the following shall hold.
If P is a <DRM Property Value>
instance, the attribute_value_type of the
value
field of P shall be consistent with the storage type imposed by the
meaning
field of P.
No two directly attached <DRM
Property Value> components of a DRM object may specify identical values
for their
meaning fields.
If an inherited <DRM Property
Value> instance has the same
meaning field
value as a directly attached <DRM
Property Value> instance, the directly attached component replaces the
inherited component in the inheritance context.
-
No two directly attached <DRM
Property Description> components of a DRM object may specify identical
values for their
meaning fields.
If an inherited <DRM
Property Description> instance has the same
meaning field value
as a directly attached <DRM
Property Description> instance, the directly attached component replaces
the inherited component in the inheritance context.
7.2.30 <DRM Property Characteristic> constraints
Consider a <DRM
Property Characteristic> instance C and a DRM object
P such that C is a
component of P, where
P is a <DRM Property>
instance or a <DRM Table
Property Description> instance.
- The attribute_value_type entry of the
characteristic_value
field of C shall correspond to the value
type imposed by the meaning field of
P, except in the
case where the meaning field of
P specifies an EA
bound to the abstract value type ENUMERATION and
the
meaning
field of C specifies one of the qualitative EVs
EVC_NOT_APPLICABLE, EVC_MISSING,
EVC_VALUE_WITHHELD,
EVC_MULTIPLE, or EVC_UNDESIGNATED. In that
case, C shall be bound to the abstract value type INTEGER
with a
characteristic_value
that does not correspond to the numeric value of a valid EE for the given
EA.
- If the attribute_value_type entry of the
characteristic_value
field of C is not numeric,
C shall not have an EV with an applicability of
numeric as its
meaning.
- If C is not real valued, it shall not have EVC_TOLERANCE
as its meaning.
- Consider another, distinct <DRM
Property Characteristic> instance C2 that is also a component of
P.
- The
meaning field values of
C and C2 shall be distinct.
- If C specifies EVC_MINIMUM_VALUE and
C2 specifies
EVC_MAXIMUM_VALUE,
the
characteristic_value
of C shall be less than or equal to
that of C2.
7.2.31 <DRM Property Grid>
constraints
Let G be a
<DRM Property Grid> instance.
G shall not be a component of a
<DRM Data Table Library>
instance unless the
relative_to_hook_point field of G
is TRUE.
7.2.32 <DRM Property Set Table> size
For a given <DRM
Property Set Table Group> instance G with
table_size =
k, each <DRM Property Set Table>
component T of G shall have k <DRM
Property Set> components.
For any given T within
G, if the
regular field of
T has value
TRUE, each of the k <DRM Property Set> components of T
shall contain the same number of DRM class instances, and these DRM class
instances shall belong to the same classes. If the
regular field has value
FALSE for T, no such constraint holds.
NOTE
G may have both regular and non-regular <DRM Property Set Table>
components, and that even if all <DRM Property Set Table>
components of
G are regular, there is no constraint that
they are all regular in the same way.
7.2.33 <DRM Reference
Surface> constraints
Consider a <DRM Reference Surface>
instance R.
- R shall appear in the context of a 3D SRF.
- R shall not appear in the component tree of any
<DRM Model> instance specified in an LSR
SRF.
- Let S be the <DRM
Geometry Hierarchy> instnace to which R is associated such that
S
specifies the reference surface of R.
- The SRF within which S is specified shall match that within which
R
is specified, unless S is a
<DRM Property Grid
Hook Point> instance.
- If S is a <DRM
Property Grid Hook Point> instance, S shall have at least one
<DRM Property Grid> component
G such that the following apply.
- The SRF within which S is specified shall match that specified
by G.
- G shall have two spatial <DRM
Axis> components corresponding to the primary and secondary
coordinates of the SRF specified by G.
- G shall have a
<DRM Table
Property Description> component for height, elevation, or
bathymetry.
- The qualified classification specified by
G shall match that
specified by R.
- If S is a <DRM LOD
Related Geometry> instance, the
lod_data_type field of S shall not have the value
VOLUME.
7.2.34 <DRM Stamp Behaviour> constraints
A <DRM Stamp Behaviour> instance
shall be specified only within the context of an LSR 3D SRF.
7.2.35 <DRM Table
Property Description> constraints
For a <DRM Table Property
Description> instance P, the following conditions shall hold:
- Its
value_type field and those
of the corresponding elements of any applicable
<DRM Data Table> instances shall
be consistent with the restrictions imposed by the
meaning field of
P.
- If P specifies a real-valued EA or real-valued
Variable_Code M as its
meaning field value,
the
value_unit of
P shall specify a unit belonging
to the EDCS Unit Equivalence class to which M is bound.
- If P does not specify a real-valued EA or real-valued
Variable_Code as its
meaning field value,
the
value_unit and
value_scale
shall be set to EUC_UNITLESS and
EUC_UNI, respectively.
7.2.36 Edges bordering faces
<DRM Feature
Edge> instances have the following relationship with <DRM Feature Face> instances:
- At any feature topology level, if a <DRM Feature Edge>
instance E associates to a <DRM Feature
Face> instance F,
F shall have a <DRM Feature Face
Ring> component that associates to E.
- At feature topology level 3 or higher, if a
<DRM Feature
Face> instance F has a
<DRM Feature Face
Ring> component that associates to a
<DRM Feature Edge> instance
E, E
shall associate to F.
<DRM Geometry Edge> instances have
the following relationship with <DRM
Geometry Face> instances:
- At any geometry topology level, if a <DRM Geometry
Edge> instance E associates to a <DRM Geometry Face>
instance F,
F shall associate to E.
- b. At geometry topology level 3 or higher, if a <DRM Geometry Face>
instance F associates to a <DRM Geometry
Edge> instance E, E
shall associate to F.
7.2.37 Face ring edge consistency
The following constraints apply:
- For each consecutive <DRM
Feature Edge> instance within a <DRM
Feature Face Ring> instance, and for each consecutive <DRM Geometry Edge> instance within a
<DRM
Geometry Face> instance,
the <DRM Edge Direction>
instance
shall be consistent with the starting and ending nodes of the edge.
- A <DRM
Feature Edge> instance shall appear no more than twice in a <DRM Feature Face Ring>
instance, once
with each orientation.
- A <DRM Geometry Edge>
instance
shall appear no more than twice in a <DRM
Geometry Face> instance, once with each orientation.
7.2.38 Faces bordering volumes
<DRM Feature Face> instances shall
have the following relationship with
<DRM Feature Volume> instances. At any topology level, if a
<DRM Feature Face> instance
FF
associates to a <DRM Feature Volume>
instance FV, FV shall have a <DRM
Feature Volume Shell> component that associates to
FF. Conversely, if a
<DRM Feature Volume> instance
FV has
a <DRM Feature Volume Shell>
instance that associates to a <DRM Feature
Face> instance FF,
FF shall also associate to
FV.
<DRM Geometry Face> instances
shall have the following relationship with
<DRM Geometry Volume> instances. At
any topology level, if a <DRM Geometry
Face> instance GF associates to a <DRM
Geometry Volume> instance GV,
GV shall also associate to
GF. Conversely, if
a <DRM Geometry Volume> instance
GV
associates to a <DRM Geometry Face>
instance GF, GF shall also associate to
GV.
7.2.39 General axis constraints
The following constraints apply:
- In a <DRM Enumeration
Axis> instance X,
- The
axis_type
of X shall correspond to an EA
T bound to the abstract value type
ENUMERATION.
- The entries of X’s
axis_value_array
shall be distinct and valid EEs for T.
- In a <DRM Interval Axis>
instance X,
- The
axis_type shall correspond to an EA bound to a numeric value type.
- Each individual entry in X’s
axis_interval_value_array
shall have a value_type consistent with the
numeric data type to which the value of the
axis_type is bound, and this value_type
shall be the same for all entries in the
axis_interval_value_array.
- If the
axis_type is bound to an EQ, the
value_unit shall
be a member of the specified EQ.
- If the
axis_type is not bound to an EQ,
the
value_unit and
value_scale shall be set to EUC_UNITLESS
and ESC_UNI, respectively.
- All entries in X’s
axis_interval_value_array
shall be mutually disjoint.
- The entries in X’s
axis_interval_value_array
shall be arranged in either monotonically ascending or monotonically descending
order.
- In a <DRM Irregular Axis>
instance X,
- The
axis_type shall correspond to an EA bound to a numeric value type.
- Each individual entry in X’s
axis_value_array shall have a
value_type consistent with the numeric data type
to which the
axis_type's value is bound, and this value_type
shall be the same for all entries in the
axis_value_array.
- If the
axis_type is bound to an EQ, the
value_unit shall
be a member of the specified EQ.
- If the
axis_type is not bound to an EQ,
the
value_unit and
value_scale shall be set to EUC_UNITLESS
and ESC_UNI, respectively.
- All entries in X’s
axis_value_array
shall be distinct.
- The entries in X’s
axis_value_array
shall be arranged in either monotonically ascending or monotonically descending
order.
- In a <DRM Regular Axis>
instance X,
- The
axis_type shall correspond to an EA bound to a numeric value type.
- The value_type of the
first_value and
spacing field values
shall be the same, and shall be consistent with the numeric data type to
which the value of the
axis_type is bound.
- If the
axis_type is bound to an EQ, the
value_unit shall
be a member of the specified EQ.
- If the
axis_type is not bound to an EQ,
the value_unit and
value_scale shall be set to EUC_UNITLESS
and ESC_UNI, respectively.
7.2.40 Hierarchy summary constraints
The following constraints apply:
- An instance of <DRM
Hierarchy Summary Item> shall have a
drm_class field value corresponding
to one of the following:
- <DRM Feature
Hierarchy> or one of its subclasses, or
- <DRM Geometry
Hierarchy> or one of its subclasses.
- For any <DRM
Hierarchy Summary Item> instance B that is a component of another
<DRM Hierarchy Summary Item>
instance A, the class represented by B’s
drm_class field value shall be specified
as a formal component of A, and the
multiplicity and
multiplicity_meaning of B
shall comply with the corresponding component relationship between the two
classes.
- Consider a <DRM Environment
Root> instance E,
- If E has a <DRM Geometry
Hierarchy> component H, E shall have at most one
<DRM Hierarchy Summary Item>
component S for which the
drm_class field corresponds to a
<DRM Geometry Hierarchy> subclass.
If such a component instance S exists, its field values shall comply with
the following constraints:
- S’s
drm_class shall match that of H.
- S’s
multiplicity_meaning value
shall be EXACT, and its
multiplicity
field shall have value 1.
- If E does not have a <DRM
Geometry Hierarchy> component, E shall not have any
<DRM Hierarchy Summary Item>
component for which the
drm_class field corresponds to a
<DRM Geometry Hierarchy>
subclass.
- If E has a <DRM Feature
Hierarchy> component H, E shall have at most one
<DRM Hierarchy Summary Item>
component S for which the
drm_class field corresponds to a
<DRM Feature Hierarchy>
subclass. If such a component instance S exists, its field values shall
comply with the following constraints:
- S’s
drm_class shall match that of H.
- S’s
multiplicity_meaning value shall be
EXACT, and its
multiplicity
field
shall have value 1.
- If E does not have a <DRM
Feature Hierarchy> component, E shall not have any
<DRM Hierarchy Summary Item>
component for which the
drm_class field corresponds to a
<DRM Feature Hierarchy>
subclass.
- Consider a <DRM Model> instance M.
- If M has a <DRM Geometry
Model> with a <DRM
Geometry Hierarchy> component H, M shall have at most one
<DRM Hierarchy Summary Item>
component S for which the
drm_class field corresponds to a
<DRM Geometry Hierarchy>
subclass. If such a component instance S exists, its field values shall
comply with the following constraints.
- S’s
drm_class shall match that of H.
- S’s
multiplicity_meaning value shall be
EXACT, and its
multiplicity
field
shall have value 1.
- If M does not have a <DRM Geometry Model> component, or its
<DRM Geometry Model> does not have a
<DRM
Geometry Hierarchy> component, M shall not have any
<DRM Hierarchy Summary Item>
component for which the
drm_class field corresponds to a
<DRM Geometry Hierarchy>
subclass.
- If M has a <DRM Feature
Model> instance with a <DRM Feature
Hierarchy> component H, M shall have at most one
<DRM Hierarchy Summary Item>
component S for which the
drm_class field corresponds to a
<DRM Feature Hierarchy>
subclass. If such a component instance S exists, its field values shall
comply with the following constraints.
- S’s
drm_class shall match that of H.
- S’s
multiplicity_meaning value shall be
EXACT, and its
multiplicity
field
shall have value 1.
- If M does not have a <DRM Feature
Model> component, or its <DRM Feature
Model> does not have a <DRM
Feature Hierarchy> component, M shall not have any
<DRM Hierarchy Summary Item>
component for which the
drm_class field corresponds to a
<DRM Feature Hierarchy>
subclass.
- All <DRM Geometry
Hierarchy> associates (or
<DRM
Feature Hierarchy> associates) of a given
<DRM Hierarchy Summary Item>
instance shall be instances of the class specified by its
drm_class
field value, and shall conform to the structure that it specifies.
7.2.41
Homogeneous light rendering properties
A <DRM
Light Rendering Properties> instance may contain instances of only one
subclass of <DRM Directional Light
Behaviour>.
7.2.42 Image mapping functions
and texture coordinates
The number of
<DRM Image Mapping Function>
components that an instance of
<DRM Geometry Representation> has shall
be equal to the number of <DRM Texture
Coordinate> instances for each <DRM Vertex>
instance and <DRM Tack Point>
instance within that instance of
<DRM Geometry Representation>.
<DRM Image
Mapping Function> instances for instances of
<DRM
Feature Representation> shall either have <DRM Image Anchor> components or
specify <DRM Image> instances that have <DRM Image Anchor> components.
EXCEPTION:
If a <DRM Image Mapping
Function> instance is used to specify a non-planar projection (e.g., spherical
or cylindrical) it shall use a <DRM Image
Anchor> component and the instance of
<DRM Geometry Representation>
to which the <DRM Image
Mapping Function> instance is attached cannot have <DRM Texture Coordinate>
instances or a <DRM Tack Point>
instance.
7.2.43 Index codes within tables
The following constraints apply:
Consider a <DRM Data Table>
instance D, with a <DRM Table Property
Description> component X, where X has a meaning value of
DATA_TABLE_LIBRARY.
For each corresponding cell value
C in the <DRM Data Table> instance D, if
C
is not a sentinel value for missing or excluded, C is an index into the ordered
set of <DRM Data Table>
components of a <DRM Data Table
Library> instance where:
- The transmittal in which the <DRM
Data Table> instance D resides shall have a <DRM Data Table Library>
instance L.
- L shall have at least N ordered <DRM Data Table> components.
- The Nth <DRM Data Table>
component of L shall have a <DRM
Classification Data> instance whose
tag field
matches the component_data_table_ecc field of the <DRM Table Property
Description> instance X, as follows:
- If the <DRM
Classification Data> instance of the referenced Nth <DRM Data Table> instance has no
<DRM Property Value> components, the <DRM Table Property
Description> instance X shall have none.
- If the <DRM
Classification Data> instance of the referenced Nth <DRM Data Table> instance has j
<DRM Property Value> components, the <DRM Table Property
Description> instance X shall have exactly j matching <DRM Property Value> instances.
- Consider a <DRM Data Table>
instance D, with a <DRM Table Property
Description> components X, where
X has a meaning Index_Code
value of DATA_TABLE_COMPONENT.
For each corresponding cell value
C in the <DRM Data Table> instance
D, if C
is not a sentinel value for missing or excluded, C is an index into the ordered
set of <DRM Data Table>
components of D, where:
- The <DRM Data Table>
instance D
shall have at least N ordered <DRM Data
Table> components.
- The Nth <DRM Data Table>
component of D shall have a <Classification Data>
instance whose
tag field matches the
component_data_table_ecc
field
of the <DRM Table
Property Description> instance X, as follows:
- If the <DRM
Classification Data> instance of the referenced Nth <DRM Data Table> instance has no
<DRM Property Value> component, the <DRM Table Property
Description> instance X shall have none.
- If the <DRM
Classification Data> instance of the referenced Nth <DRM Data Table> instance has j
<DRM Property Value> components the <DRM Table Property
Description> instance X shall have exactly j matching <DRM Property Value> instances.
Consider a <DRM Data Table>
instance D, with a <DRM Table Property
Description> component X, where
X has a meaning Index_Code value of
PROP_TABLE_REF_COMPONENT.
For each corresponding cell value
C in the <DRM Data Table> instance
D, if C
is not a sentinel value for missing or excluded, C is an index into the ordered
set of <DRM Property Table
Reference> components of D, where:
- The <DRM Data Table>
instance D
shall have at least N ordered <DRM
Property Table Reference> components.
- The Nth <DRM
Property Table Reference> component of D shall refer to a <DRM Property Table> instance whose <DRM Classification Data>
instance with a
tag field that matches the
component_data_table_ecc
of the <DRM
Table Property Description> instance X, as follows:
- If the <DRM
Classification Data> of the referenced <DRM Property Table> has no
<DRM Property Value>
components,
the <DRM Table Property
Description> instance X shall have none.
- If the <DRM
Classification Data> instance of the referenced <DRM Property Table> instance has
j <DRM Property Value>
components,
the <DRM Table Property
Description> instance X shall have exactly j matching <DRM Property Value> instances.
- A <DRM
Table Property Description> instance that is not covered by b, c, or d above
shall have ECC_OBJECT
as its
component_data_table_ecc value.
- Consider a <DRM Data Table>
instance D, with a <DRM Table Property
Description> component X where
X has
meaning
specified by an EAC. If X has <DRM Property
Value> components, they qualify the
meaning
value of
X.
- A <DRM Table
Property Description> instance that is not covered by b, c, d, or f
above shall have no <DRM Property
Value> components.
Consider a <DRM Data Table>
instance D, with a compon