1 #ifndef SimTK_BICUBIC_SURFACE_H_
2 #define SimTK_BICUBIC_SURFACE_H_
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;
299 const Vec2& XY, PatchHint& hint)
const;
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);
592 virtual int getMaxDerivativeOrder()
const
605 #endif // SimTK_BICUBIC_SURFACE_H_