3D Data – Floating-point Format

If the POINT:SCALE parameter is negative then the 3D data section will contain scaled floating-point format data for each stored trajectory.  This format provides increased precision and, since the data is stored as scaled values, there is no need to apply a scaling factor to the data.  Since the floating-point format uses eight 16-bit words to store a 3D point, it will result in C3D files that are double the size of integer format C3D files.  Note that a valid scaling factor is still required as it is used in the calculation of the 3D point residual value.

The POINT:SCALE parameter is one of the parameter section values that is copied to the C3D file header (words 7-8) as can be quickly located and read by software applications without requiring a detailed search of the parameter section.  The 3D floating-point record is organized as follows:

Word

Contents (Floating-point format)

1 – 2

The scaled X co-ordinate of the point.

3 – 4

The scaled Y co-ordinate of the point.

5 – 6

The scaled Z co-ordinate of the point.

7 – 8

After converting to a signed integer:

Byte 1: cameras that measured the marker (1 bit per camera using bits 0-7)

Byte 2: average residual divided by the POINT:SCALE factor.

Figure 21 – 3D point data storage using floating-point format.

The first three floating-point words record the scaled X, Y, and Z co-ordinate values of the 3D data point.  Word four is a floating-point value that must be converted to a signed integer and then interpreted as two bytes.  The first byte records which observers (normally cameras) provided information used in calculating the 3D point, while the second byte contains the average residual for the 3D point measurement.  The 3D point residual is a measurement that provides information about the relative accuracy of the 3D measurement.

Figure 22 - Residual and mask storage – Floating-point format.

More:

Notes for Programmers - Floating Point 3D Data