1. If a point is invalid then the fourth word (camera mask and residual) will be set to –1 and the X, Y and Z co-ordinate values should all be zero.
2. If word 4 is not positive then the point is considered a valid point and should be interpreted as follows:
a. Byte 1 has seven bits that are set to “1” corresponding to the cameras that contributed to the measurement of the point - bit 1 represents the first camera, bit 2 the second, etc. By convention, all camera bits will be set to 0 for interpolated, filtered or otherwise calculated data points. Note that the camera bits are in the high byte of word 4 of the integer record – the most significant bit of this word is the sign bit. Therefore, there are only seven bits available for the cameras. Any point with a negative residual is interpreted as invalid - setting the 8th bit produces a negative signed integer and hence the point would be interpreted as invalid if this bit was used to store a camera flag.
b. Byte 2 of word 4 represents the average of the residuals for the measurement on the point and must be multiplied by the scaling factor. If byte 2 is zero then the 3D point is interpolated or otherwise generated, and an examination of the camera mask in byte 1 will confirm this, i.e. the entire word should be zero.
3. Within each 3D sample, the points are stored in the order that they are listed in the parameter section followed by the analog data (ordering by frames) if any analog data is present.
4. When a C3D file contains signed integer 3D data then any corresponding analog data values must also be stored in signed integer format.
5. Software applications should be prepared to handle corrupted C3D files that contain header or parameter records that do not contain the correct pointers to the start of the 3D data section.