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)
javax.swing.JComponent.AccessibleJComponentGridColor, MarginColor, PRINT_MODE_RASTER, PRINT_MODE_VECTORlistenerList, TOOL_TIP_TEXT_KEY, ui, UNDEFINED_CONDITION, WHEN_ANCESTOR_OF_FOCUSED_COMPONENT, WHEN_FOCUSED, WHEN_IN_FOCUSED_WINDOW| Constructor and Description |
|---|
RMTrackballControl() |
| Modifier and Type | Method and Description |
|---|---|
void |
configureScene() |
boolean |
drawsBackground()
Returns whether or not the gutter, page background & dropshadow get drawn.
|
double |
getMouseAngle(java.awt.Point p)
Returns the angle from the mousePoint to the center of the control, in radians
|
RMScene3D |
getScene()
Returns the scene in this control.
|
boolean |
isOpaque() |
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 |
paintComponent(java.awt.Graphics g)
Overrides JComponent implementation to paint viewer shapes and page, margin, grid, etc.
|
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) |
void |
setSceneTool(Tool st)
Set the tool which will get callbacks from this control
|
void |
sync(RMScene3D s1,
RMScene3D s2) |
convertPointFromShape, convertPointToShape, convertRectFromShape, convertRectToShape, docShapeBoundsChanged, docShapeNeedsRepaint, docUndoerAddDirtyObject, flushGraphics, getBook, getDirtyRect, getDocument, getDocumentBounds, getFilename, getMinimumSize, getPageBounds, getPageLayout, getPreferredSize, getPrintingDPI, getPrintingMode, getRenderingHints, getSelectedPage, getSelectedPageIndex, getShapeAtPoint, getShapePainter, getShapeRepaintEnabled, getTransformFromShape, getUndoer, getZoomFactor, mouseMoved, pageBack, pageForward, paintComponentAbove, performActionURLClick, print, print, print2, print2, processMouseEvent, processMouseMotionEvent, repaint, runZoomPanel, setDocument, setPrintingDPI, setPrintingMode, setSelectedPageIndex, setShapePainter, setShapeRepaintEnabled, setZoomFactor, setZoomForScreenResolution, undoerAddChildToShape, undoerDisable, undoerEnable, undoerHasUndos, undoerSetCoalesce, undoerSetUndoTitle, updateShapeUnderStack, zoomToggleLastaddAncestorListener, 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, getNextFocusableComponent, getPopupLocation, getRegisteredKeyStrokes, getRootPane, getSize, getToolTipLocation, getToolTipText, getToolTipText, getTopLevelAncestor, getTransferHandler, getUIClassID, getVerifyInputWhenFocusTarget, getVetoableChangeListeners, getVisibleRect, getWidth, getX, getY, grabFocus, hide, isDoubleBuffered, isLightweightComponent, isManagingFocus, isOptimizedDrawingEnabled, isPaintingForPrint, isPaintingOrigin, isPaintingTile, isRequestFocusEnabled, isValidateRoot, paint, paintBorder, paintChildren, paintImmediately, paintImmediately, paramString, print, printAll, printBorder, printChildren, printComponent, processComponentKeyEvent, processKeyBinding, processKeyEvent, 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, updateUIadd, 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, validateTreeaction, 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, processMouseWheelEvent, 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, transferFocusUpCyclepublic void setBounds(int x,
int y,
int width,
int height)
setBounds in class java.awt.Componentpublic void configureScene()
public boolean isOpaque()
isOpaque in class javax.swing.JComponentpublic boolean drawsBackground()
RMViewerdrawsBackground in class RMViewerpublic void setSceneTool(Tool st)
public void mousePressed(java.awt.event.MouseEvent anEvent)
mousePressed in class RMViewerpublic void mouseDragged(java.awt.event.MouseEvent anEvent)
mouseDragged in class RMViewerpublic void mouseReleased(java.awt.event.MouseEvent anEvent)
mouseReleased in class RMViewerpublic void paintComponent(java.awt.Graphics g)
RMViewerpaintComponent in class RMViewerpublic double getMouseAngle(java.awt.Point p)
public void positionKnob(java.awt.Point p)
public RMScene3D getScene()