NOTICE: This version of the NSF Unidata web site (archive.unidata.ucar.edu) is no longer being updated.
Current content can be found at unidata.ucar.edu.
To learn about what's going on, see About the Archive Site.
Hello Christian, > Here is an elementary question about the way to represent a > temperature field. I wish to obtain a 3d picture of a 3d field > ((lat, long, alt)-> temp) on a 3d grid, with background a digital > elevation model ((lat,long)->elev), on a 2d grid. I have almost got > it. I still have two problems. First, sometimes the DEM appears as > a DEM in grey in a realistic way, sometimes it appears as a > polyhderic surface and I do'nt know how to control its appearence. If you construct ScalarMaps: lat -> YAxis long -> XAxis elev -> ZAxis then ((lat, long) -> elev) should be displayed as a topography in shades of grey. The polyhedric surface appearance may be caused by the undersampling of surface shape for curved texture maps. You can control this by either disabling texture mapping: GraphicsModeControl mode = display.getGraphicsModeControl(); mode.setTextureEnable(false); or reducing the default undersampling factor of 10 to some smaller value, such as 3: GraphicsModeControl mode = display.getGraphicsModeControl(); mode.setCurvedSize(3); Please experiment with these and let me know if this continues to be a problem for you. > Second I wish to represent the temperature field by colouring the > points of a 3d grid; is there a simple way to colour just the points > with temperature in a given range ? If you construct ScalarMaps: lat -> YAxis long -> XAxis alt -> ZAxis temp -> RGB then ((lat, long, alt)-> temp) will displayed as a volume rendering (if the domain Set is a Linear3DSet) or as discrete points (if the domain Set is nor a Linear3DSet). It sounds like you are getting discrete points. You can select points in a temperature range by also constructing a ScalarMap: temp -> SelectRange You can do a getControl() on this ScalarMap and call setRange() on the returned RangeControl, or you can construct a SelectRangeWidget from this ScalarMap and add it to your GUI for interactive range selection. If you would prefer volume rendering over discrete points, you can resample your ((lat, long, alt)-> temp) field to a Linear3DSet. Note that if you call mode.setTextureEnable(false) for your elevation data, this will also disable volume rendering for your volume data, in the same display. Note that you may want to modify the MathType of your elevation model to ((lat,long)->alt) so that it can share the "alt -> ZAxis" ScalarMap with your volume. That we you can be sure that altitudes are consistent between the depictions of the elevation map and the volume. Alternatively, you can explicitly call setRange() with identical ranges on the two ScalarMaps "alt ->ZAxis" and "elev -> ZAxis". Cheers, Bill ---------------------------------------------------------- Bill Hibbard, SSEC, 1225 W. Dayton St., Madison, WI 53706 hibbard@xxxxxxxxxxxxxxxxx 608-263-4427 fax: 608-263-6738 http://www.ssec.wisc.edu/~billh/vis.html
visad
archives: