71#ifndef  _SO_INTERPOLATE_ 
   72#define  _SO_INTERPOLATE_ 
  132    static int max(
int a, 
int b) { 
return (a > b) ? a : b; }
 
  133    static int clamp(
int i, 
int n) { 
return (i < n) ? i : n-1; }
 
 
  150#define SO_INTERPOLATE_HEADER(className)                                \ 
  152    SO_ENGINE_HEADER(className);                                        \ 
  156    virtual void        evaluate();                                     \ 
  159    static void         initClass();                                    \ 
 
  172#define SO_INTERPOLATE_SOURCE(className, type,                          \ 
  173                        valType, defaultVal0, defaultVal1, interpVal)   \ 
  175SO_ENGINE_SOURCE(className);                                            \ 
  177className::className()                                                  \ 
  179    SO_ENGINE_CONSTRUCTOR(className);                                   \ 
  180    SO_ENGINE_ADD_INPUT(alpha, (0.0));                                  \ 
  181    SO_ENGINE_ADD_INPUT(input0, defaultVal0);                           \ 
  182    SO_ENGINE_ADD_INPUT(input1, defaultVal1);                           \ 
  183    SO_ENGINE_ADD_OUTPUT(output, type);                                 \ 
  187className::~className()                                                 \ 
  192className::evaluate()                                                   \ 
  194    int n0 = input0.getNum();                                           \ 
  195    int n1 = input1.getNum();                                           \ 
  196    float a = alpha.getValue();                                         \ 
  197    for (int i=max(n0,n1)-1; i>=0; i--) {                               \ 
  198        valType v0 = input0[clamp(i,n0)];                               \ 
  199        valType v1 = input1[clamp(i,n1)];                               \ 
  200        SO_ENGINE_OUTPUT(output, type, set1Value(i, interpVal));        \ 
  213#define SO_INTERPOLATE_INITCLASS(className, classPrintName)             \ 
  216className::initClass()                                                  \ 
  218    SO__ENGINE_INIT_CLASS(className, classPrintName, SoInterpolate);    \ 
 
#define INVENTOR_API
Disable some annoying warnings on MSVC 6.
 
#define SO_INTERPOLATE_HEADER(className)
These macros can be used to easily define interpolater engine headers and source.
 
#define SO_ENGINE_ABSTRACT_HEADER(className)
Macros to be called within the class definition header:
 
SoEngine()
Constructor, destructor.
 
friend class SoEngineOutput
 
Interpolaters for the builtin field types.
 
SoMFFloat input1
The engine linearly interpolates from input0 to input1 .
 
SoMFFloat input0
The engine linearly interpolates from input0 to input1 .
 
Interpolates rotation values.
 
SoMFRotation input1
The engine linearly interpolates from input0 to input1 .
 
SoMFRotation input0
The engine linearly interpolates from input0 to input1 .
 
Interpolates 2D floating-point vectors.
 
SoMFVec2f input1
The engine linearly interpolates from input0 to input1 .
 
SoMFVec2f input0
The engine linearly interpolates from input0 to input1 .
 
Interpolates 3D floating-point vectors.
 
SoMFVec3f input0
The engine linearly interpolates from input0 to input1 .
 
SoMFVec3f input1
The engine linearly interpolates from input0 to input1 .
 
Interpolates 4D floating-point vectors.
 
SoMFVec4f input0
The engine linearly interpolates from input0 to input1 .
 
SoMFVec4f input1
The engine linearly interpolates from input0 to input1 .
 
SoEngineOutput output
Interpolated value.
 
static int clamp(int i, int n)
 
static int max(int a, int b)
 
static void initClasses()
init all builtin derived classes
 
SoSFFloat alpha
Interpolation control value.
 
Multiple-value field containing any number of floating point values.
 
Multiple-value field containing any number of SbRotations.
 
Multiple-value field containing any number of two-dimensional vectors.
 
Multiple-value field containing any number of three-dimensional vectors.
 
Multiple-value field containing any number of four-dimensional vectors.
 
Field containing a floating-point value.