Simbody
3.7

This is a Function_ subclass whose output value y=f(x) is smoothly stepped from y=y0 to y1 as its input argument goes from x=x0 to x1. More...
Public Member Functions  
Step (const T &y0, const T &y1, Real x0, Real x1)  
Create a Function_::Step object that smoothly interpolates its output through a given range as its input moves through its range. More...  
void  setParameters (const T &y0, const T &y1, Real x0, Real x1) 
Change the four parameters that define the step function; see constructor for documentation. More...  
T  calcValue (const Vector &xin) const override 
Calculate the value of this function at a particular point. More...  
T  calcDerivative (const Array_< int > &derivComponents, const Vector &xin) const override 
Calculate a partial derivative of this function at a particular point. More...  
int  getArgumentSize () const override 
Get the number of components expected in the input vector. More...  
int  getMaxDerivativeOrder () const override 
Get the maximum derivative order this Function_ object can calculate. More...  
Step *  clone () const override 
Create a new heapallocated copy of this concrete Function. More...  
T  calcDerivative (const std::vector< int > &derivComponents, const Vector &x) const 
This provides compatibility with std::vector without requiring any copying. More...  
Public Member Functions inherited from SimTK::Function_< T >  
virtual  ~Function_ () 
T  calcDerivative (const std::vector< int > &derivComponents, const Vector &x) const 
This provides compatibility with std::vector without requiring any copying. More...  
This is a Function_ subclass whose output value y=f(x) is smoothly stepped from y=y0 to y1 as its input argument goes from x=x0 to x1.
This is an Sshaped function with first and second derivatives y'(x0)=y'(x1)=0 and y''(x0)=y''(x1)==0. The third derivative y''' exists and is continuous but we cannot guarantee anything about it at the end points.

inline 
Create a Function_::Step object that smoothly interpolates its output through a given range as its input moves through its range.
y0  Output value when (xx0)*sign(x1x0) <= 0. 
y1  Output value when (xx1)*sign(x1x0) >= 0. 
x0  Start of switching interval. 
x1  End of switching interval (must not equal x0). 
T  The template type is the type of y0 and y1. This must be a type that supports subtraction and scalar multiplication by a Real so that we can compute an expression like y=y0 + f*(y1y0) for some Real scalar f. 
Note that the numerical values of x0 and x1 can be in either order x0 < x1 or x0 > x1, but they cannot be equal.

inline 
Change the four parameters that define the step function; see constructor for documentation.

inlineoverridevirtual 
Calculate the value of this function at a particular point.
x  the Vector of input arguments. Its size must equal the value returned by getArgumentSize(). 
Implements SimTK::Function_< T >.

inlineoverridevirtual 
Calculate a partial derivative of this function at a particular point.
Which derivative to take is specified by listing the input components with which to take it. For example, if derivComponents=={0}, that indicates a first derivative with respective to component 0. If derivComponents=={0, 0, 0}, that indicates a third derivative with respective to component 0. If derivComponents=={4, 7}, that indicates a partial second derivative with respect to components 4 and 7.
derivComponents  The input components with respect to which the derivative should be taken. Its size must be less than or equal to the value returned by getMaxDerivativeOrder(). 
x  The Vector of input arguments. Its size must equal the value returned by getArgumentSize(). 
Implements SimTK::Function_< T >.

inlineoverridevirtual 
Get the number of components expected in the input vector.
Implements SimTK::Function_< T >.

inlineoverridevirtual 
Get the maximum derivative order this Function_ object can calculate.
Implements SimTK::Function_< T >.

inlineoverridevirtual 
Create a new heapallocated copy of this concrete Function.
For backwards compatibility this is not pure virtual; it has a default implementation that throws an exception if called. However, it should always be implemented.
Reimplemented from SimTK::Function_< T >.

inline 
This provides compatibility with std::vector without requiring any copying.