#include #include #if defined(__BORLANDC__) || defined(_MSC_VER) #define EXPORT __declspec (dllexport) #else #define EXPORT extern #endif #ifdef __cplusplus extern "C" { #endif void *implicitInit(int frame,float *bmin,float *bmax); float implicitEval(float *dF,void *data,const float *point,float rayTime); void implicitEvalNormal(float *dF,void *data,const float *point,float rayTime); void implicitTini(void *data); EXTERN void *implicitInit(int frame,float *bmin,float *bmax){ bmin[0] = -5.5; bmin[1] = -5.5; bmin[2] = -5.5; bmax[0] = 5.5; bmax[1] = 5.5; bmax[2] = 5.5; return malloc(sizeof(int)); } EXTERN float implicitEval(float *dF,void *data,const float *point,float rayTime){ float d = sqrt(point[0]*point[0] + point[1]*point[1] + point[2]*point[2])-5; dF[0] = point[0] / d; dF[1] = point[1] / d; dF[2] = point[2] / d; return d; } /* -- Note: You don't have to provide this one -- */ /* EXTERN void implicitEvalNormal(float *dF,void *data,const float *point,float rayTime){ float d = sqrt(point[0]*point[0] + point[1]*point[1] + point[2]*point[2])-5; dF[0] = point[0] / d; dF[1] = point[1] / d; dF[2] = point[2] / d; } */ EXTERN void implicitTini(void *data){ free(data); } #ifdef __cplusplus }; #endif