Provided by: libncarg-dev_6.3.0-6build1_amd64 bug

NAME

       GACCUM_TRAN_MATRIX - Accumulate transformation matrix

DESCRIPTION

       gaccum_tran_matrix (Accumulate transformation matrix) - Constructs a GKS segment transformation matrix by
       starting with an existing matrix and composing it with a shift vector, a rotation  angle,  and  X  and  Y
       scale factors to create a new transformation matrix.  The rotation and scaling are done with respect to a
       user-defined fixed point.

SYNOPSIS

       #include <ncarg/gks.h>

       void gaccum_tran_matrix(const Gtran_matrix t_matrix, const Gpoint  *point,  const  Gvec  *shift,  Gdouble
       angle, const Gvec *scale, Gcoord_switch coord_switch, Gtran_matrix tran_matrix);

DESCRIPTION

       t_matrix    (Gfloat, Input) - A 2x3 GKS transformation matrix.

       point.x     (Gfloat,  Input)  -  X  coordinate  value  for  a  fixed point to be used for the scaling and
                   rotation parts of the output transformation.  point.x  is  either  in  world  coordinates  or
                   normalized device coordinates depending on the setting of the argument coord_switch described
                   below.

       point.y     (Gfloat, Input) - Y coordinate value for a fixed  point  to  be  used  for  the  scaling  and
                   rotation  parts  of  the  output  transformation.   point.y is either in world coordinates or
                   normalized device coordinates depending on the setting of the argument coord_switch described
                   below.

       shift.delta_x
                   (Gfloat,  Input)  -  The X component of a shift vector to be used for the scaling part of the
                   output transformation.  shift.delta_x is either in world  coordinates  or  normalized  device
                   coordinates depending on the setting of the argument coord_switch described below.

       shift.delta_y
                   (Gfloat,  Input)  -  The Y component of a shift vector to be used for the scaling part of the
                   output transformation.  shift.delta_y is either in world  coordinates  or  normalized  device
                   coordinates depending on the setting of the argument coord_switch described below.

       angle       (Input)  -  The  rotation  angle,  in radians, to be used for the rotation part of the output
                   transformation.

       scale.delta_x
                   (Gfloat, Input) - X coordinate scale factor to be used in the  scaling  part  of  the  output
                   transformation.

       scale.delta_y
                   (Gfloat,  Input)  -  Y  coordinate  scale factor to be used in the scaling part of the output
                   transformation.

       coord_switch
                   (Input) - A coordinate switch to indicate whether the values  for  the  arguments  point  and
                   shift  (described above) are in world coordinates or normalized device coordinates.  Possible
                   values include:

                   GCOORD_WC
                          World coordinates

                   GCOORD_NDC
                          Normalized device coordinates

                   tran_matrix (Gfloat, Output) - A 2x3 array that contains the GKS transformation matrix  in  a
                               form  that  can  be  used  as input to other GKS functions such as gset_seg_tran.
                               This matrix is constructed by composing  the  scale,  rotate,  and  shift  input,
                               described above, with the original input matrix t_matrix.

USAGE

       If  world  coordinates  are  used,  the  shift  vector and the fixed point are transformed by the current
       normalization transformation.

       The order in which the transformations are applied is: input matrix, scale, rotate, and shift.

       Elements tran_matrix[0][2] and tran_matrix[1][2] are in  normalized  device  coordinates  and  the  other
       elements of tran_matrix are unitless.

       gaccum_tran_matrix  can be used to construct more general transformation matrices than geval_tran_matrix.
       The most common usage of gaccum_tran_matrix is to change the order in  which  the  operations  of  scale,
       rotate,  and  shift  are  applied  (which is fixed in geval_tran_matrix).  The example below shows how to
       construct a transformation matrix that shifts first and then rotates.

EXAMPLE

       Assuming that the input matrix t_matrix is initially the identity, the following code

             pi = 3.1415926;
             point.x = point.y = 0.5;
             shift.delta_x = 0.25;
             shift.delta_y = 0.;
             scale.delta_x = 1.0;
             scale.delta_y = 1.0;
             gaccum_tran_matrix(t_matrix,&point,&shift,0.,&scale,GCOORD_WC,tout);
             for( i = 0; i < 2; i++ ) {
                 for( j = 0; j < 3; j++ ) {
                     t_matrix[i][j] = tout[i][j];
                 }
             }
             shift.delta_x = 0.;
             shift.delta_y = 0.;
             gaccum_tran_matrix(t_matrix,&point,&shift,45.*pi/180.,&scale,GCOORD_WC,tout);

       would produce a transformation matrix in tout that would shift by (.25,0.) first, and then rotate  by  45
       degrees.

ACCESS

       To use the GKS C-binding routines, load the ncarg_gks and ncarg_c libraries.

SEE ALSO

       Online:   geval_tran_matrix(3NCARG),   gclose_seg(3NCARG),   gcreate_seg(3NCARG),   gcopy_seg_ws(3NCARG),
       gdel_seg(3NCARG),    ginq_name_open_seg(3NCARG),    ginq_set_seg_names(3NCARG),    gset_seg_tran(3NCARG),
       gks(3NCARG), ncarg_gks_cbind(3NCARG)

       Hardcopy: User's Guide for NCAR GKS-0A Graphics; NCAR Graphics Fundamentals, UNIX Version

COPYRIGHT

       Copyright (C) 1987-2009
       University Corporation for Atmospheric Research
       The use of this Software is governed by a License Agreement.