00001 /** 00002 * @file Blinn.h 00003 */ 00004 00005 #ifndef __BLINN_H 00006 #define __BLINN_H 00007 00008 #include "Blob.h" 00009 #include "Implicit/Algebraic/Quadric.h" 00010 00011 /** 00012 * Class Blinn -- Blob (Gaussian) with 00013 * an arbitrary quadric radius function 00014 */ 00015 class Blinn : public Blob 00016 { 00017 protected: 00018 double m_b; 00019 00020 private: 00021 void init(Quadric *f, double b, double r); 00022 00023 public: 00024 /// Class Constructors 00025 Blinn(); 00026 Blinn(Quadric *f); 00027 Blinn(Quadric *f, double b); 00028 Blinn(Quadric *f, double b, double r); 00029 00030 /// Kernel functions 00031 virtual double kernel(double r2); 00032 virtual double dkernel(double r2); 00033 virtual double d2kernel(double r2); 00034 00035 /// Interval versions of Kernel functions 00036 virtual Intervald kernel(Intervald r2); 00037 virtual Intervald dkernel(Intervald r2); 00038 virtual Intervald d2kernel(Intervald r2); 00039 00040 /// Accessor functions 00041 virtual int qlen(void); 00042 virtual void _setq(double *q); 00043 virtual void getq(double *q); 00044 virtual void getqname(char **qn); 00045 00046 virtual void procq(gmVector3 v, double* dfdq); 00047 00048 MAKE_NAME(); 00049 }; 00050 00051 #endif 00052
1.3.4