#### 4.2.11 TLIST Files

The conventional suffix for a `TLIST` file is `.grp` ("group") or `.prj` ("projective" matrices).

Collection of 4x4 matrices, used in the `transforms` section of and `INST` object.

Syntax:

         TLIST                    # key word
         <4x4 matrix (16 floats)>
         ...                  # any number of 4x4 matrices
         transform {             # reference to a transform object
         <transform object (can be a handle)>
         }
         tlist {                 # nested TLIST
         <TLIST OOGL object (can be a handle)>
         }

`TLIST`s are used only within the `transforms` clause of an `INST` object. They cause the `INST`s `geom` object to be instantiated once under each of the transforms in the `TLIST`. The effect is like that of a `LIST` of `INST`s each with a single transform, and all referring to the same object, but is more efficient.

`TLIST`s can be nested: effectively this means that all transformations in each nested `TLIST` object are multiplied (from the left) by the transformations in the outer `TLIST` object.

Be aware that a `TLIST` is a kind of geometry object, distinct from a `transform` object. Some contexts expect one type of object, some the other. For example in

         INST transform { : myT } geom { ... }

myT must be a transform object, which might have been created with the GCL

         (read transform { define myT 1 0 0 1 ... })

while in

           INST transforms { : myTs } geom { ... }
           or
           INST transforms { LIST {: myTs} {< more.prj} } geom { ... }

myTs must be a geometry object, defined e.g. with

           (read geometry { define myTs { TLIST 1 0 0 1 ... } })

A `TLIST BINARY` format is accepted. Binary data begins with a 32-bit integer giving the number of transformations, followed by that number of 4x4 matrices in 32-bit floating-point format. The order of matrix elements is the same as in the ASCII format.