Either of the routines EZISOS or ISOSRF may be called to draw an isosurface. The former has a simpler argument list, but makes certain assumptions about what is to be done.
Routines with names of the form ISGETx, where "x" stands for "I" or "R", are used to retrieve the current values of various internal parameters affecting the behavior of ISOSRF.
Routines with names of the form ISSETx, where "x" stands for "I" or "R", are used to give new values to internal parameters.
Routines mentioned above are discussed in detail in the section named "ROUTINES". Internal parameters are discussed in the section named "INTERNAL PARAMETERS".
CALL EZISOS (F,MU,MV,MW,EYE,SLAB,FISO)to draw an isosurface if
MU (an input expression of type INTEGER) is the first dimension of the array F.
MV (an input expression of type INTEGER) is the second dimension of the array F.
MW (an input expression of type INTEGER) is the third dimension of the array F.
EYE (an input array of type REAL, dimensioned 3) is the position of the eye in the UVW coordinate system. The eye position, at (EYE(1),EYE(2),EYE(3)), must be outside the box containing the data. The point being looked at is at the center of the data box and the projection plane is perpendicular to the line of sight. While gaining experience with the routine, a good choice for EYE is (5.*REAL(MU),3.5*REAL(MV),2.*REAL(MW)).
SLAB (a scratch array of type REAL, dimensioned at least n x n, where "n" is defined to be MAX[MU,MV,MW]+2) is a workspace for ISOSRF.
FISO (an input expression of type REAL) is the value of fiso in the equation f(u,v,w)=fiso, which defines the isosurface to be drawn.
Draws an isosurface.
CALL ISOSRF (F,LU,MU,LV,MV,MW,EYE,MUVWP2,SLAB,FISO,IFLAG)to draw an isosurface in cases in which EZISOS (which see, above) cannot be used.
LU (an input expression of type INTEGER) is the first dimension of the array F.
MU (an input expression of type INTEGER) defines the range to be used for the first subscript of the array F.
LV (an input expression of type INTEGER) is the second dimension of the array F.
MV (an input expression of type INTEGER) defines the range to be used for the second subscript of the array F.
MW (an input expression of type INTEGER) defines the range to be used for the third subscript of the array F.
EYE (an input array of type REAL, dimensioned 3) is the position of the eye in the UVW coordinate system. The eye position, at (EYE(1),EYE(2),EYE(3)), must be outside the box containing the data. The point being looked at is at the center of the data box and the projection plane is perpendicular to the line of sight. While gaining experience with the routine, a good choice for EYE is (5.*REAL(MU),3.5*REAL(MV),2.*REAL(MW)).
MUVWP2 (an input expression of type INTEGER) has the value MAX(MU,MV,MW)+2.
SLAB (a scratch array of type REAL, dimensioned at least MUVWP2 x MUVWP2) is a workspace for ISOSRF.
FISO (an input expression of type REAL) is the value of fiso in the equation f(u,v,w)=fiso, which defines the isosurface to be drawn.
IFLAG (an input expression of type INTEGER) serves two purposes:
ABS(IFLAG) | Lines of Constant U | Lines of Constant V | Lines of Constant W |
---|---|---|---|
1 | no | no | yes |
2 | no | yes | no |
3 | no | yes | yes |
4 | yes | no | no |
5 | yes | no | yes |
6 | yes | yes | no |
7 | yes | yes | yes |
CALL ISGETx (CNP,xVP)where "x" is an "I" or an "R" (depending on the type of the value involved), to retrieve, in the variable xVP, the value of the parameter specified by CNP.
For descriptions of all the internal parameters, see the section named "INTERNAL PARAMETERS".
xVP (an output variable of type INTEGER or REAL, depending on the value of "x") is the name of a variable into which the value of the parameter specified by CNP is to be retrieved.
CALL ISSETx (CNP,xVP)where "x" is an "I" or an "R" (depending on the type of the value involved), to set the value of the parameter specified by CNP to the value of the variable xVP.
For descriptions of all the internal parameters, see the section named "INTERNAL PARAMETERS".
xVP (an input expression of type INTEGER or REAL, depending on the value of "x") is the desired new value of the parameter specified by CNP. This value will be used until the next call resetting it.
Name | Type | Description |
---|---|---|
'IU' | I | Number of extra slabs to be interpolated between each pair of slabs perpendicular to the U axis. Using a non-zero value takes longer, but makes a better picture. Negate the value to interpolate the extra slabs but not draw them, which has the effect of reducing errors due to being able to see between slabs. Attempting to give 'IU' a value less than -10 will give it the value -10; similarly, trying to give it a value greater than 10 will give it the value 10. The default value is 0. |
'IV' | I | Like 'IU', but applies to extra slabs perpendicular to the V axis. The default value is 0. |
'IW' | I | Like 'IU', but applies to extra slabs perpendicular to the W axis. The default value is 0. |
'RF' | I | Controls drawing of reference planes and axes. Zero means "don't draw them"; non-zero means "draw them". The default value is 1. |
'RS' | R | Zero turns off the "relative size" feature; the 3D grid box will be scaled to fill almost the entire plotter frame. Give 'RS' a non-zero value to turn on the "relative size" feature and to specify that distance from which the box, when viewed from the direction which makes its image largest, almost fills the frame. Views from closer in will give a bigger image and views from farther out will give a smaller image. This is useful when making movies with the "camera" flying around the box. The default value is 0. |
'SL' | R | Segment length. When contours are smoothed, this parameter specifies the approximate length of the line segments used to draw the smooth curves. Values outside the range from .0001 to .1 will be mapped to the nearer end of that range. The default value is .01. |
'SM' | I | Screen model selector. Zero selects the coarse screen model (128 x 128); non-zero selects a finer screen model (256 x 256). Using the former is faster, but using the latter gives better pictures. The default value is 0. |
'ST' | R | Spline tension. If zero, turns off the smoothing of contours. If non-zero, turns the smoother on and determines the tension on the splines used to do the smoothing. Use of values greater than about 15. has been observed to cause overflow on some machines. The default value is 0. |
'SV' | I | Special value. The value zero turns off the special-value feature. A non-zero value turns on the feature and specifies the special value itself. Regions filled with this value are treated as being outside the volume bounded by the isosurface. Preliminary experiments seem to indicate that sometimes the use of special values works well and sometimes it doesn't (depending on the pattern of the special values in the field). The default value is 0. |
'VB' | R | The position of the bottom edge of the viewport in which the iso-surface is to be displayed, expressed as a fraction between 0 (the bottom edge of the frame) and 1 (the top edge of the frame). The default value is 0. |
'VL' | R | The position of the left edge of the viewport in which the iso-surface is to be displayed, expressed as a fraction between 0 (the left edge of the frame) and 1 (the right edge of the frame). The default value is 0. |
'VR' | R | The position of the right edge of the viewport in which the iso-surface is to be displayed, expressed as a fraction between 0 (the left edge of the frame) and 1 (the right edge of the frame). The default value is 1. |
'VT' | R | The position of the top edge of the viewport in which the iso-surface is to be displayed, expressed as a fraction between 0 (the bottom of the frame) and 1 (the top edge of the frame). The default value is 1. |
ISGETI OR ISGETR - PARAMETER NAME TOO SHORT - xThe argument "PNAM", in a call to ISGETI or ISGETR, is only one character long.
ISGETI OR ISGETR - PARAMETER NAME NOT KNOWN - xxThe argument "PNAM", in a call to ISGETI or ISGETR, begins with two characters that do not constitute one of the legal internal parameter names described in the section "INTERNAL PARAMETERS".
ISSETI OR ISSETR - PARAMETER NAME TOO SHORT - xThe argument "PNAM", in a call to ISSETI or ISSETR, is only one character long.
ISSETI OR ISSETR - PARAMETER NAME NOT KNOWN - xxThe argument "PNAM", in a call to ISSETI or ISSETR, begins with two characters that do not constitute one of the legal internal parameter names described in the section "INTERNAL PARAMETERS".
ISINIT - INSTALLATION OF ISOSRF IMPROPERLY DONE - SEE DIRECTIONS IN CODEThis error message means that the screen models used to do hidden-line removal have been found to be improperly dimensioned for the system on which the code is being run. About the only way this can happen is if the distributed code is run on a a machine with sixteen-bit words or if the distributed code has been modified incorrectly.
ncargex tisosrTo acquire the code, but not run it, use the command
ncargex -n tisosrThen, after modifying the example code as desired, compile and run it with the commands
ncargf77 *.f a.outView the metafile with the command
ctrans gmeta
More information may be found in the document "Using NCAR Graphics in a Unix Environment".
Parameter-access routines: ISGETI, ISGETR, ISSETI, and ISSETR.
Routines which are not currently advertised as user-callable, but may be of interest to a knowledgeable user: ISPLTF and ISTR32.
Strictly internal routines: ISFILL, ISGFXY, ISINIT, ISSMTH, ISST3D, ISTRCL, and ISZERO.
A block data routine, in which default values of internal parameters are set: ISBLDA.
Also supported for historical reasons: DRAWI, FRSTC, and TRN32I.
The hidden-line algorithm is not exact, so visibility errors can occur.
Transformations can be achieved by adjusting scaling statement functions in ISOSRF, ISST3D, and ISGFXY.
Three-dimensional perspective character labeling of ISOSRF is possible by using the utility PWRZI. For a description of its usage, see the PWRZI documentation.