Previous Object Programming: Working with Surface Objects Next

An Interactive Surface Example

With a little programming, we can create an application that allows the user to display a surface object and transform its model tree interactively using the mouse.


Example Code
Example code is located in surf_track.pro in the examples/doc/objects subdirectory of the IDL distribution. Enter .EDIT surf_track.pro at the IDL command line to open the file in an IDL Editor window.

This example uses IDL widgets to create a graphical user interface to an object tree. The SURF_TRACK procedure creates a surface object from user-specified data (or from default data, if none is specified), and places the surface object in an IDL draw widget. The SURF_TRACK interface allows the user to specify several attributes of the object hierarchy via pull-down menus. Finally, the SURF_TRACK procedure uses the example trackball object (see Interactive 3D Transformations for details) to allow the user to rotate the surface in three dimensions.

Call the SURF_TRACK procedure without an argument to use the default surface (a Bessel function) or with a two-dimensional array as its argument:

; Make up some data:  
zdata = DIST(40)  
SURF_TRACK, zdata  

We encourage you to inspect the code in surf_track.pro for hints on how to create a widget application around a draw widget that uses Object Graphics. Note especially that the SURF_TRACK procedure is well-behaved when it exits, destroying all of the objects it creates so as not to tie up memory with leftover objects for which object references are no longer available.

 

Figure 6-4: STYLE=3 (Ruled xz), HIDDEN_LINES=1 (hidden lines removed)

Figure 6-4: STYLE=3 (Ruled xz), HIDDEN_LINES=1 (hidden lines removed)

Figure 6-5: SHADING=1 (Gouraud), STYLE=2 (Solid)

Figure 6-5: SHADING=1 (Gouraud), STYLE=2 (Solid)

Figure 6-6: SKIRT=-0.402645

Figure 6-6: SKIRT=-0.402645

  IDL Online Help (March 06, 2007)