 |
PK_TRANSF_sf_t |
|
struct PK_TRANSF_sf_s
{
double matrix[4][4]; --- homogeneous transformation matrix
};
typedef struct PK_TRANSF_sf_s PK_TRANSF_sf_t;
Used in:
PK_TRANSF_ask
PK_TRANSF_create
The array 'matrix' contains the components that make up the
transformation.
The matrix (M) operates as a post-multiplier on row vectors containing
homogenous coordinates thus:
(x',y',z',s') = (x,y,z,s) M
where the conventional 3-d coordinates are
(x/s,y/s,z/s).
The matrix thus consists of
( , Px )
( R , Py )
( , Pz )
( Tx, Ty, Tz, S )
R = a non singular transformation matrix.
This matrix contains the rotation, reflection, non-uniform scaling
and shearing components.
T = a translation vector.
P = perspective terms in viewing transformations.
Must be zero in transformations used for modelling.
S = a global scaling factor. It has to be greater than zero.
Its value is the inverse of the global scale.
The subscripts of 'matrix' corresponding to the above form are:
( [0][0] [1][0] [2][0] [3][0] )
( [0][1] [1][1] [2][1] [3][1] )
( [0][2] [1][2] [2][2] [3][2] )
( [0][3] [1][3] [2][3] [3][3] )
For a transformation involving uniform scale, it is advisable, although not
compulsory, that the magnitude of the determinant of R be one to Parasolid
angular tolerance (and so the uniform scale is 1/S). If the determinant is not
one then geometry types may change when transformed as explained under
PK_GEOM_transform.