## com.sun.j3d.utils.behaviors.vp
Class OrbitBehavior

    java.lang.Object
      javax.media.j3d.SceneGraphObject
          javax.media.j3d.Node
              javax.media.j3d.Leaf
                  javax.media.j3d.Behavior
                      com.sun.j3d.utils.behaviors.vp.ViewPlatformBehavior
                          com.sun.j3d.utils.behaviors.vp.ViewPlatformAWTBehavior
                              com.sun.j3d.utils.behaviors.vp.OrbitBehavior

All Implemented Interfaces:
  java.awt.event.KeyListener, java.awt.event.MouseListener, java.awt.event.MouseMotionListener, java.awt.event.MouseWheelListener, java.util.EventListener

    public class OrbitBehavior

extends ViewPlatformAWTBehavior

Moves the View around a point of interest when the mouse is dragged with a mouse button pressed. Includes rotation, zoom, and translation actions. Zooming can also be obtained by using mouse wheel.

This behavior must be added to the ViewingPlatform using the `ViewingPlatform.setViewPlatformBehavior` method.

The rotate action rotates the ViewPlatform around the point of interest when the mouse is moved with the main mouse button pressed. The rotation is in the direction of the mouse movement, with a default rotation of 0.01 radians for each pixel of mouse movement.

The zoom action moves the ViewPlatform closer to or further from the point of interest when the mouse is moved with the middle mouse button pressed (or Alt-main mouse button on systems without a middle mouse button). The default zoom action is to translate the ViewPlatform 0.01 units for each pixel of mouse movement. Moving the mouse up moves the ViewPlatform closer, moving the mouse down moves the ViewPlatform further away.

By default, the zoom action allows the ViewPlatform to move through the center of rotation to orbit at a negative radius. The `STOP_ZOOM` constructor flag will stop the ViewPlatform at a minimum radius from the center. The default minimum radius is 0.0 and can be set using the `setMinRadius` method.

The `PROPORTIONAL_ZOOM` constructor flag changes the zoom action to move the ViewPlatform proportional to its distance from the center of rotation. For this mode, the default action is to move the ViewPlatform by 1% of its distance from the center of rotation for each pixel of mouse movement.

The translate action translates the ViewPlatform when the mouse is moved with the right mouse button pressed (Shift-main mouse button on systems without a right mouse button). The translation is in the direction of the mouse movement, with a default translation of 0.01 units for each pixel of mouse movement.

The sensitivity of the actions can be scaled using the `set` Action `Factor()` methods which scale the default movement by the factor. The rotate and translate actions have separate factors for x and y.

The actions can be reversed using the `REVERSE_`ACTION constructor flags. The default action moves the ViewPlatform around the objects in the scene. The `REVERSE_`ACTION flags can make the objects in the scene appear to be moving in the direction of the mouse movement.

The actions can be disabled by either using the `DISABLE_`ACTION constructor flags or the `set` Action `Enable` methods.

The default center of rotation is (0, 0, 0) and can be set using the `setRotationCenter()` method.

Since:
  Java 3D 1.2.1

Field Summary
`static int` `DISABLE_ROTATE` Constructor flag to disable rotate
`static int` `DISABLE_TRANSLATE` Constructor flag to disable translate
`static int` `DISABLE_ZOOM` Constructor flag to disable zoom
`static int` `PROPORTIONAL_ZOOM` Constructor flag to use proportional zoom, which determines how much you zoom based on view's distance from the center of rotation.
`static int` `REVERSE_ALL` Constructor flag to reverse all the behaviors
`static int` `REVERSE_ROTATE` Constructor flag to reverse the rotate behavior
`static int` `REVERSE_TRANSLATE` Constructor flag to reverse the translate behavior
`static int` `REVERSE_ZOOM` Constructor flag to reverse the zoom behavior
`static int` `STOP_ZOOM` Constructor flag that indicates zoom should stop when it reaches the minimum orbit radius set by setMinRadius().

Fields inherited from class com.sun.j3d.utils.behaviors.vp.ViewPlatformAWTBehavior
`canvases, frameWakeup, KEY_LISTENER, motion, MOUSE_LISTENER, MOUSE_MOTION_LISTENER, MOUSE_WHEEL_LISTENER, POST_ID, postWakeup, targetTransform`

Fields inherited from class com.sun.j3d.utils.behaviors.vp.ViewPlatformBehavior
`homeTransform, targetTG, vp`

Fields inherited from class javax.media.j3d.Node
`ALLOW_AUTO_COMPUTE_BOUNDS_READ, ALLOW_AUTO_COMPUTE_BOUNDS_WRITE, ALLOW_BOUNDS_READ, ALLOW_BOUNDS_WRITE, ALLOW_COLLIDABLE_READ, ALLOW_COLLIDABLE_WRITE, ALLOW_LOCAL_TO_VWORLD_READ, ALLOW_LOCALE_READ, ALLOW_PARENT_READ, ALLOW_PICKABLE_READ, ALLOW_PICKABLE_WRITE, ENABLE_COLLISION_REPORTING, ENABLE_PICK_REPORTING`

Constructor Summary
`OrbitBehavior()` Parameterless constructor for this behavior.
`OrbitBehavior(Canvas3D c)` Creates a new OrbitBehavior
`OrbitBehavior(Canvas3D c, int flags)` Creates a new OrbitBehavior

Method Summary
`double` `getMinRadius()` Returns the minimum orbit radius.
`boolean` `getRotateEnable()` Retrieves the state of rotate enabled
`void` `getRotationCenter(Point3d center)` Places the value of the center around which the View rotates into the Point3d.
`double` `getRotXFactor()` Returns the x rotation movement multiplier
`double` `getRotYFactor()` Returns the y rotation movement multiplier
`boolean` `getTranslateEnable()` Retrieves the state of translate enabled
`double` `getTransXFactor()` Returns the x translation movement multiplier
`double` `getTransYFactor()` Returns the y translation movement multiplier
`boolean` `getZoomEnable()` Retrieves the state of zoom enabled
`double` `getZoomFactor()` Returns the zoom movement multiplier
`protected void` `integrateTransforms()` Called once per frame (if the view is moving) to calculate the new view platform transform
`void` `MinRadius(java.lang.Object[] r)` Property which sets the minimum radius for the OrbitBehavior.
`protected void` `processAWTEvents(java.awt.AWTEvent[] events)` This is called once per frame if there are any AWT events to process.
`protected void` `processMouseEvent(java.awt.event.MouseEvent evt)`
`void` `ProportionalZoom(java.lang.Object[] state)` Property which sets proportional zoom behavior.
`void` `ReverseRotate(java.lang.Object[] state)` Property which sets reverse rotate behavior.
`void` `ReverseTranslate(java.lang.Object[] state)` Property which sets reverse translate behavior.
`void` `ReverseZoom(java.lang.Object[] state)` Property which sets reverse zoom behavior.
`void` `RotateEnable(java.lang.Object[] enabled)` Property which enables or disables rotation.
`void` `RotationCenter(java.lang.Object[] center)` Property which sets the center around which the View rotates.
`void` `RotFactors(java.lang.Object[] factors)` Property which sets the rotation x and y factors.
`void` `RotXFactor(java.lang.Object[] xFactor)` Property which sets the rotation x factor.
`void` `RotYFactor(java.lang.Object[] yFactor)` Property which sets the rotation y factor.
`void` `setMinRadius(double r)` Sets the minimum radius for the OrbitBehavior.
`void` `setProportionalZoom(boolean state)` Set proportional zoom behavior.
`void` `setReverseRotate(boolean state)` Set reverse rotate behavior.
`void` `setReverseTranslate(boolean state)` Set reverse translate behavior.
`void` `setReverseZoom(boolean state)` Set reverse zoom behavior.
`void` `setRotateEnable(boolean enabled)` Enables or disables rotation.
`void` `setRotationCenter(Point3d center)` Sets the center around which the View rotates.
`void` `setRotFactors(double xfactor, double yfactor)` Sets the rotation x and y factors.
`void` `setRotXFactor(double xfactor)` Sets the rotation x factor.
`void` `setRotYFactor(double yfactor)` Sets the rotation y factor.
`void` `setTransFactors(double xfactor, double yfactor)` Sets the translation x and y factors.
`void` `setTranslateEnable(boolean enabled)` Enables or disables translate.
`void` `setTransXFactor(double xfactor)` Sets the translation x factor.
`void` `setTransYFactor(double yfactor)` Sets the translation y factor.
`void` `setViewingPlatform(ViewingPlatform vp)` Sets the ViewingPlatform for this behavior.
`void` `setZoomEnable(boolean enabled)` Enables or disables zoom.
`void` `setZoomFactor(double zfactor)` Sets the zoom factor.
`void` `TransFactors(java.lang.Object[] factors)` Property which sets the translation x and y factors.
`void` `TranslateEnable(java.lang.Object[] enabled)` Property which enables or disables translate.
`void` `TransXFactor(java.lang.Object[] xFactor)` Property which sets the translation x factor.
`void` `TransYFactor(java.lang.Object[] yFactor)` Property which sets the translation y factor.
`void` `ZoomEnable(java.lang.Object[] enabled)` Property which enables or disables zoom.
`void` `ZoomFactor(java.lang.Object[] zFactor)` Property which sets the zoom factor.

Methods inherited from class com.sun.j3d.utils.behaviors.vp.ViewPlatformAWTBehavior
`initialize, keyPressed, keyReleased, keyTyped, mouseClicked, mouseDragged, mouseEntered, mouseExited, mouseMoved, mousePressed, mouseReleased, mouseWheelMoved, processStimulus, queueAWTEvent, setEnable, setListenerFlags`

Methods inherited from class com.sun.j3d.utils.behaviors.vp.ViewPlatformBehavior
`getHomeTransform, getViewingPlatform, goHome, setHomeTransform`

Methods inherited from class javax.media.j3d.Behavior
`getEnable, getNumSchedulingIntervals, getSchedulingBoundingLeaf, getSchedulingBounds, getSchedulingInterval, getView, getWakeupCondition, postId, setSchedulingBoundingLeaf, setSchedulingBounds, setSchedulingInterval, updateNodeReferences, wakeupOn`

Methods inherited from class javax.media.j3d.Node
`cloneNode, cloneTree, cloneTree, cloneTree, cloneTree, cloneTree, cloneTree, duplicateNode, getBounds, getBoundsAutoCompute, getCollidable, getLocale, getLocalToVworld, getLocalToVworld, getParent, getPickable, setBounds, setBoundsAutoCompute, setCollidable, setPickable`

Methods inherited from class javax.media.j3d.SceneGraphObject
`clearCapability, clearCapabilityIsFrequent, duplicateSceneGraphObject, getCapability, getCapabilityIsFrequent, getName, getUserData, isCompiled, isLive, setCapability, setCapabilityIsFrequent, setName, setUserData, toString`

Methods inherited from class java.lang.Object
`clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait`

Field Detail

### REVERSE_ROTATE

    public static final int REVERSE_ROTATE

  Constructor flag to reverse the rotate behavior

  See Also:
    Constant Field Values

### REVERSE_TRANSLATE

    public static final int REVERSE_TRANSLATE

  Constructor flag to reverse the translate behavior

  See Also:
    Constant Field Values

### REVERSE_ZOOM

    public static final int REVERSE_ZOOM

  Constructor flag to reverse the zoom behavior

  See Also:
    Constant Field Values

### REVERSE_ALL

    public static final int REVERSE_ALL

  Constructor flag to reverse all the behaviors

  See Also:
    Constant Field Values

### STOP_ZOOM

    public static final int STOP_ZOOM

  Constructor flag that indicates zoom should stop when it reaches the minimum orbit radius set by setMinRadius(). The minimus radius default is 0.0.

  See Also:
    Constant Field Values

### DISABLE_ROTATE

    public static final int DISABLE_ROTATE

  Constructor flag to disable rotate

  See Also:
    Constant Field Values

### DISABLE_TRANSLATE

    public static final int DISABLE_TRANSLATE

  Constructor flag to disable translate

  See Also:
    Constant Field Values

### DISABLE_ZOOM

    public static final int DISABLE_ZOOM

  Constructor flag to disable zoom

  See Also:
    Constant Field Values

### PROPORTIONAL_ZOOM

    public static final int PROPORTIONAL_ZOOM

  Constructor flag to use proportional zoom, which determines how much you zoom based on view's distance from the center of rotation. The percentage of distance that the viewer zooms is determined by the zoom factor.

  See Also:
    Constant Field Values

Constructor Detail

### OrbitBehavior

    public OrbitBehavior()

  Parameterless constructor for this behavior. This is intended for use by ConfiguredUniverse, which requires such a constructor for configurable behaviors. The Canvas3D used to listen for mouse and mouse motion events is obtained from the superclass setViewingPlatform() method.

  Since:
    Java 3D 1.3

### OrbitBehavior

    public OrbitBehavior(Canvas3D c)

  Creates a new OrbitBehavior

  Parameters:
    `c` - The Canvas3D to add the behavior to

### OrbitBehavior

    public OrbitBehavior(Canvas3D c,
                         int flags)

  Creates a new OrbitBehavior

  Parameters:
    `c` - The Canvas3D to add the behavior to
    `flags` - The option flags

Method Detail

### processAWTEvents

    protected void processAWTEvents(java.awt.AWTEvent[] events)

  Description copied from class: `ViewPlatformAWTBehavior`
  This is called once per frame if there are any AWT events to process. The `motion` variable will be true when the method is called. If it is true when the method returns integrateTransforms will be called immediately. The AWTEvents are presented in the array in the order in which they arrived from AWT.

  Specified by:
    `processAWTEvents` in class `ViewPlatformAWTBehavior`

### processMouseEvent

    protected void processMouseEvent(java.awt.event.MouseEvent evt)

### setViewingPlatform

    public void setViewingPlatform(ViewingPlatform vp)

  Sets the ViewingPlatform for this behavior. This method is called by the ViewingPlatform. If a sub-calls overrides this method, it must call super.setViewingPlatform(vp). NOTE: Applications should not call this method.

  Overrides:
    `setViewingPlatform` in class `ViewPlatformAWTBehavior`
  Parameters:
    `vp` - the target ViewingPlatform for this behavior

### integrateTransforms

    protected void integrateTransforms()

  Description copied from class: `ViewPlatformAWTBehavior`
  Called once per frame (if the view is moving) to calculate the new view platform transform

  Specified by:
    `integrateTransforms` in class `ViewPlatformAWTBehavior`

### setRotationCenter

    public void setRotationCenter(Point3d center)

  Sets the center around which the View rotates. The default is (0,0,0).

  Parameters:
    `center` - The Point3d to set the center of rotation to

### RotationCenter

    public void RotationCenter(java.lang.Object[] center)

  Property which sets the center around which the View rotates. Used by ConfiguredUniverse.

  Parameters:
    `center` - array of length 1 containing an instance of Point3d
  Since:
    Java 3D 1.3

### getRotationCenter

    public void getRotationCenter(Point3d center)

  Places the value of the center around which the View rotates into the Point3d.

  Parameters:
    `center` - The Point3d

### setRotFactors

    public void setRotFactors(double xfactor,
                              double yfactor)

  Sets the rotation x and y factors. The factors are used to determine how many radians to rotate the view for each pixel of mouse movement. The view is rotated factor * 0.01 radians for each pixel of mouse movement. The default factor is 1.0.

  Parameters:
    `xfactor` - The x movement multiplier
    `yfactor` - The y movement multiplier

### RotFactors

    public void RotFactors(java.lang.Object[] factors)

  Property which sets the rotation x and y factors. Used by ConfiguredUniverse.

  Parameters:
    `factors` - array of length 2 containing instances of Double
  Since:
    Java 3D 1.3

### setRotXFactor

    public void setRotXFactor(double xfactor)

  Sets the rotation x factor. The factors are used to determine how many radians to rotate the view for each pixel of mouse movement. The view is rotated factor * 0.01 radians for each pixel of mouse movement. The default factor is 1.0.

  Parameters:
    `xfactor` - The x movement multiplier

### RotXFactor

    public void RotXFactor(java.lang.Object[] xFactor)

  Property which sets the rotation x factor. Used by ConfiguredUniverse.

  Parameters:
    `xFactor` - array of length 1 containing instance of Double
  Since:
    Java 3D 1.3

### setRotYFactor

    public void setRotYFactor(double yfactor)

  Sets the rotation y factor. The factors are used to determine how many radians to rotate the view for each pixel of mouse movement. The view is rotated factor * 0.01 radians for each pixel of mouse movement. The default factor is 1.0.

  Parameters:
    `yfactor` - The y movement multiplier

### RotYFactor

    public void RotYFactor(java.lang.Object[] yFactor)

  Property which sets the rotation y factor. Used by ConfiguredUniverse.

  Parameters:
    `yFactor` - array of length 1 containing instance of Double
  Since:
    Java 3D 1.3

### setTransFactors

    public void setTransFactors(double xfactor,
                                double yfactor)

  Sets the translation x and y factors. The factors are used to determine how many units to translate the view for each pixel of mouse movement. The view is translated factor * 0.01 units for each pixel of mouse movement. The default factor is 1.0.

  Parameters:
    `xfactor` - The x movement multiplier
    `yfactor` - The y movement multiplier

### TransFactors

    public void TransFactors(java.lang.Object[] factors)

  Property which sets the translation x and y factors. Used by ConfiguredUniverse.

  Parameters:
    `factors` - array of length 2 containing instances of Double
  Since:
    Java 3D 1.3

### setTransXFactor

    public void setTransXFactor(double xfactor)

  Sets the translation x factor. The factors are used to determine how many units to translate the view for each pixel of mouse movement. The view is translated factor * 0.01 units for each pixel of mouse movement. The default factor is 1.0.

  Parameters:
    `xfactor` - The x movement multiplier

### TransXFactor

    public void TransXFactor(java.lang.Object[] xFactor)

  Property which sets the translation x factor. Used by ConfiguredUniverse.

  Parameters:
    `xFactor` - array of length 1 containing instance of Double
  Since:
    Java 3D 1.3

### setTransYFactor

    public void setTransYFactor(double yfactor)

  Sets the translation y factor. The factors are used to determine how many units to translate the view for each pixel of mouse movement. The view is translated factor * 0.01 units for each pixel of mouse movement. The default factor is 1.0.

  Parameters:
    `yfactor` - The y movement multiplier

### TransYFactor

    public void TransYFactor(java.lang.Object[] yFactor)

  Property which sets the translation y factor. Used by ConfiguredUniverse.

  Parameters:
    `yFactor` - array of length 1 containing instance of Double
  Since:
    Java 3D 1.3

### setZoomFactor

    public void setZoomFactor(double zfactor)

  Sets the zoom factor. The factor is used to determine how many units to zoom the view for each pixel of mouse movement. The view is zoomed factor * 0.01 units for each pixel of mouse movement. For proportional zoom, the view is zoomed factor * 1% of the distance from the center of rotation for each pixel of mouse movement. The default factor is 1.0.

  Parameters:
    `zfactor` - The movement multiplier

### ZoomFactor

    public void ZoomFactor(java.lang.Object[] zFactor)

  Property which sets the zoom factor. Used by ConfiguredUniverse.

  Parameters:
    `zFactor` - array of length 1 containing instance of Double
  Since:
    Java 3D 1.3

### getRotXFactor

    public double getRotXFactor()

  Returns the x rotation movement multiplier

  Returns:
    The movement multiplier for x rotation

### getRotYFactor

    public double getRotYFactor()

  Returns the y rotation movement multiplier

  Returns:
    The movement multiplier for y rotation

### getTransXFactor

    public double getTransXFactor()

  Returns the x translation movement multiplier

  Returns:
    The movement multiplier for x translation

### getTransYFactor

    public double getTransYFactor()

  Returns the y translation movement multiplier

  Returns:
    The movement multiplier for y translation

### getZoomFactor

    public double getZoomFactor()

  Returns the zoom movement multiplier

  Returns:
    The movement multiplier for zoom

### setRotateEnable

    public void setRotateEnable(boolean enabled)

  Enables or disables rotation. The default is true.

  Parameters:
    `enabled` - true or false to enable or disable rotate

### RotateEnable

    public void RotateEnable(java.lang.Object[] enabled)

  Property which enables or disables rotation. Used by ConfiguredUniverse.

  Parameters:
    `enabled` - array of length 1 containing instance of Boolean
  Since:
    Java 3D 1.3

### setZoomEnable

    public void setZoomEnable(boolean enabled)

  Enables or disables zoom. The default is true.

  Parameters:
    `enabled` - true or false to enable or disable zoom

### ZoomEnable

    public void ZoomEnable(java.lang.Object[] enabled)

  Property which enables or disables zoom. Used by ConfiguredUniverse.

  Parameters:
    `enabled` - array of length 1 containing instance of Boolean
  Since:
    Java 3D 1.3

### setTranslateEnable

    public void setTranslateEnable(boolean enabled)

  Enables or disables translate. The default is true.

  Parameters:
    `enabled` - true or false to enable or disable translate

### TranslateEnable

    public void TranslateEnable(java.lang.Object[] enabled)

  Property which enables or disables translate. Used by ConfiguredUniverse.

  Parameters:
    `enabled` - array of length 1 containing instance of Boolean
  Since:
    Java 3D 1.3

### getRotateEnable

    public boolean getRotateEnable()

  Retrieves the state of rotate enabled

  Returns:
    the rotate enable state

### getZoomEnable

    public boolean getZoomEnable()

  Retrieves the state of zoom enabled

  Returns:
    the zoom enable state

### getTranslateEnable

    public boolean getTranslateEnable()

  Retrieves the state of translate enabled

  Returns:
    the translate enable state

### setMinRadius

    public void setMinRadius(double r)

  Sets the minimum radius for the OrbitBehavior. The zoom will stop at this distance from the center of rotation. The default is 0.0. The minimum will have no affect if the STOP_ZOOM constructor flag is not set.

  Parameters:
    `r` - the minimum radius
  Throws:
    `java.lang.IllegalArgumentException` - if the radius is less than 0.0

### MinRadius

    public void MinRadius(java.lang.Object[] r)

  Property which sets the minimum radius for the OrbitBehavior. Used by ConfiguredUniverse.

  Parameters:
    `r` - array of length 1 containing instance of Double
  Since:
    Java 3D 1.3

### getMinRadius

    public double getMinRadius()

  Returns the minimum orbit radius. The zoom will stop at this distance from the center of rotation if the STOP_ZOOM constructor flag is set.

  Returns:
    the minimum radius

### setReverseTranslate

    public void setReverseTranslate(boolean state)

  Set reverse translate behavior. The default is false.

  Parameters:
    `state` - if true, reverse translate behavior
  Since:
    Java 3D 1.3

### ReverseTranslate

    public void ReverseTranslate(java.lang.Object[] state)

  Property which sets reverse translate behavior. Used by ConfiguredUniverse.

  Parameters:
    `state` - array of length 1 containing instance of Boolean
  Since:
    Java 3D 1.3

### setReverseRotate

    public void setReverseRotate(boolean state)

  Set reverse rotate behavior. The default is false.

  Parameters:
    `state` - if true, reverse rotate behavior
  Since:
    Java 3D 1.3

### ReverseRotate

    public void ReverseRotate(java.lang.Object[] state)

  Property which sets reverse rotate behavior. Used by ConfiguredUniverse.

  Parameters:
    `state` - array of length 1 containing instance of Boolean
  Since:
    Java 3D 1.3

### setReverseZoom

    public void setReverseZoom(boolean state)

  Set reverse zoom behavior. The default is false.

  Parameters:
    `state` - if true, reverse zoom behavior
  Since:
    Java 3D 1.3

### ReverseZoom

    public void ReverseZoom(java.lang.Object[] state)

  Property which sets reverse zoom behavior. Used by ConfiguredUniverse.

  Parameters:
    `state` - array of length 1 containing instance of Boolean
  Since:
    Java 3D 1.3

### setProportionalZoom

    public void setProportionalZoom(boolean state)

  Set proportional zoom behavior. The default is false.

  Parameters:
    `state` - if true, use proportional zoom behavior
  Since:
    Java 3D 1.3

### ProportionalZoom

    public void ProportionalZoom(java.lang.Object[] state)

  Property which sets proportional zoom behavior. Used by ConfiguredUniverse.

  Parameters:
    `state` - array of length 1 containing instance of Boolean
  Since:
    Java 3D 1.3

Copyright 1996-2008 Sun Microsystems, Inc. All Rights Reserved. Use is subject to license terms.