Class Name: World 3X3

Superclass - SEDRIS Abstract Base

Definition

A nine element matrix containing scaling and rotation data as part of a World Transformation. The direction of rotation is determined by the right-hand rule.

Translation data is not provided by a World 3X3, because a World 3X3 object only exists as part of a World Transformation. The translation, or offset, component of a World Transformation is provided by the mandatory Location component of the World Transformation. In essence, a World 3X3 matrix can be considered to be a full transformation matrix in which the rightmost column and bottom row have been omitted, because each is implicitly (0, 0, 0, 1).

World Transformation objects usually exist in the scope of an Environment Root defining a non-LSR spatial reference frame. Consequently, World 3X3 objects usually exist within a 'world' spatial reference frame, hence the name.

The matrix multiplication order is defined by w = M * v, where M is the World 3X3 matrix, v is the original location vector, and w is the resulting location vector.

Primary Page in DRM Diagram:

Secondary Pages in DRM Diagram:

Example

  1. Scale and Rotation applied to a Model when placing an instance.
  2. The house near Dixie Rd. is facing east. The large house across the street is facing west.
See Local 4X4 for more examples and explanations on matrix structure.

FAQs

How is the transformation matrix stored?
SEDRIS stores matrices in row major order; that is, the first three elements correspond to the first row of the matrix, the following three elements correspond to the second row of the matrix, and so on (just as a float[3][3] in C is organized). Hence, if mat[][] is the matrix being used, then mat[i][j] is the element in row i and column j of the matrix.

What is the multiplication order for World 3X3 matrices?
If M is a World 3X3 transformation matrix and v is a column location vector, then the SEDRIS Level 0 API transforms v to a column location vector w by setting w = Mv.

post multiply example 2

Why was my Geometry Model Instance oriented in a different direction than I expected, after I applied its World Transformation?
There are at least two possibilities.
  1. Check that your rotation angles had the correct sign, given that the right hand rule is in effect.
  2. The World 3X3 of the World Transformation may have been constructed using invalid assumptions about the order of multiplication defined in SEDRIS. In this case, transposing the World 3X3 matrix would solve the problem, provided that the rotation angles were correct (see 1).

Why is a World 3X3 object allowed to have a Location component, considering that World Transformation itself is required to have a Location component?
Consider a transmittal containing an Environment Root defined in a geodetic spatial reference frame. This transmittal also contains an LSR Model within its Model Library, which is instanced in the geodetic Environment Root such that the Model SRF's y-axis is oriented to geodetic north.

Now consider a consumer who wishes to consume this transmittal in Augmented UTM rather than geodetic. If the World 3X3 is left as-is during the transformation performed by the API, it will now orient the Model SRF's y-axis to Augmented UTM north rather than the geodetic north. This will change the object's orientation from the originally intended direction.

Since geodetic space does not have a vector structure, a canonical LTP space must be embedded within geodetic space to convert the values of the World 3X3 matrix during the coordinate conversion/transformation operation. Since a Location is required to define a canonical LTP space, conversion of the World 3X3 object must be performed with respect to a Location. Allowing the World 3X3 to have a Location as a direct component allows the World 3X3 to inherit the Location component of its parent World Transformation, and thus define the necessary location for a coordinate conversion/ transformation operation.

Is a matrix in SEDRIS the same as a matrix in OpenGL?
No. A matrix in SEDRIS is stored in row major order, while in OpenGL, matrices are specified in column major order (as in the glMultMatrix function). Consequently, to correctly apply SEDRIS transformations in OpenGL programs, each matrix must be reordered, and in the case of World 3X3, the implicit (0, 0, 0, 1) rightmost column and bottommost row must be supplied explicitly.

Constraints

Composed of (one-way)

Component of (one-way)

Field Elements

SE_MATRIX_3X3_TYPE world_3X3; (notes)

Notes

Fields Notes

world_3X3

 Orientation matrix

Prev: Volume Light Behavior. Next: World Transformation. Up:Index.