public class RMTrackballControl extends RMViewer
Trackball inherits the RMScene3D's behavior, which is that mouse motion in the x direction changes the pitch, and mouse motion in the y direction changes the yaw. The controll adds rotation about the z axis (roll) by clicking on a ring outside the trackball.
Note that this particular behavior quickly goes wrong, since Rotate(y,x,z) * Rotate(dy,dx,dz) != Rotate (y+dy, x+dx, z+dz)
To make the behavior more reasonable, we could try any of : 1. Make Scene3D keep a matrix,instead of the euler angles and just keep rotating that by dx,dy,dz 2. Get the matrix, rotate by dx,dy,dz, decompose into new euler angles and set those 3. Use quaternions (gasp)
RMViewer.PhantomPane, RMViewer.RMVPrintable, RMViewer.ZoomMode
javax.swing.JComponent.AccessibleJComponent
Content_Prop, PRINT_MODE_RASTER, PRINT_MODE_VECTOR, ZOOM_CHANGE
listenerList, TOOL_TIP_TEXT_KEY, ui, UNDEFINED_CONDITION, WHEN_ANCESTOR_OF_FOCUSED_COMPONENT, WHEN_FOCUSED, WHEN_IN_FOCUSED_WINDOW
Constructor and Description |
---|
RMTrackballControl()
Creates a new trackball control
|
Modifier and Type | Method and Description |
---|---|
void |
configureScene()
Reconfigure scene.
|
boolean |
getDrawsBackground()
Tell RM not to erase the background.
|
double |
getMouseAngle(java.awt.Point p)
Returns the angle from the mousePoint to the center of the control, in radians.
|
void |
mouseDragged(java.awt.event.MouseEvent anEvent)
Handle mouse dragged event.
|
void |
mousePressed(java.awt.event.MouseEvent anEvent)
Handle mouse pressed event.
|
void |
mouseReleased(java.awt.event.MouseEvent anEvent)
Handle mouse released event.
|
void |
positionKnob(java.awt.Point p)
Move the collar knob to the correct location for the given mouse point.
|
void |
setBounds(int x,
int y,
int width,
int height)
Overrides to update ZoomFactor if dynamic.
|
void |
syncFrom(RMScene3D aScene)
Sync from given scene to this scene control.
|
void |
syncTo(RMScene3D aScene)
Sync to a given scene from this scene control.
|
convertPointFromShape, convertPointToShape, convertRectFromShape, convertRectToShape, createInputAdapter, createShapePainter, createViewerShape, docShapeRepaint, firstPage, flushShapeRepaints, getBook, getContent, getContentX, getContentY, getCopies, getDocument, getDocumentBounds, getHoverShape, getInputAdapter, getlastZoomFactor, getPageBounds, getPageCount, getPageOrientation, getPaintFrameRate, getPhantomPane, getPreferredScrollableViewportSize, getPreferredSize, getPrefSize, getPrefSize, getPrintingDPI, getPrintingMode, getRepaintBoundsForShape, getScrollableBlockIncrement, getScrollableTracksViewportHeight, getScrollableTracksViewportWidth, getScrollableUnitIncrement, getSelectedPage, getSelectedPageIndex, getShape, getShapeAtPoint, getShapePainter, getShapeRepaintEnabled, getShown, getSourceURL, getTransformFromShape, getUndoer, getViewerShape, getZoomFactor, getZoomFactor, getZoomFocusRect, getZoomMode, getZoomToActualSizeFactor, isCollate, isEditing, isPreview, isPrintBothSides, isUseAutoLandscape, isZoomToFactor, lastPage, mouseMoved, pageBack, pageForward, paintBackground, paintComponent, performActionURLClick, play, print, print, processKeyEvent, processMouseEvent, processMouseMotionEvent, processMouseWheelEvent, propertyChange, repaint, runZoomPanel, setCollate, setContent, setContent, setCopies, setInputAdapter, setPageOrientation, setPaintFrameRate, setPrintBothSides, setPrintingDPI, setPrintingMode, setSelectedPageIndex, setShapeRepaintEnabled, setShown, setUseAutoLandscape, setZoomFactor, setZoomFactorImpl, setZoomMode, setZoomToFitFactor, stop, undoerHasUndos, undoerSetUndoTitle, viewerHidden, viewerShown, zoomToggleLast
addAncestorListener, addNotify, addVetoableChangeListener, computeVisibleRect, contains, createToolTip, disable, enable, firePropertyChange, firePropertyChange, firePropertyChange, fireVetoableChange, getActionForKeyStroke, getActionMap, getAlignmentX, getAlignmentY, getAncestorListeners, getAutoscrolls, getBaseline, getBaselineResizeBehavior, getBorder, getBounds, getClientProperty, getComponentGraphics, getComponentPopupMenu, getConditionForKeyStroke, getDebugGraphicsOptions, getDefaultLocale, getFontMetrics, getGraphics, getHeight, getInheritsPopupMenu, getInputMap, getInputMap, getInputVerifier, getInsets, getInsets, getListeners, getLocation, getMaximumSize, getMinimumSize, getNextFocusableComponent, getPopupLocation, getRegisteredKeyStrokes, getRootPane, getSize, getToolTipLocation, getToolTipText, getToolTipText, getTopLevelAncestor, getTransferHandler, getUIClassID, getVerifyInputWhenFocusTarget, getVetoableChangeListeners, getVisibleRect, getWidth, getX, getY, grabFocus, hide, isDoubleBuffered, isLightweightComponent, isManagingFocus, isOpaque, isOptimizedDrawingEnabled, isPaintingForPrint, isPaintingOrigin, isPaintingTile, isRequestFocusEnabled, isValidateRoot, paint, paintBorder, paintChildren, paintImmediately, paintImmediately, paramString, print, printAll, printBorder, printChildren, printComponent, processComponentKeyEvent, processKeyBinding, putClientProperty, registerKeyboardAction, registerKeyboardAction, removeAncestorListener, removeNotify, removeVetoableChangeListener, repaint, repaint, requestDefaultFocus, requestFocus, requestFocus, requestFocusInWindow, requestFocusInWindow, resetKeyboardActions, reshape, revalidate, scrollRectToVisible, setActionMap, setAlignmentX, setAlignmentY, setAutoscrolls, setBackground, setBorder, setComponentPopupMenu, setDebugGraphicsOptions, setDefaultLocale, setDoubleBuffered, setEnabled, setFocusTraversalKeys, setFont, setForeground, setInheritsPopupMenu, setInputMap, setInputVerifier, setMaximumSize, setMinimumSize, setNextFocusableComponent, setOpaque, setPreferredSize, setRequestFocusEnabled, setToolTipText, setTransferHandler, setUI, setVerifyInputWhenFocusTarget, setVisible, unregisterKeyboardAction, update, updateUI
add, add, add, add, add, addContainerListener, addImpl, addPropertyChangeListener, addPropertyChangeListener, applyComponentOrientation, areFocusTraversalKeysSet, countComponents, deliverEvent, doLayout, findComponentAt, findComponentAt, getComponent, getComponentAt, getComponentAt, getComponentCount, getComponents, getComponentZOrder, getContainerListeners, getFocusTraversalKeys, getFocusTraversalPolicy, getLayout, getMousePosition, insets, invalidate, isAncestorOf, isFocusCycleRoot, isFocusCycleRoot, isFocusTraversalPolicyProvider, isFocusTraversalPolicySet, layout, list, list, locate, minimumSize, paintComponents, preferredSize, printComponents, processContainerEvent, processEvent, remove, remove, removeAll, removeContainerListener, setComponentZOrder, setFocusCycleRoot, setFocusTraversalPolicy, setFocusTraversalPolicyProvider, setLayout, transferFocusDownCycle, validate, validateTree
action, add, addComponentListener, addFocusListener, addHierarchyBoundsListener, addHierarchyListener, addInputMethodListener, addKeyListener, addMouseListener, addMouseMotionListener, addMouseWheelListener, bounds, checkImage, checkImage, coalesceEvents, contains, createImage, createImage, createVolatileImage, createVolatileImage, disableEvents, dispatchEvent, enable, enableEvents, enableInputMethods, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, getAccessibleContext, getBackground, getBounds, getColorModel, getComponentListeners, getComponentOrientation, getCursor, getDropTarget, getFocusCycleRootAncestor, getFocusListeners, getFocusTraversalKeysEnabled, getFont, getForeground, getGraphicsConfiguration, getHierarchyBoundsListeners, getHierarchyListeners, getIgnoreRepaint, getInputContext, getInputMethodListeners, getInputMethodRequests, getKeyListeners, getLocale, getLocation, getLocationOnScreen, getMouseListeners, getMouseMotionListeners, getMousePosition, getMouseWheelListeners, getName, getParent, getPeer, getPropertyChangeListeners, getPropertyChangeListeners, getSize, getToolkit, getTreeLock, gotFocus, handleEvent, hasFocus, imageUpdate, inside, isBackgroundSet, isCursorSet, isDisplayable, isEnabled, isFocusable, isFocusOwner, isFocusTraversable, isFontSet, isForegroundSet, isLightweight, isMaximumSizeSet, isMinimumSizeSet, isPreferredSizeSet, isShowing, isValid, isVisible, keyDown, keyUp, list, list, list, location, lostFocus, mouseDown, mouseDrag, mouseEnter, mouseExit, mouseMove, mouseUp, move, nextFocus, paintAll, postEvent, prepareImage, prepareImage, processComponentEvent, processFocusEvent, processHierarchyBoundsEvent, processHierarchyEvent, processInputMethodEvent, remove, removeComponentListener, removeFocusListener, removeHierarchyBoundsListener, removeHierarchyListener, removeInputMethodListener, removeKeyListener, removeMouseListener, removeMouseMotionListener, removeMouseWheelListener, removePropertyChangeListener, removePropertyChangeListener, repaint, repaint, repaint, resize, resize, setBounds, setComponentOrientation, setCursor, setDropTarget, setFocusable, setFocusTraversalKeysEnabled, setIgnoreRepaint, setLocale, setLocation, setLocation, setName, setSize, setSize, show, show, size, toString, transferFocus, transferFocusBackward, transferFocusUpCycle
public void setBounds(int x, int y, int width, int height)
RMViewer
public void configureScene()
public boolean getDrawsBackground()
getDrawsBackground
in class RMViewer
public void mousePressed(java.awt.event.MouseEvent anEvent)
mousePressed
in class RMViewer
public void mouseDragged(java.awt.event.MouseEvent anEvent)
mouseDragged
in class RMViewer
public void mouseReleased(java.awt.event.MouseEvent anEvent)
mouseReleased
in class RMViewer
public double getMouseAngle(java.awt.Point p)
public void positionKnob(java.awt.Point p)
public void syncFrom(RMScene3D aScene)
public void syncTo(RMScene3D aScene)