public class AxialSpring extends PointSpringBase implements ScalableUnits, CopyableComponent
ModelComponent.NavpanelVisibility| Modifier and Type | Field and Description | 
|---|---|
| static PropertyList | myProps | 
myIgnoreCoriolisInJacobian, useMaterialenforceUniqueCompositeNames, enforceUniqueNames, myNumber, NULL_OBJ, useCompactPathNamesCOPY_REFERENCESTRANSPARENT, TWO_DIMENSIONAL| Constructor and Description | 
|---|
| AxialSpring() | 
| AxialSpring(double k,
           double d,
           double l0) | 
| AxialSpring(java.lang.String name) | 
| AxialSpring(java.lang.String name,
           double l0) | 
| AxialSpring(java.lang.String name,
           double k,
           double d,
           double l0) | 
| Modifier and Type | Method and Description | 
|---|---|
| void | addPosJacobian(SparseNumberedBlockMatrix M,
              double s)Scales the components of the position Jacobian associated with this force
 effector and adds it to the supplied solve matrix M. | 
| void | addSolveBlocks(SparseNumberedBlockMatrix M)Adds any needed blocks to a solve matrix in order to accomodate the
 Jacobian terms associated with this force effector. | 
| void | addVelJacobian(SparseNumberedBlockMatrix M,
              double s)Scales the components of the velocity Jacobian associated with this force
 effector and adds it to the supplied solve matrix M. | 
| void | applyForces(double t)Adds forces to the components affected by this force effector at a
 particular time. | 
| void | computeForce(Vector3d f)Computes the force acting on the first point. | 
| void | computeForcePositionJacobian(Matrix3d M)Computes the force/position Jacobian of this spring. | 
| void | computeForceVelocityJacobian(Matrix3d M)Computes the force/velocity Jacobian of this spring. | 
| ModelComponent | copy(int flags,
    java.util.Map<ModelComponent,ModelComponent> copyMap)Create a copy of this component. | 
| 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. | 
| Vector3d | getDir() | 
| Point | getFirstPoint() | 
| void | getHardReferences(java.util.List<ModelComponent> refs)Appends all hard references for this component to a list. | 
| int | getJacobianType()Returns a code indicating the matrix type that results when the Jacobian
 terms of this force effector are added to the solve matrix. | 
| double | getLength() | 
| double | getLengthDot() | 
| Point | getSecondPoint() | 
| boolean | isDuplicatable()Returns true if this component can be duplicated. | 
| void | printPointReferences(java.io.PrintWriter pw,
                    CompositeComponent ancestor) | 
| void | render(Renderer renderer,
      int flags)Render this object using the functionality of the supplied
  Renderer. | 
| void | scaleDistance(double s)Scales all distance coordinates. | 
| void | scaleMass(double s)Scales all mass units. | 
| void | setFirstPoint(Point pnt) | 
| void | setPoints(Point p1,
         Point p2) | 
| void | setPoints(Point p1,
         Point p2,
         double restLength) | 
| double | setRestLengthFromPoints()Sets the rest length of the spring from the current point locations | 
| void | setSecondPoint(Point pnt) | 
| void | updateBounds(Vector3d pmin,
            Vector3d pmax)Update the minimum and maximum points for this object. | 
| void | write(java.io.PrintWriter pw,
     NumberFormat fmt,
     java.lang.Object ref)Writes a text description of this element to a PrintWriter. | 
computeDFdl, computeDFdldot, computeF, createDefaultMaterial, createRenderProps, getEffectiveMaterial, getMaterial, getMaxForce, getRenderColor, getRenderHints, getRenderProps, getRestLength, getSelection, isSelectable, numSelectionQueriesNeeded, prerender, setDamping, setLinearMaterial, setMaterial, setMaxForce, setRenderProps, setRestLength, setStiffnesscheckFlag, checkName, checkNameUniqueness, clearFlag, clone, connectToHierarchy, createTempFlag, disconnectFromHierarchy, getChildren, getGrandParent, getName, getNameRange, getNavpanelVisibility, getNavpanelVisibility, getNumber, getParent, getProperty, getSoftReferences, hasChildren, hasState, isConnectedToHierarchy, isFixed, isMarked, isSelected, isWritable, makeValidName, makeValidName, notifyParentOfChange, postscan, printReferences, recursivelyContained, recursivelyContains, removeTempFlag, scan, setFixed, setFlag, setMarked, setName, setNavpanelVisibility, setNavpanelVisibility, setNumber, setParent, setSelected, updateReferencesequals, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitconnectToHierarchy, disconnectFromHierarchy, getName, getNavpanelVisibility, getNumber, getParent, getSoftReferences, hasState, isFixed, isMarked, isSelected, notifyParentOfChange, postscan, scan, setFixed, setMarked, setName, setNumber, setParent, setSelected, updateReferencesgetPropertygetChildren, hasChildrenisWritablepublic static PropertyList myProps
public AxialSpring()
public AxialSpring(java.lang.String name)
public AxialSpring(java.lang.String name,
                   double l0)
public AxialSpring(java.lang.String name,
                   double k,
                   double d,
                   double l0)
public AxialSpring(double k,
                   double d,
                   double l0)
public PropertyList getAllPropertyInfo()
HasPropertiesgetAllPropertyInfo in interface HasPropertiesgetAllPropertyInfo in class PointSpringBasepublic Point getFirstPoint()
public Point getSecondPoint()
public void setFirstPoint(Point pnt)
public void setSecondPoint(Point pnt)
public double setRestLengthFromPoints()
PointSpringBasesetRestLengthFromPoints in class PointSpringBasepublic void computeForce(Vector3d f)
f - returns the computed force acting on the first pointpublic void applyForces(double t)
ForceEffectorapplyForces in interface ForceEffectorapplyForces in class Springt - time (seconds)public void printPointReferences(java.io.PrintWriter pw,
                                 CompositeComponent ancestor)
                          throws java.io.IOException
java.io.IOExceptionpublic void write(java.io.PrintWriter pw,
                  NumberFormat fmt,
                  java.lang.Object ref)
           throws java.io.IOException
ModelComponentBasescan and complete
 enough to allow full reconstruction of the element.write in interface Scannablewrite in class ModelComponentBasepw - stream for writing the elementfmt - numeric formating informationref - optional reference object which can be used for producing references to
 other objectsjava.io.IOException - if an I/O error occuredpublic void updateBounds(Vector3d pmin, Vector3d pmax)
IsRenderableupdateBounds in interface IsRenderableupdateBounds in class PointSpringBasepmin - minimum pointpmax - maximum pointpublic void render(Renderer renderer, int flags)
IsRenderableRenderer.render in interface IsRenderablerender in class PointSpringBaserenderer - provides the functionality used to perform the rendering.flags - flags that may be used to control different 
 aspects of the rendering. Flags are defined in Renderer
 and currently include
 Renderer.HIGHLIGHT and
 Renderer.SORT_FACES.public void scaleDistance(double s)
ScalableUnitsscaleDistance in interface ScalableUnitsscaleDistance in class PointSpringBases - scaling factorpublic void scaleMass(double s)
ScalableUnitsscaleMass in interface ScalableUnitsscaleMass in class PointSpringBases - scaling factorpublic Vector3d getDir()
public double getLength()
getLength in class PointSpringBasepublic double getLengthDot()
getLengthDot in class PointSpringBasepublic void computeForcePositionJacobian(Matrix3d M)
M - matrix in which to return the resultpublic void computeForceVelocityJacobian(Matrix3d M)
M - matrix in which to return the resultpublic void addSolveBlocks(SparseNumberedBlockMatrix M)
ForceEffectorgetSolveIndex) for all dynamic or attached components affected by this
 force effector.addSolveBlocks in interface ForceEffectorM - solve matrix to which blocks should be addedpublic void addPosJacobian(SparseNumberedBlockMatrix M, double s)
ForceEffector
 M is guaranteed to be the same matrix supplied in the most recent call to
 addSolveBlocks, and so implementations may choose
 to cache the relevant matrix blocks from that call, instead of retrieving
 them directly from M.
addPosJacobian in interface ForceEffectorM - solve matrix to which scaled position Jacobian is to be addeds - scaling factor for position Jacobianpublic void addVelJacobian(SparseNumberedBlockMatrix M, double s)
ForceEffector
 M is guaranteed to be the same matrix supplied in the most recent call to
 addSolveBlocks, and so implementations may choose
 to cache the relevant matrix blocks from that call, instead of retrieving
 them directly from M.
addVelJacobian in interface ForceEffectorM - solve matrix to which scaled velocity Jacobian is to be addeds - scaling factor for velocity Jacobianpublic int getJacobianType()
ForceEffectorMatrix.SYMMETRIC or Matrix.POSITIVE_DEFINITE. The former should be set if adding the Jacobian
 terms preserves symmetry, and the latter should be set if positive
 definiteness if preserved. Both should be set if there is no Jacobian for
 this effector (i.e., the Jacobian methods are not implemented). Matrix
 types from all the force effectors are logically and-ed together to
 determine the type for the entire solve matrix.getJacobianType in interface ForceEffectorpublic 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 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 PointSpringBaseflags - flags to control the copyingcopyMap - map to possible existing instances of referenced
 componentspublic void getHardReferences(java.util.List<ModelComponent> refs)
ModelComponentBasegetHardReferences in interface ModelComponentgetHardReferences in class ModelComponentBaserefs - list to which hard references are appended