ucar.unidata.view.geoloc
Class MapProjectionDisplayJ3D

java.lang.Object
  extended by ucar.visad.display.DisplayMaster
      extended by ucar.unidata.view.geoloc.NavigatedDisplay
          extended by ucar.unidata.view.geoloc.MapProjectionDisplay
              extended by ucar.unidata.view.geoloc.MapProjectionDisplayJ3D

public class MapProjectionDisplayJ3D
extends MapProjectionDisplay

Provides a navigated VisAD DisplayImpl for displaying data. The Projection or MapProjection provides the transformation from lat/lon space to xy space. There are two modes that can be used with this display - MODE_3D (Java 3D) and MODE_2Din3D (2D in Java 3D). Performance is better in Java 3D modes. In the 3D mode, RealType.Altitude is mapped to the display Z axis.

Any displayable data must be able to map to RealType.Latitude, RealType.Longitude and/or RealType.Altitude.

This Display also supports a RubberBandBox in Java 3D for panning and zooming.

Version:
$Revision: 1.36 $ $Date: 2007/07/31 15:11:25 $
Author:
Don Murray
See Also:
NavigatedDisplay.enableRubberBanding(boolean)

Nested Class Summary
 
Nested classes/interfaces inherited from class ucar.unidata.view.geoloc.MapProjectionDisplay
MapProjectionDisplay.MapProjection3DAdapter
 
Nested classes/interfaces inherited from class ucar.unidata.view.geoloc.NavigatedDisplay
NavigatedDisplay.VerticalMapSet
 
Field Summary
 
Fields inherited from class ucar.unidata.view.geoloc.MapProjectionDisplay
CURSOR_BEARING, CURSOR_BEARING_TYPE, CURSOR_RANGE, CURSOR_RANGE_TYPE, force2D
 
Fields inherited from class ucar.unidata.view.geoloc.NavigatedDisplay
BOTTOM_VIEW, BOTTOM_VIEW_NAME, CURSOR_ALTITUDE, CURSOR_LATITUDE, CURSOR_LONGITUDE, EAST_VIEW, EAST_VIEW_NAME, MODE_2D, MODE_2Din3D, MODE_3D, NORTH_VIEW, NORTH_VIEW_NAME, SOUTH_VIEW, SOUTH_VIEW_NAME, TOP_VIEW, TOP_VIEW_NAME, WEST_VIEW, WEST_VIEW_NAME
 
Fields inherited from class ucar.visad.display.DisplayMaster
behavior, defaultMouseFunctions, POINT_MODE
 
Constructor Summary
MapProjectionDisplayJ3D()
          Constructs the default instance.
MapProjectionDisplayJ3D(int mode)
          Constructs an instance with a LatLonProjection with the specified mode.
MapProjectionDisplayJ3D(MapProjection projection, int mode)
          Constructs an instance with the specified MapProjection CoordinateSystem and mode.
MapProjectionDisplayJ3D(MapProjection projection, int mode, boolean offscreen, Dimension dimension)
          ctor
MapProjectionDisplayJ3D(MapProjection projection, int mode, boolean offscreen, Dimension dimension, GraphicsDevice screen)
          ctor
MapProjectionDisplayJ3D(ucar.unidata.geoloc.ProjectionImpl projection, int mode)
          Constructs an instance with the specified Projection and mode.
 
Method Summary
 void addKeyboardBehavior(KeyboardBehavior behavior)
          Add a keyboard behavior to this display
 void enableClipping(boolean clip)
          Enable clipping of data at the box edges.
 boolean getStereoAvailable()
          Determine if this MapDisplay can do stereo..
protected  void initializeClass()
          Set up the display called by constructor
 boolean isPerspectiveView()
          Get the view to perspective or parallel..
 void setEyePosition(double position)
          Method for setting the eye position for a 3D stereo view.
 void setPerspectiveView(boolean perspective)
          Set the view to perspective or parallel if this is a 3D display..
 void setView(int view)
          Set the view for 3D.
 
Methods inherited from class ucar.unidata.view.geoloc.MapProjectionDisplay
addVerticalMap, cursorMoved, destroy, getAltitudeMap, getCursorBearing, getCursorRange, getDisplayAltitudeType, getDisplayCoordinateSystem, getDisplayLatitudeType, getDisplayLongitudeType, getEarthLocation, getInstance, getInstance, getInstance, getInstance, getMapProjection, getSpatialCoordinates, getSpatialCoordinates, getVerticalRange, init, main, makeDefaultMapProjection, pointerMoved, removeVerticalMap, scaleVerticalValues, setCursorBearing, setCursorRange, setMapArea, setMapProjection, setMapProjection, setMapRegion, setVerticalRange, setVerticalRangeUnit, updateLocation
 
Methods inherited from class ucar.unidata.view.geoloc.NavigatedDisplay
animateMatrix, center, center, center, center, centerAndZoom, centerAndZoomTo, enableRubberBanding, flythrough, getAnimationStringOn, getAutoRotate, getBottomViewName, getBoxVisible, getCenterPoint, getCursorAltitude, getCursorLatitude, getCursorLongitude, getDisplayMode, getEarthLocation, getEarthLocation, getEarthLocation, getEastViewName, getIsAnimating, getLatLonBox, getLatLonRect, getNavigationToolBar, getNorthViewName, getRay, getRayDirection, getRayPositionAtZ, getRubberBandBox, getScaledValue, getScalesVisible, getScreenCenter, getScreenCoordinates, getScreenCoordinates, getScreenLowerLeft, getScreenLowerRight, getScreenUpperLeft, getScreenUpperRight, getSouthViewName, getSpatialCoordinatesFromScreen, getSpatialCoordinatesFromScreen, getTopViewName, getVerticalRangeUnit, getVisadBox, getWestViewName, init, isClippingEnabled, moveToScreen, moveToScreen, moveToScreen, rotateView, rotateView, setAnimationStringOn, setAutoRotate, setBoxVisible, setCursorAltitude, setCursorLatitude, setCursorLongitude, setCursorStringOn, setForeground, setRotateDelay, setRubberBandBox, setScalesVisible, setVerticalMapUnit
 
Methods inherited from class ucar.visad.display.DisplayMaster
addDisplayable, addDisplayListener, addPropertyChangeListener, addPropertyChangeListener, addScalarMap, addScalarMaps, addVetoableChangeListener, addVetoableChangeListener, buildAnimationSet, dataChange, draw, ensureInactive, equals, finalize, firePropertyChange, firePropertyChange, getAnimationSetFromDisplayables, getAnimationStringVisible, getBackground, getComponent, getDisplay, getDisplayableCount, getDisplayables, getDisplayables, getDisplayAspect, getDisplayComponent, getForeground, getImage, getMouseBehavior, getOffscreenDimension, getProjectionMatrix, getSavedProjectionMatrix, getScreenBounds, getWaitMessageVisible, handleMouseWheelMoved, hashCode, indexOf, init, is3D, isActive, isPointMode, printMatrix, printMe, rebuild, rebuildDisplay, reDisplayAll, removeDisplayable, removeDisplayables, removePropertyChangeListener, removePropertyChangeListener, removeScalarMap, removeScalarMaps, removeVetoableChangeListener, removeVetoableChangeListener, replaceScalarMap, reScale, resetMouseFunctions, resetProjection, rotate, rotateX, rotateY, rotateZ, saveCurrentDisplay, saveCurrentDisplay, saveCurrentDisplay, saveProjection, setActive, setAnimation, setAnimationStringVisible, setBackground, setDefaultMouseFunctions, setDisplayables, setDisplayables, setDisplayActive, setDisplayAspect, setDisplayInactive, setKeyboardBehavior, setKeyboardEventMap, setKeyboardEventMap, setMouseFunctions, setOffscreenDimension, setPointMode, setProjectionMatrix, setRebuildNecessary, setWaitMessageVisible, setWheelEventMap, translate, zoom, zoom
 
Methods inherited from class java.lang.Object
clone, getClass, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

MapProjectionDisplayJ3D

public MapProjectionDisplayJ3D()
                        throws VisADException,
                               RemoteException
Constructs the default instance. The default instance is based on a LatLonProjection in 3D mode where Z is mapped to Altitude.

Throws:
VisADException - Couldn't create necessary VisAD object
RemoteException - Couldn't create a remote object

MapProjectionDisplayJ3D

public MapProjectionDisplayJ3D(int mode)
                        throws VisADException,
                               RemoteException
Constructs an instance with a LatLonProjection with the specified mode.

Parameters:
mode - mode for display (MODE_3D, MODE_2Din3D)
Throws:
VisADException - Couldn't create necessary VisAD object
RemoteException - Couldn't create a remote object

MapProjectionDisplayJ3D

public MapProjectionDisplayJ3D(ucar.unidata.geoloc.ProjectionImpl projection,
                               int mode)
                        throws VisADException,
                               RemoteException
Constructs an instance with the specified Projection and mode.

Parameters:
mode - mode for display (MODE_3D, MODE_2Din3D)
projection - map projection
Throws:
VisADException - Couldn't create necessary VisAD object
RemoteException - Couldn't create a remote object

MapProjectionDisplayJ3D

public MapProjectionDisplayJ3D(MapProjection projection,
                               int mode)
                        throws VisADException,
                               RemoteException
Constructs an instance with the specified MapProjection CoordinateSystem and mode.

Parameters:
mode - mode for display (MODE_3D, MODE_2Din3D)
projection - map projection CS
Throws:
VisADException - Couldn't create necessary VisAD object
RemoteException - Couldn't create a remote object

MapProjectionDisplayJ3D

public MapProjectionDisplayJ3D(MapProjection projection,
                               int mode,
                               boolean offscreen,
                               Dimension dimension)
                        throws VisADException,
                               RemoteException
ctor

Parameters:
projection - The projection to use
mode - 3D/2D mode
offscreen - Are we in offscreen mode
dimension - Size of offscreen image
Throws:
RemoteException - On badness
VisADException - On badness

MapProjectionDisplayJ3D

public MapProjectionDisplayJ3D(MapProjection projection,
                               int mode,
                               boolean offscreen,
                               Dimension dimension,
                               GraphicsDevice screen)
                        throws VisADException,
                               RemoteException
ctor

Parameters:
projection - The projection to use
mode - 3D/2D mode
offscreen - Are we in offscreen mode
dimension - Size of offscreen image
screen - Graphics device to create on
Throws:
RemoteException - On badness
VisADException - On badness
Method Detail

initializeClass

protected void initializeClass()
                        throws VisADException,
                               RemoteException
Set up the display called by constructor

Overrides:
initializeClass in class MapProjectionDisplay
Throws:
RemoteException
VisADException

addKeyboardBehavior

public void addKeyboardBehavior(KeyboardBehavior behavior)
Add a keyboard behavior to this display

Specified by:
addKeyboardBehavior in class MapProjectionDisplay
Parameters:
behavior - behavior to add

enableClipping

public void enableClipping(boolean clip)
Enable clipping of data at the box edges.

Overrides:
enableClipping in class NavigatedDisplay
Parameters:
clip - true to turn clipping on, otherwise off

setPerspectiveView

public void setPerspectiveView(boolean perspective)
Set the view to perspective or parallel if this is a 3D display..

Overrides:
setPerspectiveView in class NavigatedDisplay
Parameters:
perspective - true for perspective view

isPerspectiveView

public boolean isPerspectiveView()
Get the view to perspective or parallel..

Overrides:
isPerspectiveView in class NavigatedDisplay
Returns:
true if perpsective view (MODE_3D only)

setView

public void setView(int view)
Set the view for 3D. The views are based on the original display as follows:
                        NORTH
                      _________
                    W |       | E
                    E |       | A
                    S |       | S
                    T |_______| T
                        SOUTH
 

Overrides:
setView in class MapProjectionDisplay
Parameters:
view - one of the static view fields (NORTH_VIEW, SOUTH_VIEW, .. etc).

getStereoAvailable

public boolean getStereoAvailable()
Determine if this MapDisplay can do stereo..

Overrides:
getStereoAvailable in class DisplayMaster
Returns:
true if the graphics device can do stereo

setEyePosition

public void setEyePosition(double position)
Method for setting the eye position for a 3D stereo view.

Overrides:
setEyePosition in class DisplayMaster
Parameters:
position - x position of each eye (left negative, right positive).