simbad.sim
Class MouseOrbiter

java.lang.Object
  extended by simbad.sim.MouseOrbiter
All Implemented Interfaces:
java.awt.event.MouseListener, java.awt.event.MouseMotionListener, java.util.EventListener, javax.swing.event.MouseInputListener

public class MouseOrbiter
extends java.lang.Object
implements javax.swing.event.MouseInputListener

Manages changes of the view point view under the control of mouse movement. The mouse enables to modify lattitude and longitude of the viewpoint. This class is largely inspired from Sun's OrbitBehavior. It is intented to be used only with the main Canvas3d object (see World class).


Field Summary
private  javax.vecmath.Vector3d centerVector
           
private  javax.media.j3d.Transform3D currentXfm
           
private  double distanceFromCenter
           
private  javax.vecmath.Vector3d distanceVector
           
private  javax.vecmath.Vector3d invertCenterVector
           
private  double latitude
           
private  javax.media.j3d.Transform3D latitudeTransform
           
private  double longditude
           
private  javax.media.j3d.Transform3D longditudeTransform
           
private  double MAX_MOUSE_ANGLE
           
private  double minRadius
           
private  boolean motion
           
private  int mouseX
           
private  int mouseY
           
private static double NOMINAL_PZOOM_FACTOR
           
private static double NOMINAL_ROT_FACTOR
           
private static double NOMINAL_TRANS_FACTOR
           
private static double NOMINAL_ZOOM_FACTOR
           
private  boolean reverseRotate
           
private  boolean reverseTrans
           
private  boolean reverseZoom
           
private  double rollAngle
           
private  boolean rotateEnabled
           
private  javax.media.j3d.Transform3D rotateTransform
           
private  javax.vecmath.Point3d rotationCenter
           
private  javax.vecmath.Matrix3d rotMatrix
           
private  double rotXFactor
           
private  double rotXMul
           
private  double rotYFactor
           
private  double rotYMul
           
private  double startDistanceFromCenter
           
(package private)  javax.media.j3d.TransformGroup targetTG
           
(package private)  javax.media.j3d.Transform3D targetTransform
           
private  javax.media.j3d.Transform3D temp1
           
private  javax.media.j3d.Transform3D temp2
           
private  boolean translateEnabled
           
private  javax.media.j3d.Transform3D translation
           
private  javax.vecmath.Vector3d transVector
           
private  double transXFactor
           
private  double transXMul
           
private  double transYFactor
           
private  double transYMul
           
private  double xtrans
           
private  double ytrans
           
private  double ZOOM_FACTOR
           
private  boolean zoomEnabled
           
private  double zoomFactor
           
private  double zoomMul
           
private  double ztrans
           
 
Constructor Summary
MouseOrbiter(javax.media.j3d.Canvas3D c, javax.media.j3d.TransformGroup targetTransformGroup)
          Creates a new OrbitBehavior
 
Method Summary
protected  void integrateTransforms()
           
 void mouseClicked(java.awt.event.MouseEvent arg0)
           
 void mouseDragged(java.awt.event.MouseEvent event)
           
 void mouseEntered(java.awt.event.MouseEvent arg0)
           
 void mouseExited(java.awt.event.MouseEvent arg0)
           
 void mouseMoved(java.awt.event.MouseEvent event)
           
 void mousePressed(java.awt.event.MouseEvent event)
           
 void mouseReleased(java.awt.event.MouseEvent event)
           
protected  void processMouseEvent(java.awt.event.MouseEvent evt)
           
 void resetView()
          Reset the orientation and distance of this behavior to the current values in target Transform Group
 void setRotationCenter(javax.vecmath.Point3d center)
          Sets the center around which the View rotates.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

longditudeTransform

private javax.media.j3d.Transform3D longditudeTransform

latitudeTransform

private javax.media.j3d.Transform3D latitudeTransform

rotateTransform

private javax.media.j3d.Transform3D rotateTransform

temp1

private javax.media.j3d.Transform3D temp1

temp2

private javax.media.j3d.Transform3D temp2

translation

private javax.media.j3d.Transform3D translation

transVector

private javax.vecmath.Vector3d transVector

distanceVector

private javax.vecmath.Vector3d distanceVector

centerVector

private javax.vecmath.Vector3d centerVector

invertCenterVector

private javax.vecmath.Vector3d invertCenterVector

longditude

private double longditude

latitude

private double latitude

rollAngle

private double rollAngle

startDistanceFromCenter

private double startDistanceFromCenter

distanceFromCenter

private double distanceFromCenter

MAX_MOUSE_ANGLE

private final double MAX_MOUSE_ANGLE

ZOOM_FACTOR

private final double ZOOM_FACTOR
See Also:
Constant Field Values

rotationCenter

private javax.vecmath.Point3d rotationCenter

rotMatrix

private javax.vecmath.Matrix3d rotMatrix

currentXfm

private javax.media.j3d.Transform3D currentXfm

mouseX

private int mouseX

mouseY

private int mouseY

rotXFactor

private double rotXFactor

rotYFactor

private double rotYFactor

transXFactor

private double transXFactor

transYFactor

private double transYFactor

zoomFactor

private double zoomFactor

xtrans

private double xtrans

ytrans

private double ytrans

ztrans

private double ztrans

zoomEnabled

private boolean zoomEnabled

rotateEnabled

private boolean rotateEnabled

translateEnabled

private boolean translateEnabled

reverseRotate

private boolean reverseRotate

reverseTrans

private boolean reverseTrans

reverseZoom

private boolean reverseZoom

minRadius

private double minRadius

NOMINAL_ZOOM_FACTOR

private static final double NOMINAL_ZOOM_FACTOR
See Also:
Constant Field Values

NOMINAL_PZOOM_FACTOR

private static final double NOMINAL_PZOOM_FACTOR
See Also:
Constant Field Values

NOMINAL_ROT_FACTOR

private static final double NOMINAL_ROT_FACTOR
See Also:
Constant Field Values

NOMINAL_TRANS_FACTOR

private static final double NOMINAL_TRANS_FACTOR
See Also:
Constant Field Values

rotXMul

private double rotXMul

rotYMul

private double rotYMul

transXMul

private double transXMul

transYMul

private double transYMul

zoomMul

private double zoomMul

motion

private boolean motion

targetTG

javax.media.j3d.TransformGroup targetTG

targetTransform

javax.media.j3d.Transform3D targetTransform
Constructor Detail

MouseOrbiter

public MouseOrbiter(javax.media.j3d.Canvas3D c,
                    javax.media.j3d.TransformGroup targetTransformGroup)
Creates a new OrbitBehavior

Parameters:
c - The Canvas3D to add the behavior to
targetTransformGroup - The transformgroup affected by mouse movement
Method Detail

processMouseEvent

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

resetView

public void resetView()
Reset the orientation and distance of this behavior to the current values in target Transform Group


integrateTransforms

protected void integrateTransforms()

setRotationCenter

public void setRotationCenter(javax.vecmath.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

mouseClicked

public void mouseClicked(java.awt.event.MouseEvent arg0)
Specified by:
mouseClicked in interface java.awt.event.MouseListener

mousePressed

public void mousePressed(java.awt.event.MouseEvent event)
Specified by:
mousePressed in interface java.awt.event.MouseListener

mouseReleased

public void mouseReleased(java.awt.event.MouseEvent event)
Specified by:
mouseReleased in interface java.awt.event.MouseListener

mouseEntered

public void mouseEntered(java.awt.event.MouseEvent arg0)
Specified by:
mouseEntered in interface java.awt.event.MouseListener

mouseExited

public void mouseExited(java.awt.event.MouseEvent arg0)
Specified by:
mouseExited in interface java.awt.event.MouseListener

mouseDragged

public void mouseDragged(java.awt.event.MouseEvent event)
Specified by:
mouseDragged in interface java.awt.event.MouseMotionListener

mouseMoved

public void mouseMoved(java.awt.event.MouseEvent event)
Specified by:
mouseMoved in interface java.awt.event.MouseMotionListener