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

verification.cpp

Go to the documentation of this file.
00001 #include <set>
00002 #include "verification.hpp"
00003 #include "coloring.hpp"
00004 #include "grid.hpp"
00005 
00006 using namespace Arak;
00007 
00008 void CriticalStatsEstimator::update(const Coloring& c) {
00009   n++;
00010   sumIntVertices += c.numVertices(Coloring::Vertex::INTERIOR);
00011   sumIntEdges += c.numInteriorEdges();
00012   for (int i = 0; i < 4; i++) {
00013     Coloring::VertexHandle vh = c.getVertex(Coloring::Vertex::CORNER, i);
00014     vh = vh->getNextBdEdge()->getNextVertex();
00015     while (vh->type() != Coloring::Vertex::CORNER) {
00016       sumBdVertices[i]++;
00017       vh = vh->getNextBdEdge()->getNextVertex();
00018     }
00019   }
00020   typedef const Coloring::InteriorEdgeIndex Index;
00021   typedef Index::ConstLineCellIterator Iterator; 
00022   typedef const Index::Cell Cell;
00023   typedef Cell::ItemList::const_iterator EdgeIterator;
00024   Index& index = c.getInteriorEdgeIndex();
00025   std::set<Coloring::IntEdgeHandle> counted;
00026   for (unsigned int i = 0; i < testSegments.size(); i++) {
00027     const Geometry::Segment& s = testSegments[i];
00028     counted.clear();
00029     Iterator it(index, s.source(), s.target(), Iterator::SEGMENT()), end;
00030     while (it != end) {
00031       Cell& cell = *it;
00032       const Cell::ItemList& edges = cell.getItemList();
00033       for (EdgeIterator jt = edges.begin(); jt != edges.end(); jt++) {
00034   const Coloring::IntEdgeHandle e = *jt;
00035   if ((counted.find(e) == counted.end()) && 
00036       e->crosses(s.source(), s.target()))
00037     counted.insert(e);
00038       }
00039       ++it;
00040     }
00041     sumCrossings[i] += counted.size();
00042   }
00043 }
00044 
00045 

Generated on Wed May 25 14:39:19 2005 for Arak by doxygen 1.3.6