The SHOW3 procedure combines an image, a surface plot of the image data, and a contour plot of the images data in a single tri-level display.
This routine is written in the IDL language. Its source code can be found in the file show3.pro in the lib subdirectory of the IDL distribution.
Syntax
SHOW3, Image [, X, Y] [, /INTERP] [, E_CONTOUR=structure] [, E_SURFACE=structure] [, SSCALE=scale]
Arguments
Image
The two-dimensional array to display.
X
A vector containing the X values of each column of Image. If the X argument is omitted, columns have values 0, 1, ..., ncolumns-1.
Y
A vector containing the Y values of each row of Image. If the Y argument is omitted, rows have values 0, 1, ..., nrows-1.
Keywords
INTERP
Set this keyword to use bilinear interpolation on the pixel display. This technique is slightly slower, but for small images, it makes a better display.
E_CONTOUR
Set this keyword equal to an anonymous structure containing additional keyword parameters that are passed to the CONTOUR procedure. Tag names in the structure should be valid keyword arguments to CONTOUR, and the values associated with each tag should be valid keyword values.
E_SURFACE
Set this keyword equal to an anonymous structure containing additional keyword parameters that are passed to the SURFACE procedure. Tag names in the structure should be valid keyword arguments to SURFACE, and the values associated with each tag should be valid keyword values.
SSCALE
Reduction scale for surface. The default is 1. If this keyword is set to a value other than 1, the array size is reduced by this factor for the surface display. That is, the number of points used to draw the wire-mesh surface is reduced. If the array dimensions are not an integral multiple of SSCALE, the image is reduced to the next smaller multiple.
Examples
A = BESELJ(SHIFT(DIST(30,20), 15, 10)/2.,0)
SHOW3, A
SHOW3, A, SQRT(FINDGEN(30))
SHOW3, A, E_CONTOUR={C_CHARSIZE:2, DOWN:1}
SHOW3, A, E_SURFACE={SKIRT:-1, ZRANGE:[-2,2]}
Combining Images with Three-Dimensional Graphics
Images are combined with three-dimensional graphics, as shown in the figure below, using the transformation techniques described above.
The rectangular image must be transformed so that it fits underneath the mesh drawn by SURFACE. The general approach is as follows:
- Use SURFACE Procedure to establish the general scaling and geometrical transformation. Draw no data, as the graphics made by SURFACE will be over-written by the transformed image.
- For each of the four corners of the image, translate the data coordinate, which is the subscript of the corner, into a device coordinate. The data coordinates of the four corners of an (m, n) image are (0, 0), (m–1, 0), (0, n–1), and (m–1, n–1). Call this data coordinate system (x, y). Using a procedure or function similar to CVT_TO_2D convert to device coordinates, which in this discussion are called (U, V).
- The image is transformed from the original xy coordinates to a new image in UV coordinates using the POLY_2D function. POLY_2D accepts an input image and the coefficients of a polynomial in UV giving the xy coordinates in the original image. The equations for x and y are below.
X = S0,0 + S1,0U +S1,0V +S1,1UV
Y = T0,0 + T1,0U + T1,0V + T1,1UV
We solve for the four unknown S coefficients using the four equations relating the x corner coordinates to their U coordinates. The T coefficients are similarly found using the y and V coordinates. This can be done using matrix operators and inversion or more simply, with the procedure POLY_WARP.
- The new image is a rectangle that encloses the quadrilateral described by the UV coordinates. Its size is specified in the formula below:
(MAX(U) – MIN(U) +2, MAX(V) – MIN(V) +1)
-
POLY_2D is called to form the new image which is displayed at device coordinate (MIN(U), MIN(V)).
- SURFACE Procedure is called once again to display the mesh surface over the image.
- Finally, CONTOUR Procedure is called with ZVALUE set to 1.0, placing the contour above both the image and the surface.
The SHOW3 procedure performs these operations. It should be examined for details of how images and graphics can be combined.
The following IDL commands were used to create the previous image:
@cntour01
levs = (FINDGEN(10)*100)+3500
SHOW3, elev, E_SURFACE={min:2000}, E_CONTOUR={levels:levs}
Version History
See Also
CONTOUR Procedure, SURFACE Procedure