1 #ifndef SimTK_BICUBIC_SURFACE_H_
2 #define SimTK_BICUBIC_SURFACE_H_
232 const Matrix& f, Real smoothness=0);
247 Real calcValue(
const Vec2& XY, PatchHint& hint)
const;
252 Real calcValue(
const Vec2& XY)
const;
266 UnitVec3 calcUnitNormal(
const Vec2& XY, PatchHint& hint)
const;
298 Real calcDerivative(
const Array_<int>& derivComponents,
299 const Vec2& XY, PatchHint& hint)
const;
304 Real calcDerivative(
const Array_<int>& derivComponents,
305 const Vec2& XY)
const;
318 bool isSurfaceDefined(
const Vec2& XY)
const;
322 Vec2 getMinXY()
const;
325 Vec2 getMaxXY()
const;
347 int getNumAccesses()
const;
353 int getNumAccessesSamePoint()
const;
359 int getNumAccessesSamePatch()
const;
366 int getNumAccessesNearbyPatch()
const;
371 void resetStatistics()
const;
423 void calcParaboloid(
const Vec2& XY, PatchHint& hint,
433 void getNumPatches(
int& nx,
int& ny)
const;
467 const BicubicSurface::Guts& getGuts()
const
468 { assert(guts);
return *guts; }
471 BicubicSurface::Guts* guts;
499 bool isEmpty()
const;
506 const Guts& getGuts()
const {
return *guts;}
507 Guts& updGuts() {
return *guts;}
551 "The argument Vector XY must have exactly 2 elements but had %d.",
553 return surface.calcValue(
Vec2(XY[0],XY[1]), hint);
578 "The argument Vector XY must have exactly 2 elements but had %d.",
580 return surface.calcDerivative(derivComponents,
Vec2(XY[0],XY[1]), hint);
605 #endif // SimTK_BICUBIC_SURFACE_H_
This class will create a smooth surface that approximates a two-argument function F(X...
Definition: BicubicSurface.h:158
BicubicFunction(const BicubicSurface &surface)
Create a BicubicFunction referencing the given BicubicSurface, which is shared not copied...
Definition: BicubicSurface.h:536
bool isEmpty() const
Return true if this is an empty handle meaning that it does not currently refer to any surface...
Definition: BicubicSurface.h:455
BicubicSurface()
Construct an uninitialized BicubicSurface handle.
Definition: BicubicSurface.h:164
Provides primitive operations for a single bicubic Bezier patch using either single or double precisi...
int size() const
Definition: BigMatrix.h:1411
#define SimTK_ERRCHK1(cond, whereChecked, fmt, a1)
Definition: ExceptionMacros.h:326
const BicubicSurface & getBicubicSurface() const
Return a reference to the BicubicSurface object being used by this BicubicFunction.
Definition: BicubicSurface.h:540
Vec< 2 > Vec2
Definition: SmallMatrix.h:103
virtual int getArgumentSize() const
This implements the Function base class pure virtual; here it always returns 2 (X and Y)...
Definition: BicubicSurface.h:585
virtual Real calcDerivative(const Array_< int > &derivComponents, const Vector &XY) const
Calculate a partial derivative of this function at a particular point.
Definition: BicubicSurface.h:575
Includes internal headers providing declarations for the basic SimTK Core classes, including Simmatrix.
ELEM max(const VectorBase< ELEM > &v)
Definition: VectorMath.h:251
Defines geometric primitive shapes and algorthms.
This is the Matrix class intended to appear in user code.
Definition: BigMatrix.h:181
virtual int getMaxDerivativeOrder() const
This implements the Function base class pure virtual specifying how many derivatives can be taken of ...
Definition: BicubicSurface.h:592
This is a two-argument Function built using a shared BicubicSurface and managing current state to opt...
Definition: BicubicSurface.h:532
This abstract class represents a mathematical function that calculates a value of arbitrary type base...
Definition: Function.h:51
This class provides a description of a mesh made of polygonal faces (not limited to triangles)...
Definition: PolygonalMesh.h:71
This is the header file that every Simmath compilation unit should include first. ...
Provides primitive operations for a single bicubic Hermite patch using either single or double precis...
A primitive useful for computations involving a single bicubic Hermite patch.
Definition: Geo.h:66
virtual Real calcValue(const Vector &XY) const
Calculate the value of the function at a particular XY coordinate.
Definition: BicubicSurface.h:549
A primitive useful for computations involving a single bicubic Bezier patch.
Definition: Geo.h:68
#define SimTK_SIMMATH_EXPORT
Definition: SimTKmath/include/simmath/internal/common.h:64
This object is used to hold precalculated data about the most recently accessed patch to accelerate t...
Definition: BicubicSurface.h:482