Although the method of storing the actual sample values is different between the Integer and Floating Point versions of the C3D file format, both versions organize the individual analog data samples in the same way within the 3D Data section of the C3D file.
The analog record for each 3D frame can contain one or more analog data samples where each analog data sample consists of one or more analog measurements (channels) usually recorded from an ADC (analog to digital converter) during the 3D frame sample period. The parameter ANALOG:RATE records the total number of analog data samples per 3D frame while the parameter ANALOG:USED records the number of analog measurements, or channels, within each analog data sample. All of this data is recorded at a 3D frame rate whose value is recorded in the POINT:RATE parameter.
Thus, when analog data is present in the C3D file, each 3D frame is followed by one or more analog samples for each analog channel. These are organized as shown below where N is the number of analog measurements per 3D frame (stored in word 10 of the C3D file header), and n is the number of analog channels that are stored in the C3D file. The number of channels sampled is not stored in the C3D header directly but can be calculated as (Word 3) / (Word 10) or (total analog samples per 3D frame) / (number of samples per analog channel):
|
Analog Data Sample 1 |
Analog Channel 1 |
|
Analog Channel 2 | |
|
| |
|
Analog Channel N | |
|
Analog Data Sample 2 |
Analog Channel 1 |
|
Analog Channel 2 | |
|
| |
|
Analog Channel N | |
|
through to the last sample | |
|
Analog Data Sample n |
Analog Channel 1 |
|
Analog Channel 2 | |
|
| |
|
Analog Channel N | |
Figure 26 The organization of analog data
For example, let us consider a C3D file that contains 3D point information that has been recorded at 60Hz, and contains 30 analog channels that have been recorded at a rate of 600 samples per second. This information is stored in the C3D file in the following parameters:
· POINT:RATE = 60
· ANALOG:USED = 30
· ANALOG:RATE = 600
Thus, referring to Figure 26, the analog data will be organized so that the each Analog Data Sample will contain 30 values one value per analog channel. This is recorded in the ANALOG:USED parameter. There will be 10 Analog Data Samples per 3D frame of data and there will be 60 3D frames per second as recorded in the POINT:RATE parameter. As you can see, the C3D file does not directly store the number of Analog Data Samples per frame as a parameter; instead this value is calculated by dividing the ANALOG:RATE value by the POINT:RATE value.
Note that the Analog Data Samples per 3D frame value is stored in word 10 of the C3D file header, together with a count of the total number of analog samples per 3D frame (in this case 300 ANALOG:USED * Analog Data Samples) so that the analog data can be quickly read by any application that opens a C3D file.