ROTATION DATA TYPE

From Software Product Documentation
Jump to navigation Jump to search

C-Motion introduced the ROTATION data type in 2019 to handle the storage of a 4x4 Transformation matrix containing the 6 DOF information for a Sensor or Segment.

This was introduced to handle C-Motion DSX results and to handle Theia Markerless Results

Each signal contains a 4x4 Rotation matrix that transforms a signal from the local coordinates of the sensor/segment to the laboratory coordinates

[R4x4] [Vlocal4x1] = [Vlab4x1]

The signals are stored in column major format in the c3d file, but displayed and used in Visual3D in the command row major format of Visual3D.

ROTATION signals can be used to define LANDMARKS, define SEGMENTS, and to Track SEGMENTS.

C3D_ROTATION_PARAMETERS

The ROTATION GROUP

USED = Number of ROTATION signals
The parameter name USED represents the number of 3D points in a C3D file, the number of analog channels, and the number of rotation signals. The three unique parameters are assigned to their own groups and referred to as POINT:USED, ANALOG:USED, and ROTATION:USED to avoid confusion.
DATA_START = Block number for the start of the Data Block
The ROTATION:DATA_START parameter is an unsigned 16-bit integer that points to the location of the start of the Rotation data section within the C3D file, allowing the Rotation section to start anywhere within the first 32Mb (65535*512/1024) of the C3D file.
RATE = Sampling Rate
RATIO = Ratio of ROTATION sample rate to POINT sample rate
FRAMES = Number of frames of data
Since the number of frames within each C3D file is stored in the C3D file parameter section as ROTATION:FRAMES, there is no need for an “end-of-data” marker - data is simply written from the first frame to the last frame. It is recommended that any unused storage in the final 512-byte block of the C3D file should be filled with 0x00h. While this might seem unnecessary in modern environments it will help debugging and fault-finding. Rotation samples can cross the 512- byte block boundaries within the C3D file.
LABELS = Name of each ROTATION signal
DESCRIPTIONS = Description of each ROTATION signal

C3D_ROTATION_DATA

Each signal is represented by 17 float values (there is no physical meaning for scaling integer data)
The Rotation signals are written as sequential frames starting in the 512-byte block in the C3D file specified by the POINT:DATA_START parameter. The data section simply consists of sequential frames of data samples.
16 entries for the 4x4 ROTATION matrix. stored as columns
1 entry for a reliability metric.
Rotation samples may only be stored in 32-bit floating-point format. This means that the sign of the POINT:SCALE parameter must be negative.
Retrieved from ""