10.138. Rotate Sample Reference Frame

Group (Subgroup)

Sampling (Rotating/Transforming)

Description

This Filter rotates the spatial reference frame of an Image Geometry about a principal axis by a multiple of 90 degrees. It modifies the (X, Y, Z) position of every Cell so the data is correctly represented in the newly defined reference frame. For example, a 90 degree rotation about the (001) axis moves a Cell at (10, 0, 0) to (0, -10, 0), because the new reference frame has x’ = y and y’ = -x.

Supported Rotations (Important)

This Filter is a lossless reference-frame rotation: the output is an exact re-labeling (permutation) of the input Cells, with no interpolation, no data loss, and no introduced background. That is only possible when the rotation maps the cubic voxel grid exactly onto itself. Those rotations form the octahedral rotation group (the 24 rotational symmetries of a cube):

  • the 90, 180, or 270 degree rotations about the X (100), Y (010), or Z (001) axis — the common cases; and

  • the other cube-symmetry rotations: a 180 degree rotation about a face-diagonal axis such as (110), and a 120 or 240 degree rotation about a body-diagonal axis such as (111).

The Filter enforces this in preflight. Any rotation that does not map the grid onto itself — an arbitrary angle (e.g. 45 degrees), or an off-group axis/angle combination such as 90 degrees about (111) — is rejected with an error, because a nearest-neighbor resample of such a rotation would silently drop and duplicate voxels and pad the result with background values. To apply an arbitrary rotation (with interpolation), use the Apply Transformation To Geometry filter instead.

Fig. 1: Rotating the sample reference frame rotates the coordinate axes and resamples the data onto the new grid, leaving the microstructure fixed (left); a geometric rotation instead rotates the data within fixed axes (right).

⚠ Limited Verification

The Rotation Representation parameter selects how the rotation is specified. Both forms must still resolve to a rotation that maps the voxel grid onto itself (see Supported Rotations above):

  • Axis Angle [0]: a unit axis vector (x, y, z) and an angle in degrees.

  • Rotation Matrix [1]: a 3x3 rotation matrix entered directly. It must be a proper axis-permutation matrix (each entry -1, 0, or +1, one nonzero per row and column, determinant +1).

The rotation matrix equivalent to a 90 degree rotation about (001) is:

0

-1

0

1

0

0

0

0

1

Perform Slice By Slice Transform

The Perform Slice By Slice Transform option applies the rotation independently to each Z slice (the slice index is preserved). It is used to express an in-plane sample transform for EBSD data. Because it keeps every output slice tied to the same input slice, it is only valid for rotations that preserve the Z (slice) axis: a rotation about the Z axis, or a 180 degree rotation about the X or Y axis. A 90 or 270 degree rotation about X or Y reorders slices and is rejected when this option is enabled. This option is specific to EBSD data and is not generally used.

Notes

The rotation will most likely produce an origin that differs from the input geometry’s origin (the transformed bounding box is repositioned). The Keep Input Geometry’s Origin option preserves the original origin instead; by default it is OFF and the transform-derived origin is used. To reset the origin and spacing afterward, use the Set Origin & Spacing filter.

Example

When importing EBSD data from EDAX, the user typically rotates the sample reference frame 180 degrees about the (010) (Y) axis. In the comparison below the original data origin is at (0, 0) microns, and after rotation the origin becomes (-189, 0) microns.

Imported EBSD Data Rotated about the (010) axis

Required Input Sources

Rotation Representation

The Rotation Representation parameter selects how the rotation is specified:

  • Axis Angle [0]: A unit axis vector (x, y, z) plus an angle in degrees. The most common form for single-axis rotations.

  • Rotation Matrix [1]: A 3x3 rotation matrix entered directly.

Notes on the Output Origin

The rotated geometry will most likely have an origin that differs from the input geometry’s origin (see EDAX example above). If you wish to keep the input origin, enable the Keep Input Geometry’s Origin option. By default, the option is OFF, so the transformation-derived origin is used.

Required Input Sources

Input Parameter(s)

Parameter Name

Parameter Type

Parameter Notes

Description

Perform Slice By Slice Transform

Bool

This option is specific to EBSD Data and is not generally used.

Rotation Representation

Choices

Which form used to represent rotation (axis angle or rotation matrix)

Rotation Axis-Angle [w]

Vector of Float32 Values

Order=i,j,k,w (Deg)

Axis-Angle in sample reference frame to rotate about.

Perform In-Place Rotation

Bool

Performs the rotation in-place for the given Image Geometry

Keep Input Geometry’s Origin

Bool

The input geometry’s origin is kept instead of the origin resulting from the transform

Transformation Matrix

DynamicTable

The 4x4 Transformation Matrix

Input Image Geometry

Parameter Name

Parameter Type

Parameter Notes

Description

Selected Image Geometry

Geometry Selection

Image

The target geometry on which to perform the rotation

Output Geometry and Data

Parameter Name

Parameter Type

Parameter Notes

Description

Created Image Geometry

DataGroupCreation

The location of the rotated geometry

Example Pipelines

  • INL Export

  • Export Small IN100 ODF Data (StatsGenerator)

  • TxCopper_Exposed

  • TxCopper_Unexposed

  • Edax IPF Colors

  • Confidence Index Histogram

DREAM3D-NX Help

If you need help, need to file a bug report or want to request a new feature, please head over to the DREAM3DNX-Issues GitHub site where the community of DREAM3D-NX users can help answer your questions.