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.
>From: Bill Hibbard <hibbard@xxxxxxxxxxxxxxxxx> >Organization: SSEC >Keywords: 200011081434.eA8EY2427156 Hi Bill and Patrick- >There are examples of this in the MetApps source that Unidata >recently released. Perhaps someone from Unidata can point you >into the code more specifically. Look at the source for ucar.unidata.view.geoloc.MapProjectionDisplay. (available at http://www.unidata.ucar.edu/community/committees/metapps/SoftwareDownload.html) In the private method setDisplayTypes(), the DisplayTupleType is created. In this class, a new one is created every time a new map projection (CoordinateSystem) is created. If you always knew which axis you wanted to be logarithmic, then you would just create the coordinate system once that did the appropriate transformation to logarithmic values, create the new DisplayRealTypes and make the DisplayTupleType with the coordinate system. Then map your RealTypes to the DisplayRealTypes accordingly. One class that might help is visad.CartesianProductCoordinateSystem (CPCS) which allows you to "combine" coordinate systems. So you could create a LogarithmicCoordinateSystem that would just take the log of the input values, and use that in creating the CS to use with the DisplayTupleType. So, if you wanted the Z axis to be logarithmic, you could create a TrivialCoordinateSystem that would take an array of xy values and return those back as is (toReference and fromReference just return the input array), create a CartesianProductCoordinateSystem with TrivialCS and LogCS, create new DisplayRealTypes for the X, Y and Z axis (calling them something other than XAxis, YAxis and ZAxis), and then create the new DisplayTupleType with the CPCS. Then map whatever RealType you want to be logarithmic to the new Z DisplayRealType, and whatever you don't want to be logarithmic to the new Y and X axis DisplayRealTypes. You could make this more general so you could pass in which Axis you wanted logarithmic (or an array of DisplayRealTypes for more than one) and have the CPCS created with the appropriate combinations of TrivialCS's and LogarithmicCS's. Even better, you could create a class (subclass of DisplayImpl) that would automatically generate the appropriate DisplayTupleType given inputs of spatial DisplayRealTypes and the CoordinateSystems you want associated with each axis. VisAD should probably have a TrivialCoordinateSystem in the core. In my copious amounts of spare time, maybe I'll code that up. ;-) If you still have questions about this, let me know. Don ************************************************************* Don Murray UCAR Unidata Program dmurray@xxxxxxxxxxxxxxxx P.O. Box 3000 (303) 497-8628 Boulder, CO 80307 ************************************************************* Unidata WWW Server http://www.unidata.ucar.edu/ McIDAS Demonstration Machine http://mcdemo.unidata.ucar.edu/ *************************************************************
visad
archives: