+* MATRIX - AFFINE TRANSFORM SUPPORT PACKAGE
+*
+*
+* AUTHOR:
+*
+* PHILIPP HACHTMANN
+*
+* VERSIONS:
+* 0.1 - INITIAL REVISION (22.12.2007
+*
+*
+* PURPOSE:
+*
+* THIS LIBRARY PROVIDES AFFINE TRANSFORMATION ROUTINES TO
+* PLOTTING ROUTINES AND OTHER SOFTWARE.
+*
+*
+* DATA REPRESENTATION:
+*
+*
+* MATRIX FORMAT: | A11 A12 |
+* M= | |
+* | A21 A22 |
+*
+* A11-A22 ARE SINGLE PRECISION FLOAT VALUES COMPLIANT TO THE
+* HONEYWELL MATHEMATICAL LIBARAY. EVERY VALUE USES TWO
+* 16 BIT MACHINE WORDS.
+* IF A MATRIX IS USED AS A DAC ARGUMENT, A POINTER TO THE FIRST
+* ELEMENT, A11, HAS TO BE USED.
+*
+*
+* VECTOR FORMAT: | A1 |
+* V= | |
+* | A2 |
+*
+* A1 AND A2 ARE SIGNED INTEGER VALUES. EVERY VALUE USES ONE
+* 16 BIT MACHINE WORD.
+* IF A VECTOR IS USED AS A DAC ARGUMENT, A POINTER TO THE FIRST
+* ELEMENT, A1, HAS TO BE USED.
+*
+*
+* AFFINE TRANSFORM FORMAT:
+*
+* AN AFFINE TRANSFORM CONSISTS OF A MATRIX FOR ROTATING AND SCALING
+* AND A VECTOR VOR RELOCATION OF THE RESULT.
+* A VECTOR IS TRANSFORMED BY FIRST MULTIPLYING THE MATRIX WITH IT
+* AND THEN ADDING THE RELOCATION VECTOR:
+*
+* | A11 A12 | | VI1 | | VT1 |
+* VO = MT * VI + VT = | | * | | + | |
+* | A21 A22 | | VI2 | | VT2 |
+*
+* | VI1*A11 + VI2*A12 + VT1 |
+* = | |
+* | VI1*A21 + VI2*A22 + VT2 |
+*
+* MT AND VT ARE THE TRANSFORMATION MATRIX AND VECTOR, VI THE INPUT
+* VECTOR, VO THE RESULT VECTOR.
+*
+* AN AFFINE TRANSFORM IS STORED AS A CONCATENATION OF A MATRIX AND
+* A VECTOR. HERE IS THE MEMORY LAYOUT:
+*
+* '000 : MT11 UPPER
+* '001 : MT11 LOWER
+* '002 : MT12 UPPER
+* '003 : MT12 LOWER
+* '004 : MT21 UPPER
+* '005 : MT21 LOWER
+* '006 : MT22 UPPER
+* '007 : MT22 LOWER
+* '010 : VT1
+* '011 : VT2
+*
+* FOR EVERY TRANSFORMATION, '12 WORDS HAVE TO BE RESERVED.
+* IN AN APPLICATION, A TRANFORMATION VARIABLE COULD BE
+* DECLARED WITH:
+*
+* TRANS BSS '12
+*
+*
+*
+*********************************************************************************
+*
+*
+*
+* M$INIT: INITIALISE MATRIX TO IDENTITY
+*
+* THE MATRIX ARGUMENT IS SET TO
+*
+* | 1.0 0.0 |
+* M= | |
+* | 0.0 1.0 |
+*
+* WICH RESULTS TO THE IDENTITY TRANSFORMATION.
+*
+* JST M$INIT
+* DAC MATRIX POINTER TO A MATRIX
+*
+*
+*
+* M$MUL: MATRIX MULTIPLICATION
+*
+* JST M$MUL
+* DAC TARGET POINTER TO TARGET MATRIX
+* DAC MATRIX1 POINTER TO LEFT MATRIX
+* DAC MATRIX2 POINTER TO RIGHT MATRIX
+* DAC 0 FOR FORTRAN IV COMPATIBILITY
+*
+*
+*
+* M$APLI: APPLY MATRIX TO VECTOR
+*
+* THIS ROUTINE CONVERTS THE VECTOR ELEMENTS TO FLOATING POINT VALUES,
+* APPLIES THE TRANSFORMATION TO THEM AND ROUNDS THE RESULTS BACK TO
+* INTEGER VALUES. THEN IT SAVES THE NEW VECTOR IN THE PLACE OF THE
+* OLD VECTOR.
+*
+* JST M$APLI
+* DAC MATRIX MATRIX TO APPLY
+* DAC VECTOR VECTOR TO TRANSFORM
+* DAC 0 FOR FORTRAN IV COMPATIBILITY
+*
+*
+* M$APII: APPLY MATRIX TO PAIR OF INTEGERS AS VECTOR
+*
+* THIS ROUTINE USES TWO DISTINCT INTEGER POINTERS INSTEAD OF ONE VECTOR
+* POINTER. THE REST OF THE BEHAVIOR IS EXACTLY LIKE M$APL.
+*
+* JST M$APLI
+* DAC MATRIX MATRIX TO APPLY
+* DAC X X COORDINATE OF ARGUMENT VECTOR
+* DAC Y Y COORDINATE OF ARGUMENT VECTOR
+*
+*
+* M$ROT: ROTATE MATRIX
+*
+* THIS ROUTINE TAKES A MATRIX AND ADDS A ROTATION TO IT.
+* INTERNALLY, THE ROUTINE CREATES A ROTATION MATRIX AND THEN
+* MULTIPLIES IT WITH THE ARGUMENT MATRIX. THE ROTATION IS SPECIFIED
+* COUNTERCLOCKWISE FORWARD, ANGLE IN RADIANT.
+* THE ANGLE ARGUMENT IS A SINGLE PRECISION FLOATING POINT NUMER
+* TAKING TWO WORDS TO STORE.
+*
+* JST M$ROT
+* DAC MATRIX MATRIX TO MODIFY
+* DAC ANGLE RADIANT ANGLE
+* DAC 0 FOR FORTRAN IV COMPATIBILITY
+*
+* M$SCLE: SCALE MATRIX
+*
+* THIS ROUTINE WORKS SIMILAR TO M$ROT BUT SCALES THE ARGUMENT MATRIX.
+* THE SCALE FACTOR IS A FLOATING POINT NUMBER. LIKE THE ROTATION ANGLE.
+*
+* JST M$SCLE
+* DAC MATRIX MATRIX TO MODIFY
+* DAC SCALE SCALE FACTOR
+* DAC 0 FOR FORTRAN IV COMPATIBILITY
+*
+*