org.opensourcephysics.cabrillo.tracker
Class CenterOfMass

java.lang.Object
  extended by org.opensourcephysics.cabrillo.tracker.TTrack
      extended by org.opensourcephysics.cabrillo.tracker.PointMass
          extended by org.opensourcephysics.cabrillo.tracker.CenterOfMass
All Implemented Interfaces:
java.beans.PropertyChangeListener, java.util.EventListener, Drawable, Interactive, Measurable, Trackable

public class CenterOfMass
extends PointMass

A CenterOfMass tracks the position, velocity and acceleration of the center of mass of a set of point mass objects.

Author:
Douglas Brown

Nested Class Summary
 
Nested classes/interfaces inherited from class org.opensourcephysics.cabrillo.tracker.TTrack
TTrack.StepArray
 
Field Summary
protected  CenterOfMassInspector inspector
           
protected  javax.swing.JMenuItem inspectorItem
           
protected  PointMass[] masses
           
protected  java.util.ArrayList massNames
           
protected  DatasetManager newData
           
 
Fields inherited from class org.opensourcephysics.cabrillo.tracker.PointMass
accelerationMenu, aDeriv, aFootprint, aFootprints, aMap, aTailsToOriginItem, aTailsToPositionItem, aVisibleItem, aVisibleOnAll, aVisMap, colorIndex, colors, dataDescriptions, derivData, labelsVisibleItem, mass, massField, massLabel, mSeparator, names, namesIndex, params, validData, vDeriv, velocityMenu, vFootprint, vFootprints, vMap, vTailsToOriginItem, vTailsToPositionItem, vVisibleItem, vVisibleOnAll, vVisMap, xData, xVisibleOnAll, xVisMap, yData
 
Fields inherited from class org.opensourcephysics.cabrillo.tracker.TTrack
angleField, angleLabel, angleSeparator, autoAdvance, autoAdvanceItem, colorItem, data, dataColumnsItem, dataProp, dataValid, defaultColor, defaultFootprint, deleteItem, description, descriptionItem, enabled, footprint, footprintListener, footprintMenu, footprints, labelFont, locked, lockedItem, magField, magLabel, magSeparator, markByDefault, markByDefaultItem, menu, name, nameAction, nameDialog, nameField, nameItem, panels, point, properties, stepField, stepLabel, steps, stepSeparator, support, tField, tLabel, toolbarPointComponents, toolbarTrackComponents, trackerPanel, trailLength, trailVisible, trailVisibleItem, tSeparator, viewable, visible, visibleItem, worldBounds, xField, xLabel, xSeparator, xSpinner, yField, yLabel, ySeparator, ySpinner
 
Constructor Summary
CenterOfMass()
          Constructs an empty CenterOfMass.
CenterOfMass(PointMass[] masses)
          Constructs a CenterOfMass with specified masses.
 
Method Summary
 void addMass(PointMass m)
          Adds a mass to the cm system.
protected  void cleanup()
          Cleans up associated resources when this track is deleted or cleared.
 boolean containsMass(PointMass m)
          Determines if the specified point mass is in this center of mass.
 void draw(DrawingPanel panel, java.awt.Graphics _g)
          Overrides PointMass draw method.
 CenterOfMassInspector getInspector()
          Gets the center of mass inspector.
static XML.ObjectLoader getLoader()
          Returns an ObjectLoader to save and load data for this class.
 PointMass[] getMasses()
          Gets the array of masses in this cm.
 javax.swing.JMenu getMenu(TrackerPanel trackerPanel)
          Returns a menu with items that control this track.
 java.util.ArrayList getToolbarPointComponents(TrackerPanel trackerPanel, TPoint point)
          Overrides TTrack getToolbarPointComponents method.
 java.util.ArrayList getToolbarTrackComponents(TrackerPanel trackerPanel)
          Overrides TTrack getToolbarTrackComponents method.
 boolean isDependent()
          Overrides TTrack isDependent method to return true.
 boolean isStepComplete(int n)
          Overrides TTrack isStepComplete method.
 void propertyChange(java.beans.PropertyChangeEvent e)
          Responds to property change events.
 void removeMass(PointMass m)
          Removes a mass from the cm system.
 void setLocked(boolean locked)
          Overrides TTrack setLocked method.
 void setMass(double mass)
          Overrides PointMass setMass method.
 java.lang.String toString()
          Overrides PointMass toString method.
 
Methods inherited from class org.opensourcephysics.cabrillo.tracker.PointMass
createStep, deleteStep, erase, erase, findInteractive, getAcceleration, getAccelerationFootprint, getAccelerationFootprints, getAccelerations, getDataDescription, getFootprint, getFootprintLength, getFootprints, getMass, getNextVisibleStep, getPreviousVisibleStep, getRotationData, getStep, getVelocities, getVelocity, getVelocityFootprint, getVelocityFootprints, getWorldAcceleration, getWorldPosition, getWorldVelocity, isAcceleration, isAVisible, isLabelsVisible, isPosition, isPositionVisible, isStepVisible, isVelocity, isVVisible, refreshData, remark, remark, setAccelerationFootprint, setAccelerationFootprints, setAVisible, setAVisibleOnAll, setColor, setFootprint, setLabelsVisible, setPositionVisible, setPositionVisibleOnAll, setVelocityFootprint, setVelocityFootprints, setVVisible, setVVisibleOnAll, updateDerivatives, updateNumberFields
 
Methods inherited from class org.opensourcephysics.cabrillo.tracker.TTrack
addFootprint, addPropertyChangeListener, addPropertyChangeListener, delete, firePropertyChange, getColor, getData, getDataName, getDescription, getFootprint, getFootprints, getName, getProperty, getPropertyNames, getStep, getSteps, getTrailLength, getWorldBounds, getX, getXMax, getXMax, getXMin, getXMin, getY, getYMax, getYMax, getYMin, getYMin, isAutoAdvance, isEmpty, isEnabled, isLocked, isMarkByDefault, isMeasured, isTrailVisible, isViewable, isVisible, removePropertyChangeListener, removePropertyChangeListener, repaint, repaint, repaint, setAutoAdvance, setDescription, setEnabled, setFootprint, setFootprints, setFootprints, setMarkByDefault, setName, setProperty, setTrackerPanel, setTrailLength, setTrailVisible, setViewable, setVisible, setX, setXY, setY
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

masses

protected PointMass[] masses

massNames

protected java.util.ArrayList massNames

inspectorItem

protected javax.swing.JMenuItem inspectorItem

newData

protected DatasetManager newData

inspector

protected CenterOfMassInspector inspector
Constructor Detail

CenterOfMass

public CenterOfMass()
Constructs an empty CenterOfMass.


CenterOfMass

public CenterOfMass(PointMass[] masses)
Constructs a CenterOfMass with specified masses.

Parameters:
masses - an array of point masses
Method Detail

draw

public void draw(DrawingPanel panel,
                 java.awt.Graphics _g)
Overrides PointMass draw method.

Specified by:
draw in interface Drawable
Overrides:
draw in class PointMass
Parameters:
panel - the drawing panel requesting the drawing
_g - the graphics context on which to draw

addMass

public void addMass(PointMass m)
Adds a mass to the cm system.

Parameters:
m - the mass

removeMass

public void removeMass(PointMass m)
Removes a mass from the cm system.

Parameters:
m - the mass

getMasses

public PointMass[] getMasses()
Gets the array of masses in this cm.

Returns:
a shallow clone of the masses array

containsMass

public boolean containsMass(PointMass m)
Determines if the specified point mass is in this center of mass.

Parameters:
m - the point mass
Returns:
true if m is in this cm

setLocked

public void setLocked(boolean locked)
Overrides TTrack setLocked method. CenterOfMass is always locked.

Overrides:
setLocked in class TTrack
Parameters:
locked - ignored

setMass

public void setMass(double mass)
Overrides PointMass setMass method. Mass is determined by masses.

Overrides:
setMass in class PointMass
Parameters:
mass - ignored

isStepComplete

public boolean isStepComplete(int n)
Overrides TTrack isStepComplete method. Always returns true.

Overrides:
isStepComplete in class TTrack
Parameters:
n - the frame number
Returns:
true always since cm gets data from point masses

isDependent

public boolean isDependent()
Overrides TTrack isDependent method to return true.

Overrides:
isDependent in class TTrack
Returns:
true if this track is dependent

propertyChange

public void propertyChange(java.beans.PropertyChangeEvent e)
Responds to property change events. CenterOfMass responds to the following events: "track" from tracker panel, "mass" and "step" from PointMass, "steps" from ParticleModel.

Specified by:
propertyChange in interface java.beans.PropertyChangeListener
Overrides:
propertyChange in class PointMass
Parameters:
e - the property change event

cleanup

protected void cleanup()
Cleans up associated resources when this track is deleted or cleared.

Overrides:
cleanup in class TTrack

getMenu

public javax.swing.JMenu getMenu(TrackerPanel trackerPanel)
Returns a menu with items that control this track.

Overrides:
getMenu in class PointMass
Parameters:
trackerPanel - the tracker panel
Returns:
a menu

getToolbarTrackComponents

public java.util.ArrayList getToolbarTrackComponents(TrackerPanel trackerPanel)
Overrides TTrack getToolbarTrackComponents method.

Overrides:
getToolbarTrackComponents in class PointMass
Parameters:
trackerPanel - the tracker panel
Returns:
the DataSetManager

getToolbarPointComponents

public java.util.ArrayList getToolbarPointComponents(TrackerPanel trackerPanel,
                                                     TPoint point)
Overrides TTrack getToolbarPointComponents method.

Overrides:
getToolbarPointComponents in class PointMass
Parameters:
trackerPanel - the tracker panel
point - the TPoint
Returns:
a list of components

toString

public java.lang.String toString()
Overrides PointMass toString method.

Overrides:
toString in class PointMass
Returns:
a description of this object

getLoader

public static XML.ObjectLoader getLoader()
Returns an ObjectLoader to save and load data for this class.

Returns:
the object loader

getInspector

public CenterOfMassInspector getInspector()
Gets the center of mass inspector.

Returns:
the center of mass inspector