CONCAT_TRANSFORMATION(3G)
NAME
concat_transformation − pre-concatenate or post-concatenate a transformation matrix with the current transformation matrix.
SYNOPSIS
C SYNTAX
void concat_transformation2d(fildes,xform2,sequence,stack);
int fildes,sequence,stack;
float xform2[3][2];
void concat_transformation3d(fildes,xform3,sequence,stack);
int fildes,sequence,stack;
float xform3[4][4];
FORTRAN77 SYNTAX
See Language Dependencies Below
subroutine concat_transformation2d(fildes,xform2,
sequence,stack)
integer*4 fildes,sequence,stack
real xform2(2,3)
subroutine concat_transformation3d(fildes,xform3,
sequence,stack)
integer*4 fildes,sequence,stack
real xform3(4,4)
PASCAL SYNTAX
type
two_d_xform = array [1..3][1..2] of real;
three_d_xform = array [1..4][1..4] of real;
procedure concat_transformation2d(fildes:integer;
var xform2:two_d_xform; sequence,stack:integer);
procedure concat_transformation3d(fildes:integer;
var xform3:three_d_xform; sequence,stack:integer);
HP-UX COMPATIBILITY
Level: HP-UX/STANDARD
Origin: HP
DESCRIPTION
INPUT PARAMETERS
fildes
is an integer file descriptor returned by gopen when an I/O path to a graphic device is opened.
xform2
is a 3x2 (2-Dimensional transform) matrix.
xform3
is a 4x4 (3-Dimensional transform) matrix.
sequence
if set to POST, post-concatenation is performed.
if set to PRE, pre-concatenation is performed.
stack
if set to PUSH, the result matrix is to pushed on top of the matrix stack.
if set to REPLACE, the the result matrix replaces the top matrix on the matrix stack.
DISCUSSION
The specified matrix is concatenated with the current transformation matrix (top matrix on the matrix stack). The resulting matrix is pushed on the top of the matrix stack if stack is PUSH. If stack is REPLACE, the resulting matrix replaces (destructive replacement) the current top of matrix stack. In either case, the resulting matrix becomes the current transformation matrix and is left on the top of the matrix stack. The current transformation matrix is used to transform subsequent output primitives.
All matrices are maintained in 3-Dimensional (4x4) form. If concatenate_matrix2d is called, the elements of xform2 are mapped to a 4x4 matrix for the concatenation as follows:
| a00 a01 | | a00 a01 0 0 |
| a10 a11 | -> | a10 a11 0 0 |
| a20 a21 | | 0 0 1 0 |
| a20 a21 0 1 |
Post Concatenation of matrices should be used very carefully. It is not device independent because the post concatenation occurs after the vdc-to-device coordinate transformation. The user of this feature should inquire the range of device coordinates using inquire_size.
When performing perspective transformations, a perspective model where the eye is at origin of perspective space is recommended. Any other model can easily be modified by a single translation step.
LANGUAGE DEPENDENCIES
FORTRAN77
Fortran requires a transposition of array rows and columns due to the manner in which it stores arrays.
SEE ALSO
concat_matrix(3g), concat_transformation(3g), flush_matrices(3g), pop_matrix(3g), push_matrix(3g), replace_matrix(3g), inquire_size(3g).
Hewlett-Packard Company — May 11, 2021