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 component <DRM Table Property
Description> instance X, where
X has a meaning
Index_Code value of IMAGE_MAPPING_FUNCTION.
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 Image Mapping
Function> components of D, where the <DRM
Data Table> instance D shall have at least N ordered <DRM Image Mapping Function>
components.
7.2.44 Inheritance rule for <DRM
Location>
Given any DRM object that has a <DRM
Location> component, that <DRM
Location> component (or the first <DRM
Location> component in an ordered list of <DRM
Location> components) becomes the (default) <DRM Location> component in the context for the
component tree stemming from that DRM object.
7.2.45 LOD related organizing principle
For any level of detail related organization L, whether an instance of
<DRM LOD
Related Features> or <DRM
LOD
Related Geometry>, the following applies:
- The instance of
<DRM Base
LOD Data> for each branch of L shall match the class
specified by L’s lod_data_type field.
- For each pair of branches with <DRM Distance
LOD Data> or <DRM Volume
LOD Data> instances that overlap, neither shall be a subset of the other,
as follows:
- For instances of <DRM Distance
LOD Data>, neither interval shall be contained within the other. Specifically:
- The ranges may touch at their endpoints; that is, the
minimum_range of
one may equal the
maximum_range of the other.
- If the ranges overlap by more than one endpoint, each shall have at
least one fade band, so that one is fading in while the other is fading out for
the overlap range.
- For instances of <DRM Volume
LOD Data>:
- If the two branches both have
outside = FALSE,
neither volume may be contained within the other.
- The volumes specified may be identical if the link objects specify
different values for their outside fields, provided that
L complies with the
constraint specified in 7.2.10 Distinct link objects.
- If L inherited a <DRM Base
LOD Data> instance C as a component, such that
C
matches its lod_data_type, L’s link objects shall
fall within the scope specified by C:
- If C is a <DRM Distance
LOD Data> instance and L is of type DISTANCE,
each link object specified by L shall specify a range within the region covered by
C.
- If C is a <DRM Volume
LOD Data> instance and L is of type VOLUME,
each link object specified by L shall specify a volume lying within that of
C.
- No other classes of C permit a matching
L to occur in their inheritance tree.
7.2.46 Mandatory metadata
Table 7.2 lists
metadata classes. When these classes are instanced, at least the designated
fields shall be populated.
Table 7.2 — Mandatory metadata
Metadata DRM class |
Constraint |
<DRM Browse Media>
|
The field name shall specify a non-empty string.
The field
media_urn shall be a valid URN.
|
<DRM Citation>
|
The field title shall be a non-empty string. If
a <DRM Citation> instance has
multiple <DRM Absolute Time>
components, their
time_significance field values
shall be distinct.
|
<DRM Identification>
|
The field
abstract shall be a non-empty string.
A <DRM Identification> instance that is
a <DRM Transmittal Root> component shall have
a <DRM Citation> component,
at least one <DRM Keywords> component,
at least one <DRM Responsible Party> component
through a <DRM Role Data> link object with
role =
POINT_OF_CONTACT,
and a <DRM Security Constraints> component.
|
<DRM Keywords>
|
No two <DRM Keywords> components
shall have distinct type codes. Within a given <DRM
Keywords> instance, the entries of the
keyword_array
field shall be distinct. |
<DRM Legal Constraints> |
If the
access_constraints
field is set to
OTHER_RESTRICTIONS,
the
other_constraints
field shall contain a non-empty
string specifying what those other restrictions are.
If the
use_constraints is
set to OTHER_RESTRICTIONS,
the
other_constraints
shall contain a non-empty
string specifying what those other restrictions are.
|
<DRM Lineage>
|
An instance of <DRM Lineage> shall specify at least
one of the following:
- a <DRM Process Step>
instance,
- a <DRM Source> instance,
and/or
- a non-empty string within its
statement field.
|
<DRM Process Step> |
The
description
field shall specify a non-empty string.
The <DRM Absolute Time> component shall have
time_significance
= OCCURRENCE.
If the <DRM Process Step> instance has
<DRM Responsible Party>
components, each corresponding
<DRM Role Data> link object
shall specify
role =
PROCESSOR.
|
<DRM Responsible Party>
|
Each email_address entry within
contact_information
shall specify a syntactically valid email address.
The linkage portion of the
online_resource entry within
contact_information
shall specify a syntactically valid URL.
The locale entry of each
String field (see
5.3.3.262 String) within a <DRM
Responsible Party> instance shall be specified using the same country
code as that specified by its address entry of
contact_information
except that the email_address entries shall be
syntactically valid email addresses (with locale values set accordingly).
At least one of the
following fields shall contain a non-empty string:
-
individual_name,
-
position_name, and/or
-
organization_name.
For a given DRM object with two <DRM Responsible Party>
components through <DRM Role Data> link objects specifying
identical role values, the
<DRM Responsible Party> components shall specify distinct
individual_name,
position_name, and/or
organization_name
fields.
For a given DRM object with two <DRM Responsible Party>
components having identical
individual_name,
position_name, and
organization_name
fields, the <DRM Responsible Party> components shall be specified
through <DRM Role Data> link objects specifying
distinct role values.
|
<DRM Security Constraints> |
If
classification has
a value other than
UNCLASSIFIED,
classification_system
field shall be a non-empty string.
|
<DRM Source>
|
The description field value shall be a non-empty string.
|
7.2.47 Model reference type constraints
The following constraints apply:
- If an instance of <DRM Model>
has model_reference_type value set to ROOT
or ROOT_AND_COMPONENT,
the name of the <DRM Model> instance shall
be unique in the scope of its aggregate <DRM
Model Library> instance.
- If an instance of <DRM Model>
has model_reference_type set to COMPONENT,
the following also apply:
- Any <DRM Geometry
Model Instance> or <DRM
Feature Model Instance> instance referencing that <DRM
Model> instance shall be in the scope of another <DRM
Model> instance;
- Its
dynamic_model_processing flag shall be FALSE.
7.2.48 Nested primitive geometry
When a <DRM Primitive
Geometry> instance contains a
<DRM Union Of Primitive
Geometry> instance, the resulting geometry shall lie on the surface of the
parent geometry.
Allowed nesting combinations are:
- <DRM Polygon> can nest:
<DRM Polygon>,
<DRM Ellipse>,
<DRM Line>, <DRM
Arc>, <DRM Point>, and
<DRM Finite Element Mesh>.
- <DRM Ellipse> can
nest:
<DRM Polygon>,
<DRM Ellipse>,
<DRM Line>, <DRM
Arc>, <DRM Point>, and
<DRM Finite Element Mesh>.
- <DRM Line> can nest:
<DRM Line>,
<DRM
Arc>, and <DRM Point>.
- <DRM Arc> can nest:
<DRM Line>,
<DRM
Arc>, and <DRM Point>.
- <DRM Point> can nest:
<DRM Point>.
- <DRM Volume Object> can nest:
<DRM Finite Element Mesh>
as an interior 3D mesh.
- <DRM Finite
Element Mesh> cannot nest.
7.2.49 Non-cyclic aggregations
Aggregations are not allowed to form cycles. Associations
are, as follows:
- a DRM object can associate to itself; e.g., a <DRM Point Feature> instance can associate
with itself;
- a <DRM Feature
Representation> instance
can associate to a <DRM Geometry
Hierarchy> instance that associates to the
<DRM Feature
Representation> instance; and
- a DRM object cannot have itself as a component.
7.2.50 Non-empty <DRM Environment Root>
instance
A <DRM
Environment Root> instance shall have as components a
<DRM
Feature Hierarchy> instance and/or a <DRM
Geometry Hierarchy> instance.
7.2.51 Non-empty <DRM Model> instance
The following constraints apply:
- A <DRM Model> instance shall
have a <DRM Feature Model>
instance and/or a <DRM Geometry
Model> instance.
- A <DRM Model> instance is permitted to
have an empty <DRM Geometry
Model>
instance
(e.g., a <DRM Geometry
Model>
instance
without a <DRM Geometry
Hierarchy> component), only if:
- The <DRM Model> instance either does not
have a <DRM Feature Model>
instance, or
its <DRM Feature Model>
instance is
empty;
- The <DRM Model> instance has a <DRM Classification Data>
component with
tag field set to ECC_OBJECT;
- The <DRM Model> instance is tagged as
ROOT_AND_COMPONENT so
that it can be instanced within the scopes of a <DRM
Environment Root> instance as well as other <DRM
Model> instances; and
- The empty <DRM Geometry
Model> instance has no <DRM Attachment
Point>, <DRM Contact Point>,
or <DRM LSR Transformation>
component, since these components require the presence of a <DRM Geometry Hierarchy> instance.
- A <DRM Model> instance is permitted to
have an empty <DRM Feature
Model> instance (e.g., a <DRM Feature
Model> instance without a <DRM
Feature Hierarchy> component), only if:
- The <DRM Model> instance either does not
have a <DRM Geometry Model>
instance,
or its <DRM Geometry Model>
instance
is empty;
- The <DRM Model> instance has a <DRM Classification Data>
component with
tag field set to ECC_OBJECT; and
- The <DRM Model> instance is tagged as
ROOT_AND_COMPONENT so that it can be instanced
within the scope of a <DRM Environment Root>
instance as well as other <DRM Model>
instances.
- No <DRM Model> instance other than a
properly constructed empty <DRM Model>
instnace
is permitted to have a <DRM Classification
Data> instance with
tag field set to ECC_OBJECT.
7.2.52 Non-overlapping DRM class
summary items
In a list of <DRM
DRM Class Summary Item> instances, no two shall have their
drm_class fields set to the same DRM class.
7.2.53 Non-selfoverlapping
perimeter data locations
The perimeter specified by a <DRM Perimeter Data> instance
shall not intersect with or overlap itself.
7.2.54 Octant related organizing
principle
Consider an instance O that is either a <DRM
Octant Related Features or a <DRM Octant Related
Geometry> instance.
- O shall have a <DRM
Spatial Extent> component, specifying the bounding volume that is being
organized into octants. Since a volume is being
specified, this <DRM Spatial Extent>
shall be specified in terms of <DRM Location
3D> components.
- Each branch of O shall comply with the following constraints:
- Each component representing an octant shall have a <DRM Spatial Extent> component.
In the case of octants represented by
<DRM Geometry Model
Instance> or <DRM
Feature Model Instance> instances, the <DRM
Model> instance being referenced shall have the <DRM Spatial Extent> component. Since a
subdivision of a volume is being specified, this <DRM Spatial Extent> instance shall be
specified in terms of <DRM Location
3D> instances.
- For each branch of O, each primitive within the branch shall have a
spatial extent fully contained within that specified by the <DRM Spatial Extent> instance
corresponding to the branch. Consequently, the
unique_descendants field of O shall be set to
TRUE, because no DRM object can be fully contained within the <DRM Spatial Extent> instance of
more than one branch of O.
- The regions specified by the branches shall not overlap; that is, the
corresponding <DRM
Spatial Extent>
instances shall not overlap.
- The eight possible octant components’ <DRM Spatial Extent> instances
shall be specified in their native SRF within the area specified by the
O’s
<DRM Spatial Extent> instance as shown in
Figure
5.3. Consider the bounding area specified by the <DRM Spatial Extent> instance of
O, as
divided into eight octants of equal size with the area specified from point “a” to
point “o” in
Figure
5.3.
- If a branch with UPPER_RIGHT_BACK
is present, its <DRM
Spatial Extent> instance
shall specify the area of the upper right back octant, from point “h” to point
“o” in Figure
5.3, such that:
- its left boundary aligns with the right boundary of the UPPER_LEFT_BACK octant’s
<DRM Spatial Extent> instance, if
present;
- its front boundary aligns with the back boundary of the UPPER_RIGHT_FRONT octant’s
<DRM Spatial Extent> instance, if
present; and
- its lower boundary aligns with the upper boundary of the LOWER_RIGHT_BACK octant’s
<DRM Spatial Extent> instance, if
present.
- In the case where a primitive lies entirely along the right
boundary of the branch, the primitive is considered to lie within
the spatial extent of the UPPER_RIGHT_BACK octant and not that of the UPPER_LEFT_BACK octant.
- In the case where a primitive lies entirely along the front
boundary of the branch, the primitive is considered to lie within
the spatial extent of the UPPER_RIGHT_BACK octant and not within that of the UPPER_RIGHT_FRONT octant.
- In the case where a primitive lies entirely along the lower
boundary of the branch, the primitive is considered to lie within
the spatial extent of the UPPER_RIGHT_BACK octant and not within that of the LOWER_RIGHT_BACK octant.
- If a branch with UPPER_LEFT_BACK
is present, its <DRM Spatial Extent>
instance
shall specify the area of the upper left back octant, from point “g” to point
“n” in Figure
5.3, such that:
- the <DRM Location 3D>
instance representing its upper left back corner corresponds to that of
O’s
<DRM Spatial Extent> instance;
- its right boundary aligns with the left boundary of the UPPER_RIGHT_BACK octant’s
<DRM Spatial Extent> instance, if
present, and its front boundary aligns with the back boundary of the UPPER_LEFT_FRONT octant’s
<DRM Spatial Extent> instance, if
present; and
- its lower boundary aligns with the upper boundary of the LOWER_LEFT_BACK octant’s
<DRM Spatial Extent> instance,
if present.
- In the case where a primitive lies entirely along the right
boundary of the branch, the primitive is considered not to lie
within the spatial extent of the UPPER_LEFT_BACK
octant but within that of the UPPER_RIGHT_BACK
octant.
- In the case where a primitive lies entirely along the front
boundary of the branch, the primitive is considered to lie within
the spatial extent of the UPPER_LEFT_BACK
octant and not within that of the
UPPER_LEFT_FRONT octant.
- In the case where a primitive lies entirely along the lower
boundary of the branch, the primitive is considered to lie within
the spatial extent of the UPPER_LEFT_BACK
octant and not within that of the LOWER_LEFT_BACK
octant.
- If a branch with UPPER_RIGHT_FRONT is present, its
<DRM
Spatial Extent> instance shall specify the area of the upper right front octant, from
point “f” to point “m” in
Figure
5.3, such that:
- its left boundary aligns with the right boundary of the
UPPER_LEFT_FRONT octant’s
<DRM Spatial Extent> instance, if
present;
- its back boundary aligns with the front boundary of the
UPPER_RIGHT_BACK octant’s
<DRM Spatial Extent> instance, if
present; and
- its lower boundary aligns with the upper boundary of the
LOWER_RIGHT_FRONT octant’s
<DRM Spatial Extent> instance, if
present.
- In the case where a primitive lies entirely along the right
boundary of the branch, the primitive is considered to lie within
the spatial extent of the UPPER_RIGHT_FRONT octant and not that of the UPPER_LEFT_FRONT octant.
- In the case where a primitive lies entirely along the back
boundary of the branch, the primitive is considered to lie within
the spatial extent of the UPPER_RIGHT_BACK octant and not within
that of the UPPER_RIGHT_FRONT octant.
- In the case where a primitive lies entirely along the lower
boundary of the branch, the primitive is considered to lie within
the spatial extent of the UPPER_RIGHT_FRONT
octant and not within that of the LOWER_RIGHT_FRONT octant.
- If a branch with UPPER_LEFT_FRONT
is present, its <DRM Spatial Extent>
instance
shall specify the area of the upper left front octant, from point “e” to point “l” in
Figure
5.3, such that:
- its right boundary aligns with the left boundary of the
UPPER_RIGHT_FRONT octant’s
<DRM Spatial Extent> instance, if
present;
- its back boundary aligns with the front boundary of the
UPPER_LEFT_BACK octant’s
<DRM Spatial Extent> instance, if
present; and
- its lower boundary aligns with the upper boundary of the
LOWER_LEFT_FRONT octant’s
<DRM Spatial Extent> instance, if
present.
- In the case where a primitive lies entirely along the right
boundary of the branch, the primitive is considered not to lie
within the spatial extent of the UPPER_LEFT_FRONT octant but within that of the
UPPER_RIGHT_FRONT octant.
- In the case where a primitive lies entirely along
the back boundary of the branch, the primitive is considered to lie
within the spatial extent of the UPPER_LEFT_BACK
octant and not within that of the UPPER_LEFT_FRONT
octant.
- In the case where a primitive lies entirely along the lower
boundary of the branch, the primitive is considered to lie within
the spatial extent of the UPPER_LEFT_FRONT octant and not within that of the
LOWER_LEFT_FRONT octant.
- If a branch with LOWER_RIGHT_BACK
is present, its <DRM Spatial Extent>
instance
shall specify the area of the upper right back octant, from point “d” to point
“k” in Figure
5.3, such that:
- its left boundary aligns with the right boundary of the
LOWER_LEFT_BACK octant’s
<DRM Spatial Extent> instance, if
present;
- its front boundary aligns with the back boundary of the
LOWER_RIGHT_FRONT octant’s
<DRM Spatial Extent> instance, if
present; and
- its upper boundary aligns with the lower boundary of the
UPPER_RIGHT_BACK octant’s
<DRM Spatial Extent> instance, if
present.
- In the case where a primitive lies entirely along the right
boundary of the branch, the primitive is considered to lie within
the spatial extent of the LOWER_RIGHT_BACK octant and not that of the LOWER_LEFT_BACK octant.
- In the case where a primitive lies entirely along the front
boundary of the branch, the primitive is considered to lie within
the spatial extent of the LOWER_RIGHT_BACK octant and not within that of the
LOWER_RIGHT_FRONT octant.
- In the case where a primitive lies entirely along the upper
boundary of the branch, the primitive is considered to lie within
the spatial extent of the UPPER_RIGHT_BACK octant and not within that of the
LOWER_RIGHT_BACK octant.
- If a branch with LOWER_LEFT_BACK
is present, its <DRM Spatial Extent>
instance
shall specify the area of the lower left back octant, from point “c” to point
“j” in Figure
5.3, such that:
- its right boundary aligns with the left boundary of the
LOWER_RIGHT_BACK octant’s
<DRM Spatial Extent> instance, if
present;
- its front boundary aligns with the back boundary of the
LOWER_LEFT_FRONT octant’s
<DRM Spatial Extent> instance, if
present; and
- its upper boundary aligns with the lower boundary of the
UPPER_LEFT_BACK octant’s
<DRM Spatial Extent> instance, if
present.
- In the case where a primitive lies entirely along the right
boundary of the branch, the primitive is considered not to lie
within the spatial extent of the LOWER_LEFT_BACK octant but within that of the
LOWER_RIGHT_BACK octant.
- In the case where a primitive lies entirely along the front
boundary of the branch, the primitive is considered to lie within
the spatial extent of the LOWER_LEFT_BACK octant and not within that of the
LOWER_LEFT_FRONT octant.
- In the case where a primitive lies entirely along the upper
boundary of the branch, the primitive is considered to lie within
the spatial extent of the UPPER_LEFT_BACK octant and not within that of the
LOWER_LEFT_BACK octant.
- If a branch with LOWER_RIGHT_FRONT is present, its
<DRM
Spatial Extent> instance shall specify the area of the lower right front octant, from
point “b” to point “i” in
Figure
5.3, such that:
- the <DRM Location 3D>
instance representing its lower front right corner corresponds to that of O's
<DRM Spatial Extent> instance;
- its left boundary aligns with the right boundary of the
LOWER_LEFT_FRONT octant’s
<DRM Spatial Extent> instance, if
present;
- its back boundary aligns with the front boundary of the
LOWER_RIGHT_BACK octant’s
<DRM Spatial Extent> instance, if
present; and
- its upper boundary aligns with the lower boundary of the
UPPER_RIGHT_FRONT octant’s
<DRM Spatial Extent> instance, if
present.
- In the case where a primitive lies entirely along the right
boundary of the branch, the primitive is considered to lie within
the spatial extent of the LOWER_RIGHT_FRONT octant and not that of the LOWER_LEFT_FRONT octant.
- In the case where a primitive lies entirely along the back
boundary of the branch, the primitive is considered to lie within
the spatial extent of the LOWER_RIGHT_BACK octant and not within that of the
LOWER_RIGHT_FRONT octant.
- In the case where a primitive lies entirely along the upper
boundary of the branch, the primitive is considered to lie within
the spatial extent of the UPPER_RIGHT_FRONT octant and not within that of the
LOWER_RIGHT_FRONT octant.
- If a branch with LOWER_LEFT_FRONT
is present, its <DRM Spatial Extent>
shall specify the area of the lower left front octant, from point “a” to point “h” in
Figure
5.3, such that:
- its right boundary aligns with the left boundary of the
LOWER_RIGHT_FRONT octant’s
<DRM Spatial Extent>, if
present;
- its back boundary aligns with the front boundary of the
LOWER_LEFT_BACK octant’s
<DRM Spatial Extent>, if
present; and
- its upper boundary aligns with the lower boundary of the
UPPER_LEFT_FRONT octant’s
<DRM Spatial Extent>, if
present.
- In the case where a primitive lies entirely along the right
boundary of the branch, the primitive is considered not to lie
within the spatial extent of the LOWER_LEFT_FRONT octant but within that of the
LOWER_RIGHT_FRONT octant.
- In the case where a primitive lies entirely along the back
boundary of the branch, the primitive is considered to lie within
the spatial extent of the LOWER_LEFT_BACK octant and not within that of the
LOWER_LEFT_FRONT octant.
- In the case where a primitive lies entirely along the upper
boundary of the branch, the primitive is considered to lie within
the spatial extent of the UPPER_LEFT_FRONT octant and not within that of the
LOWER_LEFT_FRONT octant.
- If O has eight branches, the strict_organizing_principle field of
O shall be set to
TRUE; otherwise it shall be set to FALSE.
7.2.55 Parallelepiped structure
For a <DRM
Parallelepiped Volume Extent> instance P, the following conditions shall
hold:
- The <DRM Reference Vector>
components of P shall comply with the restrictions imposed in the
specification of the <DRM
Parallelepiped Volume Extent> class.
- The relative orientations of the
<DRM Reference Vector>
components of P shall specify a parallelepiped volume.
7.2.56 Perimeter related
organizing principle
The following constraints apply:
- For any perimeter-related organization,
- The regions specified by its branches shall not overlap; that is, the <DRM Perimeter Data> on the
branches shall specify regions that do not overlap.
- For each branch of the organization, every primitive within that branch
shall have a spatial extent overlapping that of the branch.
- In the case of a primitive lying on the boundary specified by the <DRM Perimeter Data> instance
corresponding to a branch, the primitive shall be considered to have a
spatial extent fully contained within that specified by the <DRM Perimeter Data> instance.
- For topological organizations:
- A <DRM Feature Topology>
instance shall belong to at most one <DRM Perimeter
Related Feature Topology> instance.
- A <DRM Geometry
Topology> instance shall belong to at most one <DRM Perimeter
Related Geometry Topology> instance.
- Consider a perimeter-related organization P, which is either a <DRM Perimeter Related
Features> instance or a <DRM
Perimeter Related Geometry> instance.
- If P’s
strict_organizing_principle field has
value TRUE, for each branch of
P, each
primitive within the branch shall have a spatial extent fully contained within
that specified by the <DRM Perimeter Data>
instance corresponding to the branch.
- If P’s strict_organizing_principle
has value FALSE, no guarantees exist as to how
accurately the objects of the component tree rooted at
P were placed into
their sorted bins (that is, the branches of P), apart from that specified by a.1
above.
- If P is a <DRM
Perimeter Related Features> instance, and the same
<DRM Feature
Representation> instance belongs to more
than one of its branches, the
unique_descendants and
strict_organizing_principle
flags of P shall be set to FALSE.
- If P is a <DRM Perimeter Related Geometry>
instance, and
the same <DRM Geometry
Representation> instance
belongs to more than one of its branches, the
unique_descendants and
strict_organizing_principle
fields of P shall be set to FALSE.
7.2.57 Polygon as bounded plane
Consider a <DRM Polygon> instance
P
having N ordered <DRM Vertex> components
Vi,
where i is a member of {1, 2, ..., N}. For each Vi, let
Li
refer to the <DRM Location>
instance referenced by Vi as its
<DRM Location> instance. The following
conditions shall hold:
- Each Li shall specify unique spatial coordinates among
Lk,
where k is a member of {1, 2, ..., N}.
- For each pair of line segments Lij,
Lrs,
Lij
and Lrs shall not intersect unless i = s or j = r, in which case
they shall intersect only at that common <DRM
Vertex> instance.
- The sequence of line segments Lij shall specify a bounded
portion of a plane.
- The concave flag of the
polygon_flags
field of P shall be set to TRUE if
P forms a
concave polygon; otherwise the concave flag shall be set to
FALSE.
7.2.58 Precedence of <DRM Property Set Index>
Consider an instance P of
<DRM Geometry Representation>
or <DRM Feature
Representation>, where P has a <DRM Property
Set Index> component X that references a <DRM Property
Set> instance S.
- Let S have a component
C and let P have a component
D such that C and
D
are instances of the same class.
- Let C be an instance of any of the following:
D takes precedence over
C, such that
C is not treated as a directly
attached component of P.
- Let C and
D be instances of
<DRM Property Table>. If C and
D have matching
<DRM Classification Data>
components, D takes precedence over
C, such that
C is not treated as a
directly attached component of P. Otherwise,
C is treated as a directly
attached component of P.
- Let C and
D be instances of
<DRM Property Table
Reference>. If C and
D refer to
<DRM Property Table>
instances having matching <DRM
Classification Data> components, D takes precedence over
C, such
that C is not treated as a directly attached component of
P. Otherwise,
C is treated as a directly attached component of
P.
- Let C and
D be instances of
<DRM Property Value>. If C and
D have matching
meaning field values,
D takes precedence over
C, such that
C is
not treated as a directly attached component of
P. Otherwise,
C is
treated as a directly attached component of P.
- Let C and
D be instances of <DRM
Colour>. If C and
D specify conflicting
<DRM Presentation Domain>
instances, D takes precedence over
C, such that
C is not treated as a
directly attached component of P.
- Let P have another <DRM Property Set Index>
component Y that references a <DRM Property Set> instance
S2,
where Y appears further down the ordered list of <DRM Property Set Index>
components of P than does
X. Let S have a component
C and let S2 have a
component C2 such that
C and C2 are instances of the same class, where
P
does not have a component that is an instance of that class.
- Let C2 be an instance of any of the following:
C takes precedence over
C2, such that
C2 is not treated as a directly
attached component of P.
- Let C and
C2 be instances of
<DRM Property Table>. If C and
C2 have matching
<DRM Classification Data>
components, C takes precedence over
C2, such that
C2 is not treated as a
directly attached component of P. Otherwise,
C2 is treated as a directly
attached component of P.
- Let C and
C2 be instances of
<DRM Property Table
Reference>. If C and
C2 refer to
<DRM Property Table>
instances having matching
<DRM Classification Data> components,
C takes precedence over
C2,
such that C2 is not treated as a directly attached component of
P.
Otherwise, C2 is treated as a directly attached component of
P.
- Let C and
C2 be instances of
<DRM Property Value>. If C and
C2 have matching
meaning field values,
C takes precedence over
C2, such that
C2 is
not treated as a directly attached component of
P. Otherwise,
C2 is
treated as a directly attached component of P.
- Let C and
C2 be instances of <DRM
Colour>. If C and
C2 specify conflicting
<DRM Presentation Domain>
instances, C takes precedence over
C2, such that
C2 is not treated as a
directly attached component of P.
7.2.59 Publishable object
DRM classes for which instances may be published can be identified from the
following lists. Where the list specifies an abstract class, instances of all of
its subclasses may be published.:
- Instances of the following classes are publishable:
<DRM Aggregate Feature>
<DRM Aggregate Geometry>
<DRM Colour Table Group>
<DRM Environment Root>
<DRM Feature Model>
<DRM Feature Topology>
<DRM Feature Topology
Hierarchy>
<DRM Geometry Model>
<DRM Geometry Topology>
<DRM Geometry Topology
Hierarchy>
<DRM Image>
<DRM Library>
<DRM Model>
<DRM Property Grid Hook Point>
<DRM Property Set Table Group>
<DRM Property Table>
<DRM Separating Plane
Relations>
<DRM Sound>
<DRM Symbol>
- Instances of the
following classes may be published, where they serve the role of link
objects:
<DRM Base LOD Data>
<DRM Classification Data>
<DRM Hierarchy Data>
<DRM Octant Data>
<DRM Perimeter Data>
<DRM Quadrant Data>
<DRM Separating Plane
Data>
<DRM Spatial
Index Data>
<DRM State Data>
<DRM Time Constraints
Data>
- An instance of a class not covered by a or b above shall not be
published.
7.2.60 Quadrant related
organizing principle
Consider Q that is either an instance of <DRM Quadrant Related
Features> or an instance of <DRM
Quadrant Related Geometry>.
- Q shall have a <DRM
Spatial Extent> instance.
- Each branch of Q shall comply with the following constraints.
- Each component representing a quadrant shall have a <DRM Spatial Extent> component.
In the case of quadrants represented by
<DRM Geometry Model
Instance> or <DRM Feature
Model Instance> instances, the <DRM Model>
being referenced shall have the <DRM
Spatial Extent> component.
- For each branch of Q, each primitive within the branch shall have a
spatial extent fully contained within that specified by the <DRM
Spatial Extent> instance corresponding to the branch. Consequently, the
unique_descendants
field of Q shall be set to TRUE, because no
DRM object can be fully contained within the <DRM
Spatial Extent> instance of more than one branch of
Q.
- The regions specified by the branches shall not overlap; that is, the <DRM Spatial Extent> components
of the component hierarchies shall not overlap.
The four possible quadrant components’ <DRM Spatial Extent> component shall be specified
in their native SRF within the area specified by the Q’s <DRM Spatial Extent> component as depicted in
Figure
5.4. Consider the bounding area specified by the <DRM Spatial Extent>
component
of Q, as divided into four quadrants of equal size.
- If a branch with
quadrant of value
LEFT_BACK is present, its
<DRM Spatial Extent> instance
shall specify the area of the left back quadrant, such that:
- its right boundary aligns with the left boundary of the
<DRM Spatial Extent> instance of the
RIGHT_BACK quadrant, if present, and
- its front boundary aligns with the back boundary of the <DRM Spatial Extent>
instance of the LEFT_FRONT quadrant, if present.
- In the case where a primitive lies entirely along the right
boundary of the branch, the primitive is considered not to lie
within the spatial extent of the LEFT_BACK
quadrant but within that of the RIGHT_BACK
quadrant.
- In the case where a primitive lies entirely along the front
boundary of the branch, the primitive is considered to lie within
the spatial extent of the LEFT_BACK
quadrant and not within that of the LEFT_FRONT
quadrant.
- If a branch with
quadrant RIGHT_BACK
is present, its <DRM Spatial Extent>
instance
shall specify the area of the right back quadrant, such that:
- the <DRM Location> instance
representing its right back corner corresponds to that of the <DRM Spatial Extent> component of
Q;
- its left boundary aligns with the right boundary of the
<DRM Spatial Extent> component of the
LEFT_BACK quadrant, if present; and
- its front boundary aligns with the back boundary of the <DRM Spatial Extent> instance of the
RIGHT_FRONT quadrant, if present.
- In the case where a primitive lies entirely along the left
boundary of the branch, the primitive is considered to lie within
the spatial extent of the
RIGHT_BACK quadrant and not within that
of the
LEFT_BACK quadrant.
- In the case where a primitive lies entirely along the front
boundary of the branch, the primitive is considered to lie within
the spatial extent of the
RIGHT_BACK quadrant and not within that
of the
RIGHT_FRONT quadrant.
- If a branch with LEFT_FRONT is present, its
<DRM Spatial Extent>
component shall specify the area of the left front quadrant, such that:
- the <DRM Location>
instance representing its left front corner corresponds to that of the
<DRM Spatial Extent>
component of Q;
- its left boundary aligns with the right boundary of the <DRM Spatial Extent> component of the
RIGHT_FRONT quadrant, if present; and
- its back boundary aligns with the front boundary of the <DRM Spatial Extent> component
of the LEFT_BACK quadrant, if present.
- In the case where a primitive lies entirely along the right
boundary of the branch, the primitive is considered not to lie
within the spatial extent of the LEFT_FRONT
quadrant but within that of the RIGHT_FRONT
quadrant.
- In the case where a primitive lies entirely along the back
boundary of the branch, the primitive is considered to lie within
the spatial extent of the LEFT_BACK
quadrant and not within that of the LEFT_FRONT
quadrant.
- If a branch with RIGHT_FRONT is present, its
<DRM Spatial Extent> component
shall specify the area of the right front quadrant, such that:
- its left boundary aligns with the right boundary of the <DRM Spatial Extent> component of the
LEFT_FRONT quadrant, if present; and
- its back boundary aligns with the front boundary of the <DRM Spatial Extent>
component of the RIGHT_BACK quadrant, if present.
- In the case where a primitive lies entirely along the left
boundary of the branch, the primitive is considered not to lie
within the spatial extent of the LEFT_FRONT
quadrant but within that of the RIGHT_FRONT
quadrant.
- In the case where a primitive lies entirely along the back
boundary of the branch, the primitive is considered to lie within
the spatial extent of the RIGHT_BACK
quadrant and not within that of the RIGHT_FRONT
quadrant.
- If Q has four branches, the
strict_organizing_principle field of
Q
shall be set to
TRUE; otherwise it shall be set to
FALSE.
7.2.61 Required reference vector location
A <DRM
Reference Vector> instance is required to have a <DRM
Location> component whenever the <DRM Reference Vector> instance is a
component of a <DRM Polygon>, <DRM Line>, <DRM Infinite Light>, <DRM Moving Light Behaviour>,
or <DRM Union Of Geometry> instance.
7.2.62 Separating
plane organizing principle
The following constraints apply:
- The <DRM Location 3D>
components of a <DRM Separating
Plane> instance shall shall not be collinear or coincident.
- For any <DRM
Separating Plane Related Geometry> instance S:
- No two <DRM
Separating Plane Relations> components of S shall specify coplanar
<DRM Separating Plane> instances.
- For each component <DRM
Separating Plane Relations> R of
S:
- Every primitive within each branch of
R shall have a spatial extent
overlapping that of the half-space specified by the branch.
- If the
strict_organizing_principle
field of S has value TRUE,
every primitive within each branch of R shall have a spatial extent fully contained
within the half-space specified by the
<DRM Separating Plane Data>
instance corresponding to the branch. If the
strict_organizing_principle
field of S has value
FALSE, no guarantees exist as to how accurately the
objects of the component tree rooted at S were placed into their
sorted half-spaces,
apart from that specified by b.2.i above.
-
For each <DRM
Separating Plane Relations>
component R of
S, let P be the <DRM Separating
Plane>
component of R:
- For each
<DRM Primitive Geometry>
instance X in the component tree of a branch of
R, X shall have a
spatial extent overlapping that of the half-space specified for that
branch.
- Let X be a
<DRM Primitive Geometry>
instance such that X lies entirely within the plane of
P. If X is a
<DRM Polygon> component of a
<DRM Polyhedron> that
otherwise lies entirely within the positive half-space defined by
P,
X is considered to lie within the positive half-space defined by
P.
Otherwise, X is considered to lie within the negative half-space
defined by P.
- If the
strict_organizing_principle
field of S has the value TRUE,
every primitive within each branch of R shall have a spatial extent
fully contained within the half-space specified by the
<DRM Separating Plane Data>
instance corresponding to the branch.
- If the
strict_organizing_principle
field of S has the value FALSE,
no guarantees exist as to how accurately the DRM objects of the
component tree rooted at S were placed into their sorted bins apart
from that specified by b.2.i above.
7.2.63 Spatial axis constraints
In regard to spatial <DRM Axis>
instances,
- A spatial <DRM Axis>
instance is a
<DRM Axis> instance with one of the
following as its axis_type.
- For angular coordinates, such as latitude and longitude,
EAC_SPATIAL_ANGULAR_PRIMARY_COORDINATE and
EAC_SPATIAL_ANGULAR_SECONDARY_COORDINATE;
- For x, y coordinates,
EAC_SPATIAL_LINEAR_PRIMARY_COORDINATE and
EAC_SPATIAL_LINEAR_SECONDARY_COORDINATE; and
- For z and elevation coordinates,
EAC_SPATIAL_LINEAR_TERTIARY_COORDINATE.
- The number of spatial <DRM Axis>
components of a <DRM Property Grid>
instance is specified by
spatial_axes_count. These
spatial <DRM Axis> components
shall be the first listed <DRM Axis>
components of the <DRM Property Grid>
instance, and shall correspond to a coordinate of the
<DRM Property Grid> instance's
SRF.
- No other <DRM Axis> instances in
any other context shall be spatial.
- A spatial <DRM Regular Axis>
instance or <DRM Irregular Axis>
instance shall not have
interpolation_type set to
DISALLOWED.
7.2.64 Spatial index
related organizing principle
The following constraints apply:
- For any spatial index related organization S,
- the column_width of
S shall be a positive number;
- the row_width of S shall be a positive number; and
- For each branch of the organization, the corresponding
<DRM Spatial Index Data> instance
shall specify a region in the spatial index, such that:
- the
column_index of the
<DRM Spatial Index Data>
instance shall be between 1 and the column_count
specified by S;
- the
row_index of the
<DRM Spatial Index Data> instance
shall be between 1 and the row_count specified by
S; and
- each primitive within the branch shall have a spatial extent overlapping
that specified by the <DRM Spatial
Index Data> instance of the branch. Consider a cell
C of S. Where a
boundary of C touches that of another cell of
S, C is considered to
include its lower and left boundaries, but not to include its upper
and right boundaries. Consequently, a primitive that lies entirely
along the lower and/or left boundary of C is considered to lie
within C, but a primitive that lies entirely along the upper and/or
right boundary of C is not considered to lie within
C.
- Consider an instance S, which is either a
<DRM Spatial Index
Related Features> or <DRM
Spatial Index Related Geometry> instance.
- If the strict_organizing_principle field of
S has value
TRUE, for each branch of S, each primitive within the branch
shall have a spatial extent fully contained within that specified by the
<DRM Spatial Index Data>
instance corresponding to the branch.
- If the strict_organizing_principle field of
S has value FALSE, no guarantees exist as to how
accurately the instances of the component tree rooted at
S were placed into
their indexed bins (i.e., the branches of S), apart from that specified by
a.3.iii
above.
- If S is a <DRM
Spatial Index Related Features> instance, and the same
<DRM Feature
Representation> instance belongs to more
than one of its branches, the unique_descendants and
strict_organizing_principle fields of
S shall be set to
FALSE.
- If S is a <DRM
Spatial Index Related Geometry>
instance, and the same <DRM Geometry
Representation>
instance belongs to more than one of its branches, the
unique_descendants and
strict_organizing_principle fields of
S shall be set to
FALSE.
7.2.65 State related organizing
principle
For any state related aggregation S, whether a <DRM State Related Features>
instance
or a <DRM State Related
Geometry> instance, the following constraints apply:
- The state_tag of S shall specify an EA
T that is
bound either to the abstract value type ENUMERATION
or to a numeric value type. In the latter case, T shall be bound to the EDCS unit equivalence class PURE_NUMBER such that the
state values of S are specified with EUC_PERCENT
units and
ESC_UNI scale factor.
- Each branch of S shall comply with the following constraints:
- The <DRM State Data> instance
associated with that branch shall have a
state_value whose
value_type field matches that of the
active_state_value field of S.
- The <DRM State Data> instance
associated with that branch shall have a
state_value
that does not overlap with that of any other branch’s
<DRM State Data> instance within
S.
- If S has a <DRM State
Control Link> instance as a component, the return type of each of the <DRM Expression> components of the
<DRM State Control Link> instance
shall match that of the value_type
of the active_state_value field of
S.
7.2.66 Time dependency
<DRM Relative Time>, <DRM Absolute Time Interval>,
and <DRM Relative Time
Interval> instances may each have a
<DRM Absolute Time> component.
When the
<DRM Absolute Time>
component is present, the constraints on the field values of the respective <DRM Relative Time>, <DRM Absolute Time Interval>,
and <DRM Relative Time
Interval> instances depend on the value of the
<DRM Absolute Time>
component as follows:
- If a
<DRM Absolute Time>
component is present with a
time_value
configuration entry specifying that the
day field is not applicable:
- For <DRM Absolute
Time Interval> instances,
delta_days
= 0.
- For <DRM Relative Time>
instances,
delta_days
= 0.
- For <DRM Relative
Time Interval> instances,
delta_start_days
=
delta_stop_days
= 0.
- If a
<DRM Absolute Time>
component is present with a
time_value
configuration entry specifying that the month field value is not applicable
but that the day field value is applicable:
- For <DRM Absolute
Time Interval> instances,
delta_days shall be in the range
[1-day, 30-day] where
day is the day entry of
the
time_value
field of the <DRM Absolute Time>
instance. For this case,
delta_days is allowed to be negative.
- For <DRM Relative Time>
instances,
delta_days shall be in the range
[1-day, 30-day] where
day is the day entry of
the
time_value
field of the <DRM Absolute Time>
instance. For this case,
delta_days is allowed to be negative.
- If a
<DRM Absolute Time>
component is present with a
time_value
configuration entry specifying that the month field value is not applicable
and that the year field value is not applicable:
- For <DRM Absolute
Time Interval> instances,
delta_days shall be in
the range [0, 365].
- For <DRM Relative Time>
instances,
delta_days shall be in
the range [0, 365].
7.2.67 Time interval calculation
Let V be a <DRM Time
Interval> instance that is referenced to a
<DRM Absolute Time> component
C.
- If C specifies a month,
V shall be calculated using the
actual number of days in that month.
- If C does not specify a
month, V is treated as having a 30
day month such that the fields of V
shall specify an interval not exceeding a 30 day period. See
7.2.66 Time dependency, part b.
7.2.68 Union organizing principle
The following specifies the constraints for forming valid unions:
- For a <DRM Union Of
Primitive Geometry> instance U, the
strict_organizing_principle and
unique_descendants field values shall be TRUE,
and all of U’s <DRM Primitive
Geometry> components shall be distinct.
- For a <DRM Union Of
Feature Topology> instance U, all of
U’s
<DRM Feature Topology>
components shall be distinct.
- For a <DRM Union Of
Geometry Topology> instance U, all of
U’s
<DRM Geometry Topology>
components shall be distinct.
- For a <DRM Union Of
Geometry Hierarchy> instance U, all of
U’s
<DRM Geometry Hierarchy>
components shall be distinct. Furthermore, no two
<DRM Geometry Hierarchy>
components of U shall organize exactly the same collection of geometric
data.
7.2.69 Valid node/edge
relationships
The following specifies the constraints for forming valid relationships
between <DRM Feature Node>/<DRM
Geometry Node> instances and <DRM Feature Edge>/<DRM
Geometry Edge> instances, respectively:
- A <DRM Feature Node>
instance FN has the
following relationship with its
<DRM Feature Edge> instances, if any exist.
- For each <Feature
Edge> instance that has FN as a starting node,
FN shall be associated to that <DRM Feature
Edge> instance.
- For each <DRM Feature
Edge> instance that has FN as an ending node,
FN shall be associated to that <DRM Feature
Edge> instance.
- If FN is neither the starting node nor the ending node of a given <DRM Feature Edge> instance,
FN shall not be
associated to that <DRM Feature Edge> instance.
- Consequently, for any given <DRM
Feature Edge> instance FE of which
FN is a starting or ending node,
FE shall
appear among the associates of FN either:
- once, if FN is
FE’s starting node and not its ending node,
- once, if FN is
FE’s ending node and not its starting node, or
- twice, if FE is a loop.
- A <DRM Geometry Node>
instance
GN has the following relationship with its associated <DRM
Geometry Edge> instances, if any exist.
- For each <DRM Geometry
Edge> instance GE that has
GN as a starting node,
GN shall be associated to
GE.
- For each <DRM Geometry
Edge> instance GE that has
GN as an ending node,
GN shall be associated to
GE.
- If GN is neither the starting node nor the ending node of a given <DRM Geometry Edge> instance
GE, GN
shall not be associated to GE.
- Consequently, for any given <DRM
Geometry Edge> instance GE of which
GN is a starting or ending node,
GE shall appear among the associates of
GN once, where
GN is either
GE’s starting node or
GE’s ending node but not both.
7.2.70 Variable meaning constraints
The following constraints apply to a <DRM Variable> instance:
- The value_type field shall be consistent with the
meaning field.
- If an EA or Variable_Code of a value type that represents real numbers is
specified in the
meaning field,
value_unit shall specify a unit belonging to the
EDCS Unit Equivalence Class to which the EA or
variable code is bound.
- If an EA or Variable_Code not of a value type that represents a real number is
specified in the
meaning field,
value_unit
field shall specify EUC_UNITLESS
and value_scale
field shall specify ESC_UNI.
If a <DRM Variable> instance specifies
VARIABLE as the Property_Code_Type of its
meaning
field value, the constraints that apply on the
value_type field that can be
specified for the <DRM Variable> instance for each
Variable_Code value are specified in
Table 7.3.
Table 7.3
— <DRM Variable> value_type constraints
Variable_Code value |
Constraint |
ACTIVE_STATE_VALUE |
The abstract value type shall be EDCS attribute value type BOOLEAN. |
COLOUR_COORDINATE_1
COLOUR_COORDINATE_2
COLOUR_COORDINATE_3 |
The abstract value type shall be EDCS attribute value type REAL. The
value_unit
field shall specify EUC_UNITLESS
and value_scale
field shall specify ESC_UNI. |
COLOUR_INDEX |
The abstract value type shall be EDCS attribute value type COUNT. |
COLOUR_INTENSITY_LEVEL |
The abstract value type shall be EDCS attribute value type REAL. The
value_unit
field shall specify EUC_UNITLESS
and value_scale
field shall specify ESC_UNI. |
GEOMETRY_TEXTURE |
The abstract value type shall be EDCS attribute value type BOOLEAN. |
HEAT_PRODUCTION |
The abstract value type shall be EDCS attribute value type BOOLEAN. |
LIGHT_SOURCE_ACTIVE |
The abstract value type shall be EDCS attribute value type BOOLEAN. |
LIGHT_RENDERING_PROPERTIES_ACTIVE |
The abstract value type shall be EDCS attribute value type BOOLEAN. |
LIGHT_RENDERING_PROPERTIES_CANDELA_VALUE |
The abstract value type shall be
EDCS attribute value type REAL. The
value_unit field shall specify
EUC_CANDELA
and value_scale
field shall specify ESC_UNI. |
LSR_3D_LOCATION_U
LSR_3D_LOCATION_V
LSR_3D_LOCATION_W |
The abstract value type shall be EDCS attribute
value type REAL. The
value_unit field shall specify
a value that is a member of the EDCS equivalence class LENGTH. |
POLYGON_FLAGS_COLLIDIBLE
POLYGON_FLAGS_HAT_TEST
POLYGON_FLAGS_INVISIBLE
POLYGON_FLAGS_LASER_RANGE_FINDING |
The abstract value type shall be EDCS attribute value type BOOLEAN. |
PROPERTY_SET_INDEX |
The abstract value type shall be EDCS attribute value type COUNT. |
PROPERTY_TABLE_REFERENCE_INDEX_ON_AXIS |
The abstract value type shall be EDCS attribute value type COUNT. |
REFERENCE_VECTOR_V0
REFERENCE_VECTOR_V1
REFERENCE_VECTOR_V2 |
The abstract value type shall be EDCS attribute
value type REAL. |
ROTATION_ANGLE |
The abstract value type shall be EDCS attribute
value type REAL. The
value_unit field shall specify
EUC_RADIAN
and value_scale
field shall specify ESC_UNI. |
SCALE_FACTOR |
The abstract value type shall be EDCS attribute
value type REAL. The
value_unit field shall specify
a value that is a member of the EDCS equivalence class PURE_NUMBER. |
SOUND_INSTANCE_ACTIVE |
The abstract value type shall be EDCS attribute value type BOOLEAN. |
TEXTURE_COORDINATE_S
TEXTURE_COORDINATE_T |
The abstract value type shall be EDCS attribute
value type REAL. The
value_unit field shall specify
a value that is a member of the EDCS equivalence class PURE_NUMBER. |
TRANSLATION_AMOUNT |
The abstract value type shall be EDCS attribute
value type REAL. The
value_unit field shall specify
EUC_METRE. |
TRANSLUCENCY_VALUE |
The abstract value type shall be EDCS attribute
value type REAL. The
value_unit field shall specify
a value that is a member of the EDCS equivalence class PURE_NUMBER. |
7.2.71 Volume shell face
consistency
A <DRM Feature Face> instance shall
appear no more than twice in a
<DRM Feature Volume Shell> instance, once with a
<DRM Face Direction> link object
with front
set to TRUE and once with a
<DRM Face Direction> link object
with front
set to FALSE.
http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_IEC_18023-1_Ed1.html