A cell's joint data records follow its attribute data (if present) in the cell's definition, but only if cell flag bit 1 is set. Although it appears possible to add joint data to any type of cell, only ordinary sets (type 700) should be assigned joint data.
Joint data is used to encode both dynamic joints (also known as kinematic joints) and terminal control frames (TCFs). A set may have either, neither or both of these characteristics.
Dynamic joints come in two types: rotational and translational. The former is used to represent a pivoting joint, about the joint's local Z-axis, whilst the latter represents linear travel, again along the joint's local Z-axis. In both cases, the set and its contents are affected by the joint position.
TCFs identify locations on AutoMod vehicles and queues where loads may be attached.
The first record making up this section is the joint type. By convention, this record is formatted as follows (although ACE is inconsistent in its formatting of this record with regards to leading whitespace):
JointType<nl>
where JointType is a decimal integer identifying the joint type and <nl> is the newline sequence.
The second record making up this section is the joint data record, which consists of five fields: joint speed, joint minimum value, joint maximum value, joint current value and the TCF data present flag. By convention, this record is formatted as follows (although ACE is inconsistent in its formatting of this record with regards to whitespace):
JointSpeed<spc>JointMin<spc>JointMax<spc>JointCur<spc>TCFPresent<nl>
where JointSpeed is a double containing the joint speed, JointMin is a double containing the smallest possible joint value, JointMax is a double containing the largest possible joint value, JointCur is the current joint value and TCFPresent is an boolean flag indicating whether TCF data is present.
This record is followed by the joint geometry data, which is used to transform the Z-axis of the joint, relative to its local position; the contents of the dynamic set are unaffected by this transformation. Motion of the joint is relative to this Z-axis. The only transformations that make sense here are rotations about the X- and Y-axes to reposition the joint's Z-axis without affecting any contents of the joint; translations and scaling changes have no benefits. Refer to the Geometry Data section for information on the format of this record. This information is ignored if the joint type is 0.
The joint geometry data is always terminated by a record containing a zero followed by a new-line sequence:
0<nl>
If the TCF data present flag is set, then the terminal geometry data follows; if the flag is clear, this data is not present. This transformation data is used to determine how loads that are attached to the TCF are oriented and stacked; the transformation applies only to attached loads and not to the contents of the TCF set. Refer to the Geometry Data section for information on the format of this record.
This field is a decimal integer value that encodes the joint type:
| Code | Joint Type |
|---|---|
| 0 | Not a joint - TCF data only. |
| 1 | Rotation joint. |
| 2 | Translation joint. |
If the Joint Type is 0, then the TCF data present flag must be 1.
Here are some example records to illustrate this section:
1 10.0 0.0 90.0 45.0 0 0.0 0.0 0.0 0 0.0 0.0 0.0 1.0 1.0 1.0 0
The above data defines a rotational, dynamic joint. The speed of the joint is 10 degrees per time unit, and motion is permitted between 0 and 90 degrees. The initial position of the joint is at 45 degrees. This is not a terminal set and so no TCF data is present. A default transformation (no translation, no rotation, and unit scaling) is applied to the joint, meaning that the joint's axes are oriented with the owning cell set's axes; rotation takes place around the cell's/joint's local Z-axis.
0 0.0 0.0 0.0 0.0 1 0.0 0.0 0.0 0 0.0 0.0 0.0 1.0 1.0 1.0 0 0.0 0.0 0.0 0 0.0 0.0 0.0 1.0 1.0 1.0
This example defines a terminal set with no dynamic joint data. Dummy joint data is present (which is ignored since the joint type is none) and the supplied TCF geometry data applies a default transformation (no translation, no rotation, and unit scaling) to the TCF transformations.
2 500.0 -2000.0 10000.0 0.0 1 0.0 0.0 0.0 0 -90.0 0.0 0.0 1.0 1.0 1.0 0 0.0 0.0 0.0 0 0.0 0.0 0.0 1.0 1.0 1.0
The above joint data defines a translational, dynamic joint which is also a terminal set. The speed of the joint is 500 distance units per time unit, with motion permitted in the range -2000.0 to 10,000.0 distance units. The initial position of the joint is at 0. The joint applies a transformation to rotate the joint -90.0 degrees about the X-axis. This aligns the joint's Z-axis with the owning cell's Y-axis, so that as the current joint value increases, the cell and its contents travel along the cell's Y-axis; the orientation of the cell and (in particular) its contents are unaffected by this transformation otherwise. Since this cell is also a terminal set, TCF data is appended. In this case, a default transformation is applied to the TCF.