Main Page | Namespace List | Class Hierarchy | Alphabetical List | Class List | File List | Class Members | File Members | Related Pages

ASubtraction.h

Go to the documentation of this file.
00001 /**
00002  * @file ASubtraction.h
00003  * Surface Modeling Library
00004  * CS 497
00005  *
00006  * @author William Nagel
00007  */
00008 
00009 #ifndef ASUBTRACTION_H
00010 #define ASUBTRACTION_H
00011 
00012 #include "RFunction.h"
00013 #include "Intersection.h"
00014 #include "Complement.h"  
00015 
00016 class ASubtraction : public RFunction
00017 {
00018   private:
00019     Intersection *m_f;
00020     Complement *m_comp_g;
00021   public:
00022 
00023     /// Constructor
00024     ASubtraction(Implicit *f, Implicit *g, int cont = 2)
00025     {
00026       m_comp_g = new Complement(g);
00027       m_f = new Intersection(f, m_comp_g, cont);
00028     }
00029 
00030     /// Destructor
00031     ~ASubtraction()
00032     {
00033       delete m_comp_g;
00034       delete m_f;
00035     }
00036 
00037     virtual double h(double f, double g);
00038     virtual double hf(double f, double g);
00039     virtual double hg(double f, double g);
00040     virtual double hff(double f, double g);
00041     virtual double hgg(double f, double g);
00042     virtual double hfg(double f, double g);
00043 
00044     virtual Intervald h(Intervald f, Intervald g);
00045     virtual Intervald hf(Intervald f, Intervald g);
00046     virtual Intervald hg(Intervald f, Intervald g);
00047     virtual Intervald hff(Intervald f, Intervald g);
00048     virtual Intervald hfg(Intervald f, Intervald g);
00049     virtual Intervald hgg(Intervald f, Intervald g);
00050 
00051     // These don't look right.  Probably unnecessary.
00052     // Need to verify! - TGF 2/10/03
00053 /*
00054 #ifndef INTERVAL_EVAL_ONLY
00055     virtual double proc(gmVector3 x) 
00056       {return (m_f ? m_f->proc(x) : 0);}
00057     virtual gmVector3 grad(gmVector3 x) 
00058       {return (m_f ? m_f->grad(x) : gmVector3());}
00059     virtual gmMatrix3 hess(gmVector3 x) 
00060       {return (m_f ? m_f->hess(x) : gmMatrix3());}
00061 #endif
00062 
00063     virtual Intervald proc(Box<double> x);
00064     virtual Box3d grad(Box<double> x);
00065     virtual IMatrix3d hess(Box<double> x);
00066 */
00067 };
00068 
00069 #endif
00070 

Generated on Mon Jun 28 14:58:12 2004 for Advanced Surface Library by doxygen 1.3.4