The explicit definition of 3 vector transformations or the implicit coordinate frames they represent is done with the Transf3 data structure.

typedef struct transf3 { Ts_id ts_id; /* Tina structure identifier */ unsigned int type; unsigned int label; Transform3 T; struct list *props; } Transf3;

Where Transform3

typedef struct transform3 { Ts_id ts_id; /* Tina structure identifier */ int type; struct mat3 R; struct vec3 t; } Transform3;

and also

typedef struct transform2 { Ts_id ts_id; /* Tina structure identifier */ int type; struct mat2 R; struct vec2 t; } Transform2;

represent a rotation and translation matrix. Transformations are achieved

according to
The physical meaning of the
transformation in terms of coordinate frames is that the application of the
transformation takes geometry from the current frame to the new frame see the
Math Library). Hence **t** is the transformation of frame 1 with respect to
frame 2 and the column vectors of **R** are the unit x, y and z vectors of
frame 1 with respect to the coordinates of frame2.

Again Tranf3 is principally used by Geomstat.

Transf3 *transf3_alloc(unsigned int type) Transf3 *transf3_make(Transform3 T, int type) Transf3 *transf3_copy(Transf3 * transf) void transf3_free(Transf3 * transf) void transf3_format(Transf3 * transf) int transf3_number(List * transfs)