proj home

Files   Classes   Functions   Hierarchy  

d3minrecursive.cpp

Go to the documentation of this file.
00001 
00002 #include <simplexD2linked.h>
00003 #include <d3tess.h>
00004 
00005 #include <d3minrecursive.h>
00006 
00007 d3minrecursive::d3minrecursive(d3tess & _tess, d3minoperator * _minimizer)
00008   : tess(_tess), minimizer(_minimizer)
00009 {
00010 }
00011 
00012 
00013 d3minrecursive::~d3minrecursive()
00014 {
00015   delete minimizer;
00016   minimizer=0;
00017 }
00018 
00019 bool const d3minrecursive::minimizesimplex(uintc a)
00020 {
00021   simplexD2linked & A(tess.vi[a]);
00022 
00023   bool res;
00024 
00025   uint nb;
00026   for (uint i=0; i<3; ++i)
00027   {
00028     nb = A.ni[i]; 
00029     res = minimizer->eval(a,nb);
00030     if (res)
00031     {
00032       process.push_back(nb);
00033       process.push_back(a);
00034       return true;
00035     }
00036   }
00037 
00038   return false;
00039 }
00040 
00041 
00042 bool const d3minrecursive::eval(uintc a)
00043 {
00044   assert(a!=0);
00045   assert(a<tess.vi.size());
00046 
00047   process.clear();
00048 
00049   bool res = minimizesimplex(a);
00050 
00051   uint sz=process.size();
00052   if (sz==0)
00053     return res;
00054 
00055   for (uint b; sz!=0; )
00056   {
00057     b = process[sz-1];
00058     process.pop_back();
00059 
00060     minimizesimplex(b);
00061 
00062     sz = process.size();
00063   }
00064 
00065   return true;
00066 }
00067 
00068 d3minrecursiveoperator::d3minrecursiveoperator
00069 (
00070   d3tess & _tess, 
00071   d3minoperator * _minimizer
00072 )
00073   : d3minoperator(_tess), x(_tess,_minimizer)
00074 {
00075 }
00076   
00077 bool const d3minrecursiveoperator::eval(uintc a, uintc b)
00078 {
00079 //cout << "d3minrecursiveoperator::eval:  " << a << " " << b << endl;
00080   bool res(false);
00081 
00082   if (x.eval(a))
00083     res=true;
00084 
00085   if (x.eval(b))
00086     res=true;
00087   
00088   return res;
00089 }
00090 
00091 d3minrecursiveoperator::~d3minrecursiveoperator()
00092 {
00093 }
00094 
00095 
00096 
00097 

Generated on Fri Mar 4 00:49:26 2011 for Chelton Evans Source by  doxygen 1.5.8