public class NumericControlProbe extends NumericProbeBase implements CopyableComponent
ModelComponent.NavpanelVisibility| Modifier and Type | Field and Description | 
|---|---|
| static double | EXPLICIT_TIME | 
| static PropertyList | myProps | 
useOldSaveMethod, writeStartStopTimeInSecondsenforceUniqueCompositeNames, enforceUniqueNames, myNumber, NULL_OBJ, useCompactPathNamesCOPY_REFERENCES| Constructor and Description | 
|---|
| NumericControlProbe() | 
| NumericControlProbe(int vsize,
                   double[] data,
                   double timeStep,
                   double startTime,
                   double stopTime) | 
| NumericControlProbe(java.lang.String fileName) | 
| Modifier and Type | Method and Description | 
|---|---|
| void | addData(double[] data,
       double timeStep)Adds one or more data samples to internal data list. Samples can be evenly distributed with given time step or time of each sample can be explicitly set. | 
| void | addData(double t,
       double[] v) | 
| void | addData(double t,
       Vector v)Adds data to internal data list. | 
| void | addData(double t,
       VectorNd v)Adds data to internal data list. | 
| void | addData(java.io.File file,
       double timeStep) | 
| void | addData(ReaderTokenizer rtok,
       double timeStep) | 
| void | apply(double t)Interpolate data to specified time and set related properties values. | 
| void | applyData(VectorNd vec,
         double t,
         double trel)Applies the current numeric data of this probe, as input in the argument
  vec, and uses it to update the simulation for either
 the current absolute timetor probe relative timetrel. | 
| java.lang.Object | clone() | 
| ModelComponent | copy(int flags,
    java.util.Map<ModelComponent,ModelComponent> copyMap)Create a copy of this component. | 
| void | createNumericList(int vsize) | 
| ComponentState | createState(ComponentState prevState)Factory routine to create a state object for this component, which can
 then be used as an argument for  HasState.setState(artisynth.core.modelbase.ComponentState)andHasState.getState(artisynth.core.modelbase.ComponentState). | 
| PropertyList | getAllPropertyInfo()Returns a list giving static information about all properties exported by
 this object. | 
| boolean | getCopyReferences(java.util.List<ModelComponent> refs,
                 ModelComponent ancestor)Collects external references which must also be copied in order to
 duplicate this component. | 
| DataFunction | getDataFunction()Returns the data function, if any, that is used by this probe's  apply(double)method to apply data for this probe. | 
| boolean | getExtendData()Returns true if data is to be extended past the last knot point | 
| void | getInitialState(ComponentState newstate,
               ComponentState oldstate)Gets an initial state for this component and returns the value in
  state. | 
| NumericList | getInput() | 
| void | getState(ComponentState state)Get the current state of this component. | 
| boolean | hasState()Queries if this component has state. | 
| boolean | isCloneable() | 
| boolean | isDuplicatable()Returns true if this component can be duplicated. | 
| boolean | isInput()Returns true if this probe is an input probe, and false otherwise. | 
| boolean | isSettable() | 
| void | load()When called (perhaps by the Artsynth timeline), causes information about
 this probe to be loaded from the attached file. | 
| void | loadEmpty() | 
| void | read(java.io.File file,
    boolean setTimes)Reads the start and stop times, scale value, and data for this probe from
 an ascii file. | 
| void | save()When called (perhaps by the Artsynth timeline), causes information about
 this probe to be written to the attached file. | 
| void | scan(ReaderTokenizer rtok,
    java.lang.Object ref)Scans this element from a ReaderTokenizer. | 
| boolean | scanItem(ReaderTokenizer rtok,
        java.util.Deque<ScanToken> tokens) | 
| void | setAttachedFileName(java.lang.String fileName) | 
| void | setAttachedFileName(java.lang.String fileName,
                   java.lang.String fmtStr) | 
| void | setData(double sec) | 
| void | setDataFunction(DataFunction func)Sets a data function to be used by this probe's  applyData(maspack.matrix.VectorNd, double, double)method to apply data for this probe. | 
| void | setExtendData(boolean extend)Enables extension of data past the last knot point. | 
| void | setState(ComponentState state)Set the state of this component. | 
| void | setVsize(int vsize) | 
| void | setVsize(int vsize,
        PlotTraceInfo[] traceInfos) | 
| void | write(java.io.PrintWriter pw,
     java.lang.String fmtStr)Writes the start and stop times, scale value, and data for this probe to a
 PrintWriter, using the format described for  read(File). | 
| void | writeItems(java.io.PrintWriter pw,
          NumberFormat fmt,
          CompositeComponent ancestor)Write probe attributes to a PrintWriter | 
applyDefaultDisplayRanges, decreaseDisplayRanges, dispose, getAttachedProperties, getData, getDefaultDisplayMax, getDefaultDisplayMin, getDefaultDisplayRange, getDisplay, getDrivers, getFormat, getInterpolation, getInterpolationOrder, getLegend, getMatlabName, getMinMaxValues, getNumericList, getOrderedTraceIndex, getPlotTraceInfo, getRange, getRangeHints, getTraceColor, getTraceLabel, getValues, getVariables, getVsize, increaseDisplayRanges, isEmpty, isPrintable, isSmallDisplayVisible, isTraceVisible, isValidVariableName, loadFromMatlab, print, removeDisplay, removeLegend, resetTraceColors, resetTraceOrder, saveToMatlab, scaleNumericList, setDefaultDisplayRange, setDefaultDisplayRange, setFormat, setInterpolation, setInterpolationOrder, setLegendLabels, setRangeHints, setScale, setSmallDisplayVisible, setTraceColor, setTraceLabel, setTraceOrder, setTraceVisible, setValues, swapPlotTraceOrder, updateDisplays, updateDisplays, updateDisplaysForPropertyChanges, updateDisplaysWithoutAutoRanginggetAttachedFile, getAttachedFileName, getChildren, getDefaultScale, getDefaultStartTime, getDefaultStopTime, getDefaultUpdateInterval, getDuration, getProperty, getScale, getStartTime, getStopTime, getTimelineTime, getTrack, getUpdateInterval, getVirtualTime, hasAttachedFile, hasChildren, isAttachedFileRelative, isEventTime, isScalable, nextEventTime, setInterval, setName, setScalable, setStartStopTimes, setStartTime, setStopTime, setTrack, setUpdateIntervalfinalize, getModel, initialize, isActive, setActive, setModel, setModelFromComponent, writecheckFlag, checkName, checkNameUniqueness, clearFlag, connectToHierarchy, createTempFlag, disconnectFromHierarchy, getGrandParent, getHardReferences, getName, getNameRange, getNavpanelVisibility, getNavpanelVisibility, getNumber, getParent, getSoftReferences, isConnectedToHierarchy, isFixed, isMarked, isSelected, isWritable, makeValidName, makeValidName, notifyParentOfChange, postscan, printReferences, recursivelyContained, recursivelyContains, removeTempFlag, setFixed, setFlag, setMarked, setNavpanelVisibility, setNavpanelVisibility, setNumber, setParent, setSelected, updateReferencesequals, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitconnectToHierarchy, disconnectFromHierarchy, getHardReferences, getName, getNavpanelVisibility, getNumber, getParent, getSoftReferences, isFixed, isMarked, isSelected, notifyParentOfChange, postscan, setFixed, setMarked, setName, setNumber, setParent, setSelected, updateReferencesgetPropertygetChildren, hasChildrenisWritable, writepublic static final double EXPLICIT_TIME
public static PropertyList myProps
public NumericControlProbe()
public NumericControlProbe(java.lang.String fileName)
                    throws java.io.IOException
java.io.IOExceptionpublic NumericControlProbe(int vsize,
                           double[] data,
                           double timeStep,
                           double startTime,
                           double stopTime)
public PropertyList getAllPropertyInfo()
HasPropertiesgetAllPropertyInfo in interface HasPropertiesgetAllPropertyInfo in class NumericProbeBasepublic void setDataFunction(DataFunction func)
applyData(maspack.matrix.VectorNd, double, double) 
 method to apply data for this probe. If the data function is set to
 null, then this probe will do nothing. If the
 applyData(maspack.matrix.VectorNd, double, double) method is overridden by a subclass, then the data
 application is determined instead by the overriding method.getDataFunction()public DataFunction getDataFunction()
apply(double) method to apply data for this probe.public void setExtendData(boolean extend)
extend - true if data is to be extended past the last knot pointpublic boolean getExtendData()
public void read(java.io.File file,
                 boolean setTimes)
          throws java.io.IOException
setTimes is false. 
 setTimes is false. 
 setTimes is false. 
 2.0 10.0 1.2 linear 2 explicit 0.0 2.0 2.0 1.1 4.0 3.0 3.0 0.0 1.0specifies a probe with a start and stop time of 2 and 10 seconds, respectively, a scale value of 1.2, linear interpolation, 2 values at each knot point, and three knot points at times 0.0, 1.1, and 3.0. If knot time is given implicitly by a time setp, then time is assumed to start at 0. The following input
2000000000 3000000000 2.5 step 2 2.0 2.0 2.0 4.0 3.0 0.0 1.0specifies a probe with a start and stop time of 2 and 3 seconds, respectively, a scale value of 2.5, step interpolation, 2 values at each knot point, and three knot points with times of 0, 2.0, and 4.0 (given implicity by a step size of 2.0).
The character '#' is a comment character, causing all subsequent input up to the next new line to be ignored.
file - File from which to read the probe informationsetTimes - if true, sets the start time, stop time,
 and scale values to those indicated at the head of the file. If 
 false, these values are ignored.java.io.IOException - if an I/O or format error occurred.public void write(java.io.PrintWriter pw,
                  java.lang.String fmtStr)
           throws java.io.IOException
read(File). The format used for producing floating point numbers can be
 controlled using a printf-style format string, details of which are
 described in NumberFormat.pw - writer which accepts the outputfmtStr - printf-style format string (if set to null then "%g" will be assumed,
 which will produce full precision output).java.io.IOException - if an I/O error occurs.public void setAttachedFileName(java.lang.String fileName)
setAttachedFileName in class Probepublic void setAttachedFileName(java.lang.String fileName,
                                java.lang.String fmtStr)
public void save()
          throws java.io.IOException
save in class Probejava.io.IOExceptionwrite(java.io.PrintWriter, java.lang.String)public void loadEmpty()
public void load()
          throws java.io.IOException
public void addData(java.io.File file,
                    double timeStep)
             throws java.io.IOException
java.io.IOExceptionpublic void addData(double[] data,
                    double timeStep)
EXPLICIT_TIME and before every data sample must be its temporal
 information.NumericProbeBase.getVsize() method.data - data array, which can contain multiple data samplestimeStep - time step in seconds or EXPLICIT_TIME if data contains explicitly
 set timestampspublic void addData(double t,
                    VectorNd v)
t - time in secondsv - vector of valuesjava.lang.IllegalArgumentException - if size of vector is not equal to NumericProbeBase.getVsize()public void addData(double t,
                    double[] v)
public void addData(double t,
                    Vector v)
t - time in secondsv - vector of valuesjava.lang.IllegalArgumentException - if size of vector is not equal to NumericProbeBase.getVsize()public void addData(ReaderTokenizer rtok, double timeStep) throws java.io.IOException
java.io.IOExceptionpublic void applyData(VectorNd vec, double t, double trel)
vec, and uses it to update the simulation for either
 the current absolute time t or probe relative time
 trel. The size of
 vec will equal the vector size of the probe (as returned by
 NumericProbeBase.getVsize(). Probe relative time is determined
 from the probe's start time and scale factor
 using trel = (t - startTime)/scale.
vec - supplies the current numeric datat - absolute time (seconds)trel - probe relative timepublic void apply(double t)
apply in class NumericProbeBaset - current timepublic boolean hasState()
ModelComponenthasState in interface ModelComponenthasState in class Probetrue if this component has statepublic ComponentState createState(ComponentState prevState)
HasStateHasState.setState(artisynth.core.modelbase.ComponentState) and HasState.getState(artisynth.core.modelbase.ComponentState). The state object does not have to be set to the component's
 current state.  If the component does not have any state information,
 this method should return an instance of
 EmptyState.createState in interface HasStatecreateState in class ProbeprevState - If non-null, supplies a previous state that
 was created by this component and which can be used to provide
 pre-sizing hints.public void getState(ComponentState state)
HasStatepublic void setState(ComponentState state)
HasStatepublic void getInitialState(ComponentState newstate, ComponentState oldstate)
HasStatestate. If prevstate is non-null, then it is
 assumed to contain a previous initial state value returned by this
 method, and state should be set to be as consistent with
 this previous state as possible. For example, suppose that this component
 currently contains subcomponents A, B, and C, while the
 prevstate contains the state from a previous time when it
 had components B, C, and D. Then state should contain
 substate values for B and C that are taken from
 prevstate. To facilitate this, the information returned in
 state should contain additional information such as the
 identities of all the (current) sub-components.getInitialState in interface HasStategetInitialState in class Probenewstate - receives the state informationoldstate - previous state information; may be null.public boolean isSettable()
isSettable in class Probepublic java.lang.Object clone()
                       throws java.lang.CloneNotSupportedException
clone in class NumericProbeBasejava.lang.CloneNotSupportedExceptionpublic NumericList getInput()
public boolean scanItem(ReaderTokenizer rtok, java.util.Deque<ScanToken> tokens) throws java.io.IOException
java.io.IOExceptionpublic void scan(ReaderTokenizer rtok, java.lang.Object ref) throws java.io.IOException
ModelComponentBasewrite.scan in interface ModelComponentscan in interface Scannablescan in class Probertok - Tokenizer from which to scan the elementref - optional reference object which can be used for resolving references to
 other objectsjava.io.IOException - if an I/O or formatting error occuredpublic void writeItems(java.io.PrintWriter pw,
                       NumberFormat fmt,
                       CompositeComponent ancestor)
                throws java.io.IOException
Probepw - writer to which components are writtenfmt - format for floating point numbersancestor - ancestor component which respect to which references are
 expressedjava.io.IOException - if an I/O error occurredpublic boolean isInput()
Probepublic void createNumericList(int vsize)
createNumericList in class NumericProbeBasepublic void setVsize(int vsize)
public void setVsize(int vsize,
                     PlotTraceInfo[] traceInfos)
public boolean isDuplicatable()
true if and only if CopyableComponent.getCopyReferences(java.util.List<artisynth.core.modelbase.ModelComponent>, artisynth.core.modelbase.ModelComponent) returns true.
 This method is not currently used. It is intended to provide a faster
 way of determining if a component can be duplicated, without having to
 use CopyableComponent.getCopyReferences(java.util.List<artisynth.core.modelbase.ModelComponent>, artisynth.core.modelbase.ModelComponent) to build the list of copy references.
isDuplicatable in interface CopyableComponenttrue if this component can be duplicated.public boolean isCloneable()
isCloneable in class NumericProbeBasepublic boolean getCopyReferences(java.util.List<ModelComponent> refs, ModelComponent ancestor)
true if and only if CopyableComponent.isDuplicatable() returns
 true.getCopyReferences in interface CopyableComponentrefs - list to which references are appendedancestor - root node of the hierarchy from which references are to be excludedpublic ModelComponent copy(int flags, java.util.Map<ModelComponent,ModelComponent> copyMap)
CopyableComponentCOPY_REFERENCES
 is set in flags, then any component referenced
 by this component should itself be set to a copy. This
 should be done first checking copyMap for an 
 existing copy of the referenced component. If there is no existing
 copy, then a copy should be created by calling copy
 recursively and adding the new copy to copyMap.copy in interface CopyableComponentcopy in class ModelComponentBaseflags - flags to control the copyingcopyMap - map to possible existing instances of referenced
 components