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

ASubtraction.cpp

Go to the documentation of this file.
00001 /**
00002  * @file ASubtraction.cpp
00003  * Surface Modeling Library
00004  * CS497
00005  *
00006  * @author William Nagel
00007  */
00008 
00009 #include "ASubtraction.h"
00010 
00011 double ASubtraction::h(double f, double g)
00012 {
00013   if ((f <= m_r1) && (g <= m_r2))
00014     return (((f - m_r1) * (f - m_r1)) / (m_r1 * m_r1)) +
00015            (((g - m_r2) * (g - m_r2)) / (m_r2 * m_r2)) - 1;
00016   else 
00017     return 0.0;
00018 }
00019 
00020 Intervald ASubtraction::h(Intervald f, Intervald g)
00021 {
00022   if ((f <= m_r1) && (g <= m_r2))
00023     {
00024       Intervald r1(m_r1);
00025       Intervald r2(m_r2);
00026       return ((f - r1).squared() / r1.squared()) +
00027              ((g - r2).squared() / r2.squared()) - 
00028              Intervald(1.0);
00029     }
00030   else
00031     return Intervald(0.0);
00032 }
00033 
00034 double ASubtraction::hf(double f, double g)
00035 {
00036   if ((f <= m_r1) && (g <= m_r2))
00037     return ((2.0 * f - 2.0 * m_r1) / (m_r1 * m_r1));
00038   else
00039     return 0.0;
00040 }
00041 
00042 Intervald ASubtraction::hf(Intervald f, Intervald g)
00043 {
00044   if((f <= m_r1) && (g <= m_r2))
00045     {
00046       Intervald r1(m_r1);
00047       Intervald two(2.0);
00048       return ((two * f) - (two * r1)) / r1.squared();
00049     }
00050   else
00051     return Intervald(0.0);
00052 }
00053 
00054 double ASubtraction::hg(double f, double g)
00055 {
00056   if ((f <= m_r1) && (g <= m_r2))
00057     return ((2.0 * g - 2.0 * m_r2) / (m_r2 * m_r2));
00058   else
00059     return 0.0;
00060 }
00061 
00062 Intervald ASubtraction::hg(Intervald f, Intervald g)
00063 {
00064   if ((f <= m_r1) && (g <= m_r2))
00065     {
00066       Intervald r2(m_r2);
00067       Intervald two(2.0);
00068       return ((two * g) - (two * r2)) / r2.squared();
00069     }
00070   else
00071     return Intervald(0.0);
00072 }
00073 
00074 double ASubtraction::hff(double f, double g)
00075 {
00076   if ((f <= m_r1) && (g <= m_r2))
00077     return (2.0 / (m_r1 * m_r1));
00078   else
00079     return 0.0;
00080 }
00081 
00082 Intervald ASubtraction::hff(Intervald f, Intervald g)
00083 {
00084   if ((f <= m_r1) && (g <= m_r2))
00085     {
00086       Intervald r1(m_r1);
00087       return Intervald(2.0) / r1.squared();
00088     }
00089   else
00090     return Intervald(0.0);
00091 }
00092 
00093 double ASubtraction::hgg(double f, double g)
00094 {
00095   if ((f <= m_r1) && (g <= m_r2))
00096     return (2.0 / (m_r2 * m_r2));
00097   else 
00098     return 0.0;
00099 }
00100 
00101 Intervald ASubtraction::hgg(Intervald f, Intervald g)
00102 {
00103   if ((f <= m_r1) && (g <= m_r2))
00104     {
00105       Intervald r2(m_r2);
00106       return Intervald(2.0) / r2.squared();
00107     }
00108   else
00109     return 0.0;
00110 }
00111 
00112 double ASubtraction::hfg(double f, double g)
00113 {
00114   return 0.0;
00115 }
00116 
00117 Intervald ASubtraction::hfg(Intervald f, Intervald g)
00118 {
00119   return Intervald(0.0);
00120 }
00121 

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