Chapter 12: 3-D Graphics
This chapter describes routines for 3-D coordinate systems.
Axis systems, curves and surfaces can be drawn from various angular
perspectives. All 2-D plotting routines can be used in a 3-D axis
system.
Three-dimensional objects must be plotted in a 3-D box which is
projected onto a two-dimensional region on the page. The 3-D box
contains an X-, Y- and Z-axis with the Z-axis lying in the vertical
direction. The units of the axes are called absolute 3-D coordinates.
They are abstract and have no relation to any physical units. An axis
system is used to scale the 3-D box with user coordinates and to plot
axis ticks, labels and names.
The position and size of a projected 3-D box depends upon the position
and size of the region onto which the box is projected, and the point from
which the box is viewed. The region is determined by the routines AXSPOS
and AXSLEN where the centre of the 3-D box will be projected onto the centre of
the region. The box itself will be cut off at the borders of the region unless
suppressed with the routine NOCLIP.
A X I S 3 D
The routine AXIS3D defines the lengths of the 3-D box.
For the lengths, any positive values can be specified; DISLIN uses only
the ratio of the values to calculate the axis lengths.
- The call is:
- CALL AXIS3D (X3AXIS, Y3AXIS, Z3AXIS) - level 1, 2, 3
- X3AXIS
- is the length of the X-axis in absolute 3-D coordinates
(> 0).
- Y3AXIS
- is the length of the Y-axis in absolute 3-D coordinates
(> 0).
- Z3AXIS
- is the length of the Z-axis in absolute
3-D coordinates (> 0).
Default: (2., 2., 2.)
- Additional note:
- The lower left corner of the 3-D box
is the point (-X3AXIS/2, -Y3AXIS/2, -Z3AXIS/2);
the upper right corner is the point (X3AXIS/2, Y3AXIS/2, Z3AXIS/2).
The centre point is (0., 0., 0.).
The following figure shows the default 3-D box:

Figure 12.1: Default 3-D Box
The following routines define view properties such as viewpoint, target
point, view angle and view orientation.
V I E W 3 D
The routine VIEW3D defines the viewpoint.
The viewpoint is a point in space from which the 3-D box is observed and
determines how objects are projected onto a 2-D plane.
Objects will appear small if the viewpoint is far away. As the viewpoint
is moved closer to the 3-D box, the objects will appear larger.
- The call is:
- CALL VIEW3D (XVU, YVU, ZVU, CVU) - level 1, 2, 3
- XVU, YVU, ZVU
- define the position of the viewpoint.
If CVU = 'ABS', the parameters must contain absolute 3-D coordinates,
if CVU = 'USER', they must contain user coordinates and if
CVU = 'ANGLE', the viewpoint must be specified by two
angles and a radius. In the latter case, XVU is a rotation
angle, YVU is the angle between the line from the
viewpoint to the centre of the 3-D box and the horizontal direction
and ZVU is the distance of the viewpoint from the centre of the 3-D box.
XVU and YVU must be specified in degrees and ZVU in absolute 3-D
coordinates.
- CVU
- is a character string defining the meaning of
XVU, YVU and ZVU.
Default: (2*X3AXIS, -2.5*Y3AXIS, 2*Z3AXIS, 'ABS').
- Additional note:
- The viewpoint must be placed outside the
3-D box. If the point lies inside, DISLIN will print
a warning and use the default viewpoint.
V F O C 3 D
The routine VFOC3D defines the focus point. It specifies the location in the
3-D box that the camera points to.
- The call is:
- CALL VFOC3D (XFOC, YFOC, ZFOC, CVU) - level 1, 2, 3
- XVU, YVU, ZVU
- define the position of the focus point.
If CVU = 'ABS', the parameters must contain absolute 3-D coordinates,
if CVU = 'USER', they must contain user coordinates.
- CVU
- is a character string defining the meaning of
XFOC, YFOC and ZFOC.
Default: (0., 0., 0., 'ABS').
V U P 3 D
The rotation of the camera around the viewing axis is defined by an angle.
- The call is:
- CALL VUP3D (ANG) - level 1, 2, 3
- ANG
- defines the rotation angle in degrees. The camera is rotated
in a clockwise direction.
Default: AND = 0.
V A N G 3 D
VANG3D defines the view angle. It specifies the field of view of the lens.
- The call is:
- CALL VANG3D (ANG) - level 1, 2, 3
- ANG
- defines the view angle in degrees.
Default: AND = 28.
G R A F 3 D
The routine GRAF3D plots a three-dimensional axis system. This routine must
be called before any objects can be plotted in the 3-D box.
- The call is:
- CALL GRAF3D (XA, XE, XOR, XSTEP, YA, YE, YOR,
YSTEP, ZA, ZE, ZOR, ZSTEP)
- XA, XE
- are the lower and upper limits of the X-axis.
- XOR, XSTEP
- are the first X-axis label and the step between labels.
- YA, YE
- are the lower and upper limits of the Y-axis.
- YOR, YSTEP
- are the first Z-axis label and the step between labels.
- ZA, ZE
- are the lower and upper limits of the Z-axis.
- ZOR, ZSTEP
- are the first Z-axis label and the step between labels.
Additional notes:
- GRAF3D must be called from level 1 and sets the level to 3.
- To avoid overwriting labels, GRAF3D suppresses the plotting of certain start labels. This option can
be disabled with the statement CALL FLAB3D.
- The user is referred to the notes on GRAF in chapter 4.
B O X 3 D
The routine BOX3D plots a border around the 3-D box.
- The call is:
- CALL BOX3D - level 3
G R I D 3 D
The routine GRID3D plots a grid in the 3-D box.
- The call is:
- CALL GRID3D (IGRID, JGRID, COPT) - level 3
- IGRID
- is the number of grid lines between labels in the
X-direction (or Y-direction for the YZ-plane).
- JGRID
- is the number of grid lines between labels
in the Z-direction (or Y-direction for the XY-plane).
- COPT
- is a character string which defines where the grid will
be plotted.
- = 'ALL'
- will plot a grid in the
XY-, XZ- and YZ-plane.
- = 'BACK'
- will plot a grid in the XZ- and
YZ-plane.
- = 'BOTTOM'
- will plot a grid in the XY-plane.
C U R V 3 D
The routine CURV3D is similar to CURVE and connects data points with lines
or marks them with symbols.
- The call is:
- CALL CURV3D (XRAY, YRAY, ZRAY, N) - level 3
- XRAY
- is an array containing the X-coordinates of data points.
- YRAY
- is an array containing the Y-coordinates of data points.
- ZRAY
- is an array containing the Z-coordinates of data points.
- N
- is the number of data points.
- Additional note:
- Data points will be interpolated linearly.
The user is referred to the notes on CURVE in chapter 5.
S U R F U N
The routine SURFUN plots a surface grid of the three-dimensional function
Z = F(X,Y).
- The call is:
- CALL SURFUN (ZFUN, IXP, XDEL, IYP, YDEL) - level 3
- ZFUN
- is the name of a FUNCTION subroutine that returns
the function value for a given X- and Y-coordinate.
ZFUN must be declared EXTERNAL in the calling program.
- XDEL, YDEL
- are the distances between grid lines in user
coordinates. XDEL and YDEL determine the density of
the surface plotted by SURFUN.
- IXP, IYP
- are the number of points between grid lines interpolated
by SURFUN (>= 0). If IXP = 0, surface lines in the
X-direction will be suppressed; if IYP = 0, surface lines
in the Y-direction will be suppressed.
The routines SURMAT and SURFCE plot surface grids of the three-dimensional
function Z = F(X,Y) where the function values are given in the form of
a matrix. SURMAT assumes that the function values correspond to a linear
grid in the XY-plane while SURFCE can be used with non linear grids.
The calls are:
- CALL SURMAT (ZMAT, IXDIM, IYDIM, IXP, IYP) - level 3
- CALL SURFCE (XRAY, IXDIM, YRAY, IYDIM, ZMAT) - level 3
- XRAY, YRAY
- are arrays containing the X- and Y-user coordinates.
- ZMAT
- is a matrix with the dimension (IXDIM, IYDIM) containing
the function values.
- IXDIM, IYDIM
- are the dimensions of ZMAT, XRAY and YRAY (>= 2).
- IXP, IYP
- are the number of points interpolated between
grid lines in the X- and Y-direction. These parameters
determine the density of surfaces plotted by SURMAT.
For positive values, the surface will be interpolated linearly.
For a negative value, the absolute value will be used as a step for
plotted surface lines. If IXP = 0, surface lines in the
Y-direction will be suppressed; if IYP = 0, surface lines
in the X-direction will be suppressed.
Additional notes:
- The suppression of hidden lines can be disabled with
CALL NOHIDE.
- Surfaces can be protected from overwriting with
CALL SHLSUR if the hidden-line algorithm is not
disabled.
- The limits of the base grid are determined by the parameters
in GRAF3D or can be altered with
SURSZE (XA, XE, YA, YE).
If XA, XE, YA and YE are the axis limits in GRAF3D or
defined with SURSZE, the connection of
grid points and matrix elements can be described by the
formula:
ZMAT(I,J) = F(X,Y) where
X = XA + (I - 1) * (XE - XA) / (IXDIM - 1), I = 1,..,IXDIM and
Y = YA + (J - 1) * (YE - YA) / (IYDIM - 1), J = 1,..,IYDIM.
- SURVIS (CVIS) determines the visible part of a
surface where CVIS can have the values 'TOP', 'BOTTOM' and 'BOTH'.
The default value is 'BOTH'.
- The statement CALL SURCLR (ICTOP, ICBOT)
defines the colours of the upper and lower side of a surface.
The parameters must be in the range -1 to 255 where
the default value -1 means that the current colour is used.
S U R S H D
The routine SURSHD plots a shaded surface from a matrix where colour values
are calculated from the Z-scaling in the routine GRAF3D or from the parameters
of the routine ZSCALE.
- The call is:
- CALL SURSHD (XRAY, IXDIM, YRAY, IYDIM, ZMAT) - level 3
- XRAY, YRAY
- are arrays containing the X- and Y-user coordinates.
- ZMAT
- is a matrix with the dimension (IXDIM, IYDIM) containing
the function values.
- IXDIM, IYDIM
- are the dimensions of ZMAT, XRAY and YRAY (>= 2).
Additional notes:
- The statement CALL ZSCALE (ZMIN, ZMAX) defines an alternate
Z-scaling that will be used to calculate colour values
in SURSHD. Normally, the Z-scaling in GRAF3D is used.
For logarithmic scaling of the Z-axis, ZMIN and ZMAX must
be exponents of base 10.
- A flat shading or a smooth shading can be selected with
the routine SHDMOD. The default is flat shading.
If smooth shading is selected, a Z-buffer is used for
hidden-surface elimination. In this case,
a raster format is needed for the graphics output format
(for example METAFL ('XWIN') or METAFL ('TIFF')).
- Additional grid lines can be enabled with the routine
SURMSH. SURSHD can generate only mesh lines if the
keyword 'ONLY' is used in SURMSH.
- Lighting can be enabled for SURSHD with the routine LIGHT.
S U R F C P
A three-dimensional parametric function is a function of the form
(x(t,u), y(t,u), z(t,u)) where tmin ≤ t ≤ tmax and umin ≤
u ≤ umax. The routine SURFCP plots a shaded surface from a parametric
function. The colours of the surface are calculated from the Z-scaling in
the routine GRAF3D or from the parameters of the routine ZSCALE.
- The call is:
- CALL SURFCP (ZFUN, IXDIM, TMIN, TMAX, TSTEP,
UMIN, UMAX, USTEP) - level 3
- ZFUN
- is the name of a FUNCTION subroutine with the formal
parameters X, Y and IOPT. If IOPT = 1, ZFUN should
return the X-coordinate of the parametric function,
if IOPT = 2, ZFUN should return the Y-coordinate and
if IOPT = 3, ZFUN should return the Z-coordinate.
- TMIN, TMAX, TSTEP
- define the range and step size of the first
parameter.
- UMIN, UMAX, USTEP
- define the range and step size of the second
parameter.
Additional notes:
- SURFCP can plot a flat surface or a smooth surface defined by the
routine SHDMOD. For a flat surface, a depth sort is used for
hidden-surface elimination. For a smooth surface, a Z-buffer
is used for hidden-surface elimination. In the latter case, a raster
format is needed for the graphics output format
(for example METAFL ('XWIN') or METAFL ('TIFF')).
- Lighting can be enabled for SURFCP with the routine LIGHT.
- Additional grid lines can be enabled with the routine SURMSH.
S U R T R I
The routine SURTRI plots a shaded surface from triangulated data that
can be calculated by the routine TRIANG from a set of irregularily
distributed data points.
- The call is:
- CALL SURTRI (XRAY, YRAY, ZRAY, N,
I1RAY, I2RAY, I3RAY, NTRI) - level 3
- XRAY
- is an array containing the X-coordinates of data
points.
- YRAY
- is an array containing the Y-coordinates of data
points.
- ZRAY
- is an array containing the Z-coordinates of data
points.
- N
- is the number of data points.
- I1RAY, I2RAY, I3RAY
- is the Delaunay triangulation of the
points (XRAY, YRAY) calculated by the routine TRIANG.
- NTRI
- is the number of triangles in I1RAY, I2RAY and I3RAY.
S U R I S O
The routine SURISO plots isosurfaces of the form f(x,y,z) = constant.
- The call is:
- CALL SURISO (XRAY, NX, YRAY, NY, ZRAY, NZ,
WMAT, WLEV) - level 3
- XRAY, YRAY, ZRAY
- are arrays containing the X-, Y- and Z-user
coordinates.
- WMAT
- is a matrix with the dimension (NX, NY, NZ) containing
the function values.
- NX, NY, NZ
- are the dimensions of WMAT, XRAY, YRAY, and ZRAY
(>= 2).
Additional notes:
- The algorithm used in SURISO is based on the Marching Cubes method.
Reference: Lorensen, W.E. and Cline, H.E., Marching Cubes: a high
resolution 3D surface reconstruction algorithm,
Computer Graphics, Vol. 21, No. 4, pp 163-169 (Proc. of SIGGRAPH),
1987.
- SURISO can plot flat or smooth surface triangles defined by the
routine SHDMOD. For smooth triangles, a Z-buffer
is used for hidden-surface elimination. In that case a raster format
is needed for the graphics output format.
- Lighting can be enabled for SURSIO with the routine LIGHT.
- Additional grid lines can be enabled with the routine
SURMSH.
N O H I D E
The suppression of hidden lines in the routines SURFUN, SURMAT and SURFCE
can be disabled with a call to NOHIDE.
- The call is:
- CALL NOHIDE - level 1, 2, 3
S H L S U R
The surfaces plotted by the routines SURFUN, SURMAT and SURFCE
can be protected from overwriting with the routine SHLSUR.
- The call is:
- CALL SHLSUR - level 1, 2, 3
S U R V I S
The routine SURVIS determines the visible part of the surfaces plotted
by the routines SURFUN, SURMAT and SURFCE.
- The call is:
- CALL SURVIS (CVIS) - level 1, 2, 3
- CVIS
- is a character string that can have the values 'TOP',
'BOTTOM' and 'BOTH'.
Default: CVIS = 'BOTH'.
S U R C L R
The routine SURCLR defines the colours of the upper and lower side of
surfaces plotted by the routines SURFUN, SURMAT and SURFCE.
- The call is:
- CALL SURCLR (ICTOP, ICBOT) - level 1, 2, 3
- ICTOP, ICBOT
- are the colour values in the range -1 to 255
where the value -1 means that the current colour is used.
Default: (-1, -1).
S H D M O D
The routine SHDMOD defines flat or smooth shading for the routine SURSHD.
If smooth shading is selected, DISLIN uses a Z-buffer for hidden-surface
elimination. This means that the graphics output format must be set to a
raster format (for example: METAFL ('XWIN') or METAFL ('TIFF').
- The call is:
- CALL SHDMOD (COPT, 'SURFACE') - level 1, 2, 3
- COPT
- is a character string that can have the values 'FLAT' and
'SMOOTH'. If COPT = 'SMOOTH', a raster format is needed
for the output graphics format
(for example METAFL ('XWIN') or METAFL ('TIFF')).
Default: COPT = 'FLAT'.
S U R M S H
The routine SURMSH can enable additional grid lines for the routines
SURSHD and SURFCP.
- The call is:
- CALL SURMSH (COPT) - level 1, 2, 3
- COPT
- is a character string that can have the values 'ON',
'OFF' and 'ONLY'. For COPT = 'ONLY', the shading of the
surfaces are suppressed and only mesh lines will be
displayed.
Default: COPT = 'OFF'.
M S H C L R
The routine MSHCLR sets the colour for grid lines.
- The call is:
- CALL MSHCLR (ICLR) - level 1, 2, 3
- ICLR
- is a colour value in the range -1 to 255 where the value
-1 means that the current colour is used. Default: ICLR = -1.
Z S C A L E
The routine ZSCALE defines an alternate Z-scaling that will be used to
calculate colour values in the routines SURSHD and SURFCP.
- The call is:
- CALL ZSCALE (ZMIN, ZMAX) - level 1, 2, 3
- ZMIN,ZMAX
- define the range of the Z-scaling.
For logarithmic scaling of the Z-axis, ZMIN and ZMAX must
be exponents of base 10.
C L I P 3 D
The routine CLIP3D defines 3-D clipping in the world coordinate system or
in the eye coordinate system.
- The call is:
- CALL CLIP3D (COPT) - level 1, 2, 3
- COPT
- is a character string that can have the values 'WORLD'
and 'EYE'.
Default: COPT = 'WORLD'.
V C L P 3 D
If 3-D clipping is done in the eye coordinate system, front and back
clipping planes can be defined with the routine VCLP3D.
- The call is:
- CALL VCLP3D (XFRONT, XBACK) - level 1, 2, 3
- XFRONT, XBACK
- are the distances from the viewpoint in absolute
3-D coordinates. A negative value means infinity.
Default: (1., -1.).\medskip
Lighting can be enabled for some shading routines such SURSHD, SURFCP
and SURISO where up to 8 light sources can be defined. General lighting
can be turned off or on in DISLIN with the routine LIGHT while single light
sources can be turned off or on with the routine LITMOD. The routine LITPOS
defines the position of light sources and the routines LITOPT and MATOPT
modify lighting and material parameters. Finally, the routine GETLIT
calculates the colour value for a specified point and normal.
L I G H T
The routine LIGHT enables lighting for shading routines such as SURSHD,
SURFCP and SURISO.
- The call is:
- CALL LIGHT (CMODE) - level 1, 2, 3
- CMODE
- is a character string that can have the values 'ON'
and 'OFF'. Default: CMODE = 'OFF'.
L I T M O D
Up to 8 light sources can be defined in DISLIN. The routine LITMOD enables
or disables single light sources.
- The call is:
- CALL LITMOD (ID, CMODE) - level 1, 2, 3
- ID
- is the ID of the light source in the range 1 to 8.
- CMODE
- is a character string that can have the values 'ON'
and 'OFF'. The default values are CMODE = 'ON' for
light source 1 and CMODE = 'OFF' for the other light
sources.
L I T P O S
The routine LITPOS defines the position of light sources.
The call is: CALL LITPOS (ID, XP, YP, ZP, COPT) - level 1, 2, 3
ID is the ID of the light source in the range 1 to 8.
XP, YP, ZP define the position of the light source.
If COPT = 'ABS', the parameters must contain
absolute 3-D coordinates,
if COPT = 'USER', they must contain user
coordinates and if
COPT = 'ANGLE', the position must be specified by two
angles and a radius (see VIEW3D).
COPT is a character string defining the meaning of
XP, YP and ZP.
Default: (2*X3AXIS, -2.5*Y3AXIS, 2*Z3AXIS, 'ABS').
L I T O P T
The routine LITOPT modifies the ambient, diffuse and specular intensities
and the constant, linear and quadratic attentuation factors of light
sources.
- The call is:
- CALL LITOPT (ID, XVAL, COPT) - level 1, 2, 3
- ID
- is the ID of the light source in the range 1 to 8.
- XVAL
- is a floatingpoint number containing the new lighting
parameter.
- COPT
- is a character string that can have the values 'AMBIENT',
'DIFFUSE', 'SPECULAR', 'CONSTANT', 'LINEAR' and
'QUADRATIC'.
Defaults: (0., 'AMBIENT'), (1., 'DIFFUSE'), (1., 'SPECULAR'),
(1., 'CONSTANT'), (0., 'LINEAR'), (0., 'QUADRATIC').
M A T O P T
The routine MATOPT modifies material parameters such as ambient, diffuse
and specular colour. The specular exponent can also be modified.
- The call is:
- CALL MATOPT (XVAL, COPT) - level 1, 2, 3
- XVAL
- is a floatingpoint number containing the new material
parameter.
- COPT
- is a character string that can have the values 'AMBIENT',
'DIFFUSE', 'SPECULAR' and 'EXPONENT'.
Defaults: (0.2, 'AMBIENT'), (0.8, 'DIFFUSE'),
(0., 'SPECULAR'), (0., 'EXPONENT').
G E T L I T
The routine GETLIT calculates colour values for given points and their
normals specified in absolute coordinates.
- The call is:
- CALL GETLIT (XP, YP, ZP, XN, YN, ZN, ICLR)
- level 1, 2, 3
- XP, YP, ZP
- are the X-, Y-and Z-coordinates of the point.
- XN, YN, ZN
- are the X-, Y- and Z-coordinates of the point normal.
- ICLR
- is the returned colour value.
The routine SURMAT assumes that function values are in the form of a matrix
and correspond to a linear grid in the XY-plane. If three-dimensional data
points are given as randomly distributed points of the form X(N),
Y(N) and Z(N), the routine GETMAT can be used to calculate a function matrix.
G E T M A T
The routine GETMAT calculates a function matrix for randomly distributed
data points.
- The call is:
- CALL GETMAT (XRAY, YRAY, ZRAY, N, ZMAT, NX,
NY, ZVAL, IMAT, WMAT) - level 2,3
- XRAY, YRAY, ZRAY
- are arrays containing the randomly distributed
data points.
- N
- is the number of points.
- ZMAT
- is the function matrix of the dimension (NX, NY)
calculated by GETMAT. The matrix elements
correspond to a linear grid in the XY-plane
whose limits are determined by the scaling
values in GRAF3D or SURSZE.
- NX, NY
- are the dimensions of ZMAT, IMAT and WMAT.
- ZVAL
- will be used as a value for matrix elements when
no data points can be found in an area around
the corresponding grid points. In general, the
start scaling of the Z-axis will be used for ZVAL.
- IMAT
- is a working matrix of the dimension (NX, NY).
After a call to GETMAT, IMAT(I, J) contains the
number of random data points found in an area
around the grid points. The value -1 means that a
random data value lies at a grid point.
- WMAT
- is a working matrix of the dimension (NX, NY).
The value ZMAT(J, K) of the corresponding grid point (J, K) is calculated
by the formula:
- where: j, k
- are indices from 1 to NX and 1 to NY, respectively.
- Di
- is the distance of the grid point (i, k) from the point
Pi.
- w
- is a weighting number (Default: 2.0).
- n
- is the number of data points lying in the area
around the grid point (j, k).
If Pi is a data point, the routine GETMAT finds the grid rectangle
in the XY-plane in which the point lies. By default, Pi affects all grid
points which lie up to 2 grid lines from Pi.
A problem can arise when creating a large matrix from sparse data points
because certain grid points may not lie near the actual random data points.
Figure 12.2 shows the results of GETMAT using different values of IX and
IY.

Figure 12.2: Results of GETMAT
An simple method to smooth surfaces from sparse data points is to
enlarge the region around the randomly distributed data points where
grid points are searched.
This can be done using the routine MDFMAT.
M D F M A T
The routine MDFMAT modifies the algorithm in GETMAT.
- The call is:
- CALL MDFMAT (IX, IY, W) - level 1, 2, 3
- IX, IY
- are the number of grid lines in the X- and Y-direction
which determine the size of the region around data points.
- W
- is a weighting number.
Default: (2, 2, 2.0).
The following figure shows modifications of the above example:

Figure 12.3: Modification of GETMAT
Two-dimensional graphics in the XY-plane can be projected onto a
plane in 3-D space. Therefore, all 2-D plot routines can be used in
3-D space.
G R F I N I
The routine GRFINI defines a plane in the 3-D box onto which all
plot vectors will be projected. The plane in the 3-D box corresponds to a
region in the XY-plane which is determined by AXSPOS and AXSLEN.
GRFINI sets the - level to 1.
- The call is:
- CALL GRFINI (X1, Y1, Z1, X2, Y2, Z2, X3, Y3, Z3)
- level 3
- X1, Y1, Z1
- are the absolute 3-D coordinates of the
lower left corner of the 3-D plane.
- X2, Y2, Z2
- are the absolute 3-D coordinates of the
lower right corner of the 3-D plane.
- X3, Y3, Z3
- are the absolute 3-D coordinates of the
upper right corner of the 3-D plane.
- Additional note:
- If (NXA,NYA) is the lower left corner, NXL
the width and NYL the height of the region determined
by the routines AXSPOS and AXSLEN, the point
(X1,Y1,Z1) corresponds to (NXA,NYA),
(X2,Y2,Z2) to (NXA+NXL-1,NYA) and (X3,Y3,Z3) to
(NXA+NXL-1,NYA-NYL+1), respectively.
G R F F I N
The routine GRFFIN terminates a projection into 3-D space. The - level
will be set back to 3.
- The call is:
- CALL GRFFIN
The DISLIN routines SURSHD and SURFCP use for smooth shading a 32-bit
floating point Z-buffer for hidden-surface elimination. This Z-buffer
can also be used by a programmer for creating shaded surfaces with
elementary triangle routines.
Z B F I N I
The routine ZBFINI creates a Z-buffer. The graphics output format must be set
to a raster format (for example METAFL ('XWIN') or METAFL ('TIFF')).
- The call is:
- CALL ZBFINI (IRET) - level 1,2,3
- IRET
- is the returned status (0: no errors).
Z B F F I N
The routine ZBFFIN terminates writing to a Z-buffer and frees the allocated
space.
- The call is:
- CALL ZBFFIN - level 1,2,3
Z B F T R I
The routine ZBFTRI plots a smooth triangle where hidden-surface elimination
is done with the Z-buffer.
- The call is:
- CALL ZBFTRI (XRAY, YRAY, ZRAY, IRAY) - hfill level 3
- XRAY,YRAY,ZRAY
- are the X-, Y-, and Z-coordinates of the three
corners of the triangle in user coordinates.
- IRAY
- is an integer array containing the three colour values
of the triangle corners.
Z B F L I N
The routine ZBFLIN plots a line in the current colour where the Z-buffer
is used for hiddenline elimination. This routine is used by SURSHD and SURFCP
for drawing surface grids.
- The call is:
- CALL ZBFLIN (X1, Y1, Z1, X2, Y2, Z2) - level 3
- X1, Y1, Z1
- are the user coordinates of the start point.
- X2, Y2, Z2
- are the user coordinates of the end point.
S T R T 3 D
The routine STRT3D moves the pen to a three-dimensional point.
- The call is:
- CALL STRT3D (X, Y, Z) - level 3
- X, Y, Z
- are the absolute 3-D coordinates of the point.
C O N N 3 D
The routine CONN3D plots a line from the current pen position
to a three-dimensional point. The line will be cut off at the sides of the
3-D box. Different line styles can be used.
- The call is:
- CALL CONN3D (X, Y, Z) - level 3
- X, Y, Z
- are the absolute 3-D coordinates of the point.
V E C T R 3
The routine VECTR3 plots a vector in the 3-D box.
- The call is:
- CALL VECTR3 (X1, Y1 ,Z1, X2, Y2, Z2, IVEC) - level 3
- X1, Y1, Z1
- are the absolute 3-D coordinates of the start point.
- X2, Y2, Z2
- are the absolute 3-D coordinates of the end point.
- IVEC
- defines the arrow head (see VECTOR).
S P H E 3 D
The routine SPHE3D plots a sphere.
- The call is:
- CALL SPHE3D (XM, YM ,ZM, R, N, M) - level 3
- XM, YM, ZM
- are the user coordinates of the center point.
- R
- is the radius of the sphere in user coordinates.
- N, M
- defines the horizontal and vertical resolution of the
sphere.
Additional notes:
- Lighting can be enabled for SPHE3D with the routine LIGHT.
- Additional grid lines can be enabled with the routine
SURMSH.
P O S 3 P T
The routine POS3PT converts three-dimensional user coordinates to
absolute 3-D coordinates.
- The call is:
- CALL POS3PT (X, Y, Z, XP, YP, ZP) - level 3
- X, Y, Z
- are the user coordinates.
- XP, YP, ZP
- are the absolute 3-D coordinates calculated by POS3PT.
The absolute 3-D coordinates can also be calculated with the
following functions:
R E L 3 P T
The routine REL3PT converts user coordinates to plot coordinates.
- The call is:
- CALL REL3PT (X, Y, Z, XP, YP) - level 3
- X, Y, Z
- are the user coordinates.
- XP, YP
- are the plot coordinates calculated by REL3PT.
The corresponding functions are:
A B S 3 P T
The routine ABS3PT converts absolute 3-D coordinates to plot
coordinates.
- The call is:
- CALL ABS3PT (X, Y, Z, XP, YP) - level 3
- X, Y, Z
- are the absolute 3-D coordinates.
- XP, YP
- are the plot coordinates calculated by ABS3PT.
The corresponding functions are:
Next |
Previous |
Contents