Simbody
3.6

This is a twoargument Function built using a shared BicubicSurface and managing current state to optimize for localized access. More...
Public Member Functions  
BicubicFunction (const BicubicSurface &surface)  
Create a BicubicFunction referencing the given BicubicSurface, which is shared not copied. More...  
const BicubicSurface &  getBicubicSurface () const 
Return a reference to the BicubicSurface object being used by this BicubicFunction. More...  
Real  calcValue (const Vector &XY) const override 
Calculate the value of the function at a particular XY coordinate. More...  
Real  calcDerivative (const Array_< int > &derivComponents, const Vector &XY) const override 
Calculate a partial derivative of this function at a particular point. More...  
int  getArgumentSize () const override 
This implements the Function base class pure virtual; here it always returns 2 (X and Y). More...  
int  getMaxDerivativeOrder () const override 
This implements the Function base class pure virtual specifying how many derivatives can be taken of this function; here it is unlimited. More...  
BicubicFunction *  clone () const override 
Create a new heapallocated copy of this concrete Function. More...  
Real  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_< Real >  
virtual  ~Function_ () 
Real  calcDerivative (const std::vector< int > &derivComponents, const Vector &x) const 
This provides compatibility with std::vector without requiring any copying. More...  
This is a twoargument Function built using a shared BicubicSurface and managing current state to optimize for localized access.
Each distinct use of the BicubicSurface should create its own BicubicFunction, which is a lightweight wrapper around the BicubicSurface. This allows for localized access pattern optimization to be effective for each use of the surface.
BicubicFunction is not threadsafe, but the underlying BicubicSurface is. Each thread should thus have a private BicubicFunction that it uses to access the shared surface.

inline 
Create a BicubicFunction referencing the given BicubicSurface, which is shared not copied.

inline 
Return a reference to the BicubicSurface object being used by this BicubicFunction.
Calculate the value of the function at a particular XY coordinate.
Note that XY must be a vector with only 2 elements in it (because this is a 2argument function), anything else will throw an exception. This is the required implementation of the Function base class pure virtual.
[in]  XY  the 2Vector of input arguments X and Y. 
Implements SimTK::Function_< Real >.

inlineoverridevirtual 
Calculate a partial derivative of this function at a particular point.
Which derivative to take is specified by listing the input components (0==x, 1==y) with which to take it. For example, if derivComponents=={0}, that indicates a first derivative with respective to argument x. If derivComponents=={0, 0, 0}, that indicates a third derivative with respective to argument x. If derivComponents=={0, 1}, that indicates a partial second derivative with respect to x and y, that is Df(x,y)/DxDy. (We use capital D to indicate partial derivative.)
[in]  derivComponents  The input components with respect to which the derivative should be taken. Each entry must be 0 or 1, and if there are 4 or more entries the result will be zero since the surface has only 3 nonzero derivatives. 
[in]  XY  The vector of two input arguments that define the XY location on the surface. 
Implements SimTK::Function_< Real >.

inlineoverridevirtual 
This implements the Function base class pure virtual; here it always returns 2 (X and Y).
Implements SimTK::Function_< Real >.

inlineoverridevirtual 
This implements the Function base class pure virtual specifying how many derivatives can be taken of this function; here it is unlimited.
However, note that a bicubic surface is continuous up to the second derivative, discontinuous at the third, and zero for any derivatives equal to or higher than the fourth.
Implements SimTK::Function_< Real >.

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_< Real >.

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