shape_doc 0.1
/Users/mourrain/Devel/mmx/shape/include/shape/semialgebraic_domain2d_axel.hpp
Go to the documentation of this file.
00001 
00002 
00003 #pragma once
00004 
00005 
00006 # include  <shape/graph.hpp>
00007 # include  <shape/viewer_axel.hpp>
00008 # include  <shape/cell2d.hpp>
00009 
00010 # define TMPL template<class T>
00011 # define AXEL viewer<axel,K>
00012 # define BoundingBox (*T)::BoundingBox
00013 
00014 //#define CHECK if ( ! v[i]->is_intersected() || v[i]->is_active()  ) continue
00015 //#define CHECK if ( ! v[i]->is_intersected() ) continue
00016 //#define CHECK if ( ! v[i]->is_active()  ) continue
00017 #define CHECK if (false) {}
00018 
00019 namespace mmx {
00020   
00021   namespace shape {
00022     
00023     // Function to be passed to the DFS procedure
00024     template<class T>
00025     void write_ok(gNode<T>* v)
00026     {
00027       std::cout<<"Ok"<<std::endl;
00028     }
00029   }//namespace shape
00030   
00031   
00032   namespace shape {
00033     
00034     template<class K, class T> AXEL&
00035     print_boxes(AXEL& out, Graph<T> g) {
00036       
00037       
00038       //Seq<T> vertices;
00039       double xmin,xmax,ymin,ymax;
00040       Seq<T> v;
00041       
00042       g.dfs(v);
00043         //g.dfs(& shape::write_ok);
00044         //g.vertex_list(v);
00045       
00046       unsigned n=0;
00047       
00048       
00049       for (unsigned i=0; i<v.size(); i++)
00050       {
00051         CHECK;
00052         n+=4;
00053       }
00054       
00055       out<<" <curve type=\"mesh\" color=\"255 255 0\" >\n<vect>\nVECT\n";
00056       out<<n   <<" "
00057          <<2*n <<" "
00058          <<n   <<"\n";
00059       
00060       for(unsigned i=0; i<n; i++) out<<"2 ";//
00061       out<<"\n";
00062       
00063       for(unsigned i=0; i<n; i++) out<<"1 ";//
00064       out<<"\n";
00065       
00066                         //print edges
00067       for (unsigned i=0; i<v.size(); i++)
00068       {
00069         CHECK;
00070         
00071         xmin= v[i]->boundingBox().xmin();
00072         xmax= v[i]->boundingBox().xmax();
00073         ymin= v[i]->boundingBox().ymin();
00074         ymax= v[i]->boundingBox().ymax();
00075         
00076         //std::cout <<xmin  <<" "<<xmax  <<" "<<ymin  <<" "<<ymax <<"\n";
00077         
00078         out <<xmin  <<" "<<ymin <<" 0 "
00079             <<xmax  <<" "<<ymin <<" 0 "         
00080             <<"\n";
00081         
00082           out <<xmax  <<" "<<ymin  <<" 0 "
00083               <<xmax  <<" "<<ymax  <<" 0 "              
00084               <<"\n";
00085           
00086           out <<xmax  <<" "<<ymax  <<" 0 "
00087               <<xmin  <<" "<<ymax  <<" 0 "              
00088               <<"\n";
00089           
00090           out <<xmin  <<" "<<ymax  <<" 0 "
00091               <<xmin  <<" "<<ymin  <<" 0 "              
00092               <<"\n";
00093       }
00094       
00095       
00096       for(unsigned i=0; i<n; i++) 
00097         out<< "0.314 0.979 1 1\n";
00098       
00099       out<<" </vect>\n </curve>\n";
00100       
00101       return out;
00102     }
00103     
00104   }
00105 }
00106 
00107 # undef TMPL
00108 # undef CHECK
00109 # undef BoundingBox
00110 # undef AXEL