# Class SphericalPlot3D

java.lang.Object
java.awt.Component
java.awt.Container
javax.swing.JComponent
uk.ac.starlink.ttools.plot.TablePlot
uk.ac.starlink.ttools.plot.Plot3D
uk.ac.starlink.ttools.plot.SphericalPlot3D

All Implemented Interfaces:
  `ImageObserver, MenuContainer, Serializable`

public class SphericalPlot3D extends Plot3D
Plot3D which works with spherical polar coordinates.

Since:
  23 Mar 2007
Author:
  Mark Taylor
See Also:
  - Serialized Form

## Nested Class Summary

### Nested classes/interfaces inherited from class Plot3D

`Plot3D.RangeChecker, Plot3D.Transformer3D`

### Nested classes/interfaces inherited from class JComponent

`JComponent.AccessibleJComponent`

### Nested classes/interfaces inherited from class Container

`Container.AccessibleAWTContainer`

### Nested classes/interfaces inherited from class Component

`Component.AccessibleAWTComponent, Component.BaselineResizeBehavior, Component.BltBufferStrategy, Component.FlipBufferStrategy`

## Field Summary

### Fields inherited from class Plot3D

`hiBounds_, hiBoundsG_, loBounds_, loBoundsG_`

### Fields inherited from class JComponent

`listenerList, TOOL_TIP_TEXT_KEY, ui, UNDEFINED_CONDITION, WHEN_ANCESTOR_OF_FOCUSED_COMPONENT, WHEN_FOCUSED, WHEN_IN_FOCUSED_WINDOW`

### Fields inherited from class Component

`accessibleContext, BOTTOM_ALIGNMENT, CENTER_ALIGNMENT, LEFT_ALIGNMENT, RIGHT_ALIGNMENT, TOP_ALIGNMENT`

### Fields inherited from interface ImageObserver

`ABORT, ALLBITS, ERROR, FRAMEBITS, HEIGHT, PROPERTIES, SOMEBITS, WIDTH`

## Constructor Summary

Constructors
Constructor
Description
`SphericalPlot3D()`
Constructor.

## Method Summary

Modifier and Type
Method
Description
`DataBounds`
`calculateBounds(PlotData data, PlotState state)`
Data bounds include one range for the radial coordinate; ranges on the other axes aren't much use.
`protected Plot3D.RangeChecker`
`configureRanges(Plot3DState state)`
Provides notification that the range constraints are now as described in a supplied `state` object.
`protected boolean`
`frontOnly(Plot3DState state)`
Indicates whether only the front part of the plot should be plotted.
`protected boolean[]`
`get3DLogFlags()`
Returns an array of 3 flags which indicate whether logarithmic scaling is in force on the X, Y and Z axes respectively.
`protected double`
`getPadding(Plot3DState state, Graphics g, int[] padBorders)`
Works out padding factors to be used for the plot volume.
`protected void`
`plotAxes(Plot3DState state, Graphics g, Plot3D.Transformer3D trans, PlotVolume vol, boolean front)`
Draws grid lines which contain all the known points.

### Methods inherited from class Plot3D

`getDisplayBounds, getPlotBounds, getPlottedPointIterator, getPointPlacer, logize, paintMemoryError, rotate, rotateXY, setState, transformErrors`

### Methods inherited from class TablePlot

`addPlotListener, firePlotChangedLater, getState, isVectorContext, removePlotListener`

### Methods inherited from class JComponent

`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, getPreferredSize, getRegisteredKeyStrokes, getRootPane, getSize, getToolTipLocation, getToolTipText, getToolTipText, getTopLevelAncestor, getTransferHandler, getUI, getUIClassID, getVerifyInputWhenFocusTarget, getVetoableChangeListeners, getVisibleRect, getWidth, getX, getY, grabFocus, hide, isDoubleBuffered, isLightweightComponent, isManagingFocus, isOpaque, isOptimizedDrawingEnabled, isPaintingForPrint, isPaintingOrigin, isPaintingTile, isRequestFocusEnabled, isValidateRoot, paint, paintBorder, paintChildren, paintComponent, paintImmediately, paintImmediately, paramString, print, printAll, printBorder, printChildren, printComponent, processComponentKeyEvent, processKeyBinding, processKeyEvent, processMouseEvent, processMouseMotionEvent, 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`

### Methods inherited from class Container

`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`

### Methods inherited from class Component

`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, 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, requestFocus, requestFocus, requestFocusInWindow, resize, resize, setBounds, setBounds, setComponentOrientation, setCursor, setDropTarget, setFocusable, setFocusTraversalKeysEnabled, setIgnoreRepaint, setLocale, setLocation, setLocation, setMixingCutoutShape, setName, setSize, setSize, show, show, size, toString, transferFocus, transferFocusBackward, transferFocusUpCycle`

### Methods inherited from class Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait`

## Constructor Details

### SphericalPlot3D

public SphericalPlot3D()
Constructor.

## Method Details

### configureRanges

protected Plot3D.RangeChecker configureRanges(Plot3DState state)
Description copied from class: `Plot3D`
Provides notification that the range constraints are now as described in a supplied `state` object. A suitable `Plot3D.RangeChecker` object should be returned, but the implementation should take care of any other updates to its internal state which are required as well.

Specified by:
  `configureRanges` in class `Plot3D`
Parameters:
  `state` - plot state
Returns:
  a range checker appropriate to `state`'s range constraints

### getPadding

protected double getPadding(Plot3DState state, Graphics g, int[] padBorders)
Description copied from class: `Plot3D`
Works out padding factors to be used for the plot volume. The return value is the `padFactor`; the amount of space outside the unit cube in both dimensions. 1 means no extra space. The `padBorders` array is a 4-element array whose values on entry are ignored; on exit it should contain space, additional to `padFactor`, to be left around the edges of the plot. The order is (left,right,bottom,top).

Specified by:
  `getPadding` in class `Plot3D`
Parameters:
  `state` - plot state
  `g` - graphics context
  `padBorders` - 4-element array, filled on return
Returns:
  pad factor (>=1)
See Also:
  - `PlotVolume(Component, Graphics, MarkStyle[], double, int[], double)`

### calculateBounds

public DataBounds calculateBounds(PlotData data, PlotState state)
Data bounds include one range for the radial coordinate; ranges on the other axes aren't much use. The radial one will just be between [0..1] if no radial coordinate has been chosen. Ranges for any auxiliary axes are also added.

Overrides:
  `calculateBounds` in class `TablePlot`
Parameters:
  `data` - plot data
  `state` - plot state
Returns:
  data bounds object

### frontOnly

protected boolean frontOnly(Plot3DState state)
Description copied from class: `Plot3D`
Indicates whether only the front part of the plot should be plotted.

Specified by:
  `frontOnly` in class `Plot3D`
Parameters:
  `state` - plot state
Returns:
  true iff parts of the plot behind the centre of the Z axis should be ignored

### get3DLogFlags

protected boolean[] get3DLogFlags()
Description copied from class: `Plot3D`
Returns an array of 3 flags which indicate whether logarithmic scaling is in force on the X, Y and Z axes respectively.

Specified by:
  `get3DLogFlags` in class `Plot3D`
Returns:
  3-element array of Cartesian axis log scaling flags

### plotAxes

protected void plotAxes(Plot3DState state, Graphics g, Plot3D.Transformer3D trans, PlotVolume vol, boolean front)
Description copied from class: `Plot3D`
Draws grid lines which contain all the known points. According to the value of the `front` parameter, either the lines which are behind all the data points, or the lines which are in front of all the data points are drawn. Thus, the routine needs to be called twice to plot all the lines. The graphics context has had all the customisation it needs.

Specified by:
  `plotAxes` in class `Plot3D`
Parameters:
  `state` - plot state
  `g` - graphics context
  `trans` - transformer which maps data space to 3d graphics space
  `vol` - the plotting volume onto which the plot is done
  `front` - true for lines in front of data, false for lines behind