The SEDRIS Data Representation Model
APPENDIX B - Constraints
Required Reference Vector Location

Definition

A <Reference Vector> instance V is required to have a <Location> component whenever V is a component of a <Polygon> instance, a <Line> instance, an <Infinite Light> instance, a <Moving Light Behaviour> instance, or a <Union Of Geometry> instance.

Rationale

The API requires an appropriate <Location> instance to convert a <Reference Vector> instance to or from non-vector SRFs, such as CD. For most DRM objects that take <Reference Vector> components, the <Location> instance is supplied by the context inheritance mechanism. For the remaining classes covered by this rule, inheritance cannot be relied on to supply an appropriate <Location> component.

Inheritance allows <Reference Vector> instances and <World 3x3> instances to automatically inherit a <Location> component as required for some coordinate transformations and conversions.

Example

  1. Consider the <Reference Vector> component V of a <Polygon> instance P that covers a large area. V might use the "centre" of P for the <Location> component of V.

  2. Consider a <Line> instance L with a <Reference Vector> component V. V might use the <Location> component of one of the <Vertex> components of L for the <Location> component of V.

  3. An <Infinite Light> instance L represents a light shining down on a local area. The <Reference Vector> component V of L representing the "down" direction shall have a localizing <Location> component, since parallel translations of a "down" vector will not point down over most places on the (curved) surface of the Earth.

  4. A <Positional Light> instance P has both a <Location> component and a <Lobe Data> component L. L, in turn, has two <Reference Vector> components. These two <Reference Vector> instances inherit P's <Location> component.

FAQs

How does choice of <Location> component affect <Reference Vector> instances in <Model> instances that have been specified in LSR SRFs?

In the case of <Model> instances that use LSR, the choice has no effect at all. The LSR origin (0, 0, 0), for example, could always be used. However, if the <Model> instance is referenced in the component tree of an <Environment Root> instance or another <Model> instance, the SRF of which has a curvilinear coordinate system such as Geodetic, the effect may be noticeable with a large <Model> instance.

For example, if two <Reference Vector> instances in the <Model> instance are both pointing "up" and use the same <Location> instance, when the <Model> instance is referenced they will remain parallel but may no longer be pointing up. If, on the other hand, they each have a different <Location> instance, they each will point up at the corresponding <Location> instance, but they will no longer be parallel due to the curvature of the Earth.

How does the data consumer use this form of inheritance?

The data consumer does not use it directly. It is sometimes used by the Extraction API implementation when the consumer requests data extraction in another SRF.


Prev: Reference Surface Constraints. Next: Separating Plane Related Organizing Principle. Up:Index.