The SEDRIS Data Representation Model
APPENDIX B - Constraints
Octant Related Organizing Principle

Definition

Consider an instance O that is either an <Octant Related Geometry> instance or an <Octant Related Features> instance.

  1. O shall have a <Spatial Extent> component, specifying the bounding volume that is being organized into octants. Since a volume is being specified, this <Spatial Extent> component shall be specified in terms of <Location 3D> components.

  2. Each branch of O shall comply with the following constraints.

    1. Each component representing an octant shall have a <Spatial Extent> component. In the case of octants represented by <Geometry Model Instance> instances or <Feature Model Instance> instances, the <Model> instance being referenced shall have the <Spatial Extent> component. Since a subdivision of a volume is being specified, this <Spatial Extent> instance shall be specified in terms of <Location 3D> instances.

    2. For each branch of O, each primitive within the branch shall have a spatial extent fully contained within that specified by the <Spatial Extent> instance corresponding to the branch. Consequently, the unique_descendants field of O shall be set to SE_TRUE, because no DRM object can be fully contained within the <Spatial Extent> instance of more than one branch of O.

    3. The regions specified by the branches shall not overlap; that is, the corresponding <Spatial Extent> instances shall not overlap.

    4. The eight possible octant components' <Spatial Extent> instances shall be specified in their native SRF within the area specified by O's <Spatial Extent> instance as shown in Figure 3. Consider the bounding area specified by the <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 3.

      Octant Related Organizing Principle: Octant Specification

      Figure 3 — <DRM Octant Related Organizing Principle> Octant Specification

  3. If a branch with SE_OCTANT_UPPER_RIGHT_BACK is present, its <Spatial Extent> instance shall specify the area of the upper right back octant, from point "h" to point "o" in Figure 3. such that

    1. its front boundary aligns with the back boundary of the SE_OCTANT_UPPER_RIGHT_FRONT octant's <Spatial Extent> instance, if present; and

    2. its lower boundary aligns with the upper boundary of the SE_OCTANT_LOWER_RIGHT_BACK octant's <Spatial Extent> instance, if present.

    3. 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 SE_OCTANT_UPPER_RIGHT_BACK octant and not that of the SE_OCTANT_UPPER_LEFT_BACK octant.

    4. 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 SE_OCTANT_UPPER_RIGHT_BACK octant and not within that of the SE_OCTANT_UPPER_RIGHT_FRONT octant.

    5. 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 SE_OCTANT_UPPER_RIGHT_BACK octant and not within that of the SE_OCTANT_LOWER_RIGHT_BACK octant.

  4. If a branch with SE_OCTANT_UPPER_LEFT_BACK is present, its <Spatial Extent> instance shall specify the area of the upper left back octant, from point "g" to point "n" in Figure 3. such that

    1. the <Location 3D> instance representing its upper left back corner corresponds to that of O's <Spatial Extent> instance;

    2. its right boundary aligns with the left boundary of the SE_OCTANT_UPPER_RIGHT_BACK octant's <Spatial Extent> instance, if present, and its front boundary aligns with the back boundary of the SE_OCTANT_UPPER_LEFT_FRONT octant's <Spatial Extent> instance, if present; and

    3. its lower boundary aligns with the upper boundary of the SE_OCTANT_LOWER_RIGHT_BACK octant's <Spatial Extent> instance, if present.

    4. 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 SE_OCTANT_UPPER_LEFT_BACK octant but within that of the SE_OCTANT_UPPER_RIGHT_BACK octant.

    5. 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 SE_OCTANT_UPPER_LEFT_BACK octant and not within that of the SE_OCTANT_UPPER_LEFT_FRONT octant.

    6. 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 SE_OCTANT_UPPER_LEFT_BACK octant and not within that of the SE_OCTANT_LOWER_LEFT_BACK octant.

  5. If a branch with SE_OCTANT_UPPER_RIGHT_FRONT is present, its <Spatial Extent> instance shall specify the area of the upper right front octant, from point "f" to point "m" in Figure 3. such that

    1. its left boundary aligns with the right boundary of the SE_OCTANT_UPPER_LEFT_FRONT octant's <Spatial Extent> instance, if present; and

    2. its back boundary aligns with the front boundary of the SE_OCTANT_UPPER_RIGHT_BACK octant's <Spatial Extent> instance, if present.

    3. its lower boundary aligns with the upper boundary of the SE_OCTANT_LOWER_RIGHT_FRONT octant's <Spatial Extent> instance, if present.

    4. 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 SE_OCTANT_UPPER_RIGHT_FRONT octant and not that of the SE_OCTANT_UPPER_LEFT_FRONT octant.

    5. 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 SE_OCTANT_UPPER_RIGHT_FRONT octant and not within that of the SE_OCTANT_UPPER_LEFT_FRONT octant.

    6. 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 SE_OCTANT_UPPER_RIGHT_FRONT octant and not within that of the SE_OCTANT_LOWER_RIGHT_FRONT octant.

  6. If a branch with SE_OCTANT_UPPER_LEFT_FRONT is present, its <Spatial Extent> instance shall specify the area of the upper left front octant, from point "e" to point "l" in Figure 3. such that

    1. its right boundary aligns with the left boundary of the SE_OCTANT_UPPER_RIGHT_FRONT octant's <Spatial Extent> instance, if present; and

    2. its back boundary aligns with the front boundary of the SE_OCTANT_UPPER_LEFT_BACK octant's <Spatial Extent> instance, if present.

    3. its lower boundary aligns with the upper boundary of the SE_OCTANT_LOWER_LEFT_FRONT octant's <Spatial Extent> instance, if present.

    4. 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 SE_OCTANT_UPPER_LEFT_FRONT octant but within that of the SE_OCTANT_UPPER_RIGHT_FRONT octant.

    5. 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 SE_OCTANT_UPPER_LEFT_BACK octant and not within that of the SE_OCTANT_UPPER_LEFT_FRONT octant.

    6. 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 SE_OCTANT_UPPER_LEFT_FRONT octant and not within that of the SE_OCTANT_LOWER_LEFT_FRONT octant.

  7. If a branch with SE_OCTANT_LOWER_RIGHT_BACK is present, its <Spatial Extent> instance shall specify the area of the lower right back octant, from point "d" to point "k" in Figure 3. such that

    1. its left boundary aligns with the right boundary of the SE_OCTANT_LOWER_LEFT_BACK octant's <Spatial Extent> instance, if present; and

    2. its front boundary aligns with the back boundary of the SE_OCTANT_LOWER_RIGHT_FRONT octant's <Spatial Extent> instance, if present; and

    3. its upper boundary aligns with the lower boundary of the SE_OCTANT_UPPER_RIGHT_BACK octant's <Spatial Extent> instance, if present.

    4. 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 SE_OCTANT_LOWER_RIGHT_BACK octant and not that of the SE_OCTANT_LOWER_LEFT_BACK octant.

    5. 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 SE_OCTANT_LOWER_RIGHT_BACK octant and not within that of the SE_OCTANT_LOWER_RIGHT_FRONT octant.

    6. 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 SE_OCTANT_UPPER_RIGHT_BACK octant and not within that of the SE_OCTANT_LOWER_RIGHT_BACK octant.

  8. If a branch with SE_OCTANT_LOWER_LEFT_BACK is present, its <Spatial Extent> instance shall specify the area of the lower left back octant, from point "c" to point "j" in Figure 3. such that

    1. its right boundary aligns with the left boundary of the SE_OCTANT_LOWER_RIGHT_BACK octant's <Spatial Extent> instance, if present;

    2. its front boundary aligns with the back boundary of the SE_OCTANT_LOWER_LEFT_FRONT octant's <Spatial Extent> instance, if present; and

    3. its upper boundary aligns with the lower boundary of the SE_OCTANT_UPPER_LEFT_BACK octant's <Spatial Extent> instance, if present.

    4. 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 SE_OCTANT_LOWER_LEFT_BACK octant but within that of the SE_OCTANT_LOWER_RIGHT_BACK octant.

    5. 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 SE_OCTANT_LOWER_LEFT_BACK octant and not within that of the SE_OCTANT_LOWER_LEFT_FRONT octant.

    6. 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 SE_OCTANT_UPPER_LEFT_BACK octant and not within that of the SE_OCTANT_LOWER_LEFT_BACK octant.

  9. If a branch with SE_OCTANT_LOWER_RIGHT_FRONT is present, its <Spatial Extent> instance shall specify the area of the lower right front octant, from point "b" to point "i" in Figure 3. such that

    1. the <Location 3D> instance representing its lower right front corner corresponds to that of O's <Spatial Extent> instance;

    2. its left boundary aligns with the right boundary of the SE_OCTANT_LOWER_LEFT_FRONT octant's <Spatial Extent> instance, if present; and

    3. its back boundary aligns with the front boundary of the SE_OCTANT_LOWER_RIGHT_BACK octant's <Spatial Extent> instance, if present.

    4. its upper boundary aligns with the lower boundary of the SE_OCTANT_UPPER_RIGHT_FRONT octant's <Spatial Extent> instance, if present.

    5. 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 SE_OCTANT_LOWER_RIGHT_FRONT octant and not that of the SE_OCTANT_LOWER_LEFT_FRONT octant.

    6. 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 SE_OCTANT_LOWER_RIGHT_FRONT octant and not within that of the SE_OCTANT_LOWER_LEFT_FRONT octant.

    7. 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 SE_OCTANT_UPPER_RIGHT_FRONT octant and not within that of the SE_OCTANT_LOWER_RIGHT_FRONT octant.

  10. If a branch with SE_OCTANT_LOWER_LEFT_FRONT is present, its <Spatial Extent> instance shall specify the area of the lower left front octant, from point "a" to point "h" in Figure 3. such that

    1. its right boundary aligns with the left boundary of the SE_OCTANT_LOWER_RIGHT_FRONT octant's <Spatial Extent> instance, if present; and

    2. its back boundary aligns with the front boundary of the SE_OCTANT_LOWER_LEFT_BACK octant's <Spatial Extent> instance, if present.

    3. its upper boundary aligns with the lower boundary of the SE_OCTANT_UPPER_LEFT_FRONT octant's <Spatial Extent> instance, if present.

    4. 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 SE_OCTANT_LOWER_LEFT_FRONT octant but within that of the SE_OCTANT_LOWER_RIGHT_FRONT octant.

    5. 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 SE_OCTANT_LOWER_LEFT_BACK octant and not within that of the SE_OCTANT_LOWER_LEFT_FRONT octant.

    6. 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 SE_OCTANT_UPPER_LEFT_FRONT octant and not within that of the SE_OCTANT_LOWER_LEFT_FRONT octant.

  11. If O has eight branches, the strict_organizing_principle field of O shall be set to SE_TRUE; otherwise it shall be set to SE_FALSE.

Rationale

  1. The octant-related organization shall provide a <Spatial Extent>, so that the data provider specifies the bounding volume that the octant is dividing into octants.

  2. Each component representing an octant shall specify a <Spatial Extent> instance, because although octants are intended to be of equal size, "size" is not invariant under coordinate transformation. The <Spatial Extent> instances are necessary to ensure that the boundaries between octants are well-defined when coordinate conversions and transformations are applied.

  3. The <Spatial Extent> instances of the branches and the octants that they represent shall correspond.

  4. These <Spatial Extent> instances shall be 3D, because the concept of an octant is inherently 3D.

Example

No example supplied.

FAQs

Why specify a <Spatial Extent> for each branch of an octant? Aren't the octants of equal size?

'Size' is not invariant under coordinate transformation.


Prev: Non Self Overlapping Perimeter Data Locations. Next: Parallelepiped Structure. Up:Index.