PRIMER 22.1

Data Stored for Positions

Data Stored for Positions

As the card format above shows a "Position" stores a title, then a centroid and 3x3 set of direction cosines for each assembly in the Dummy / Mechanism. The direction cosines are written in double precision.

The "Reference" Position

The first time a position is Saved an extra "reference position", the current configuration, is created and all user-defined positions follow this. This always represents the current position and orientation of the dummy assemblies, and it is updated whenever positioning takes place to keep it current. It is marked "do not delete" because it is required for saving and retrieving of other positions to work correctly. A moment's thought about the process to be gone through when retrieving a saved position will show why this is necessary.

Firstly consider how the current orientation of each Dummy and Mechanism assembly is defined and maintained:

  • Dummy and Mechanism assemblies do not have an intrinsic coordinate system when first created.

  • Therefore the positioner assigns a coordinate system to each assembly the first time it is used. This consists of

    A notional centroid. This is actually the average nodal coordinate rather than the true centre of gravity, but it serves its purpose.
    An orientation defined by a rotation matrix of direction cosines. This is the "inital orientation" of the assembly, and it always starts off as a unit matrix.

  • Thereafter any positioning operation which moves the assembly will update both centroid and rotation matrix.

  • The "current", as in what you see on the screen and what would be written out to a keyword file, position of each assembly is stored as its "reference position".

Now consider what happens when the current position is saved:

  • An exact copy of the current centroid and rotation matrix is saved as an explicit *POSITION

Finally consider what happens when a stored *POSITION is retrieved, which you can think of as working like this:

  • Firstly the current position of the dummy, as defined by the current reference position, is "undone" to get back to the original position and orientation when first seen by the positioner.

  • Then the translation and orientation implied by the saved *POSITION is applied to restore the saved status and achieve the new shape.

In practice matrix arithmetic allows this do be done by a single transformation of "current" to "new", but the key point is that you must know the "current" position in order to achieve the correct"new" position. This is why the reference position is always maintained, and it will be obvious that deleting it means that PRIMER will no longer know what the current position is, and therefore will be unable to restore a saved position correctly.