Museum

Home

Lab Overview

Retrotechnology Articles

Online Manuals

⇒ concat_tran(3G) — HP-UX 5.20

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

concat_matrix(3g)

concat_transformation(3g)

flush_matrices(3g)

pop_matrix(3g)

push_matrix(3g)

replace_matrix(3g)

inquire_size(3g)

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

Typewritten Software • bear@typewritten.org • Edmonds, WA 98026