GPIEXY Call
converts from polar to world coordinates
- CALL GPIEXY( , , fract-radii, angles<,
center<, radius<, window>);
The inputs to the GPIEXY subroutine are as follows:
- and
- are vectors of coordinates returned by GPIEXY.
- fract-radii
- is a vector of fractions of the radius of the reference circle.
- angles
- is the vector of angle coordinates in degrees.
- center
- defines the reference circle.
- radius
- defines the reference circle.
- window
- is a numeric matrix or literal specifying a window.
This is given in world coordinates and has the form
| {minimum-x minimum-y maximum-x maximum-y} |
The GPIEXY subroutine computes the world coordinates
of a sequence of points relative to a circle.
The
and
arguments are vectors of new
coordinates returned by the GPIEXY subroutine.
Together, the vectors
fract-radii and
angles define the points in polar coordinates.
Each pair from the
fract-radii and
angles vectors
yields a corresponding pair in the
and
vectors.
For example, suppose
fract-radii has two
elements, 0.5 and 0.3, and the corresponding
two elements of
angles are 90 and 30.
The GPIEXY subroutine returns two elements in the
vector and two elements in the
vector.
The first
pair locates a point halfway from the center
to the reference circle on the vertical line through the center,
and the second
pair locates a point one-third of the way
on the line segment from the center to the reference circle,
where the line segment slants 30 degrees from the horizontal.
The reference circle can be defined by an earlier
GPIE call or another GPIEXY call, or it can be
defined by specifying
center and
radius.
Graphics devices can have diverse aspect ratios; thus,
a circle can appear distorted when drawn on some devices.
The IML graphics subsystem adjusts computations
to compensate for this distortion.
Thus, for any given point, the transformation
from polar coordinates to world coordinates
might need an equivalent adjustment.
The GPIEXY subroutine ensures that the same adjustment
applied in the GPIE subroutine is applied to the conversion.
An example that uses the GPIEXY call follows:
/* add labels to a pie with 4 slices of equal size */
call gpie(50,50,30,{0 90 180 270},{90 180 270 0});
call gpiexy(x,y,1.2,{45 135 225 315},{50 50},30,{0 0 100 100});
/* adjust for label size: */
x [4,]=x[4,]-3;
x [1,]=x[1,]-4;
x [2,]=x[2,]+1;
call gscript(x,y,{'QTR1' 'QTR2' 'QTR3' 'QTR4'});
call gshow;