From f26692677fa97008d2c1e59e4ac2decd045bd9eb Mon Sep 17 00:00:00 2001 From: Nico Kruithof Date: Sun, 24 Mar 2013 09:19:52 +0100 Subject: [PATCH] Working on the demo, coloring the vertices of small triangulations --- .../Periodic_2_triangulation_2.cpp | 2 +- .../Qt/PeriodicTriangulationGraphicsItem.h | 38 ++++++++++++++----- .../CGAL/Qt/PeriodicVoronoiGraphicsItem.h | 16 -------- .../include/CGAL/Periodic_2_triangulation_2.h | 34 +++++------------ 4 files changed, 39 insertions(+), 51 deletions(-) diff --git a/GraphicsView/demo/Periodic_2_triangulation_2/Periodic_2_triangulation_2.cpp b/GraphicsView/demo/Periodic_2_triangulation_2/Periodic_2_triangulation_2.cpp index 0a23af3a9e9..ce58403ad9d 100644 --- a/GraphicsView/demo/Periodic_2_triangulation_2/Periodic_2_triangulation_2.cpp +++ b/GraphicsView/demo/Periodic_2_triangulation_2/Periodic_2_triangulation_2.cpp @@ -110,7 +110,7 @@ MainWindow::MainWindow() QObject::connect(this, SIGNAL(changed()), pt_gi, SLOT(modelChanged())); - pt_gi->setVerticesPen(QPen(Qt::red, 3, Qt::SolidLine, Qt::RoundCap, Qt::RoundJoin)); + pt_gi->setVerticesPen(QPen(Qt::red, 5, Qt::SolidLine, Qt::RoundCap, Qt::RoundJoin)); scene.addItem(pt_gi); // Add a GraphicItem for the Voronoi diagram diff --git a/GraphicsView/demo/Periodic_2_triangulation_2/include/CGAL/Qt/PeriodicTriangulationGraphicsItem.h b/GraphicsView/demo/Periodic_2_triangulation_2/include/CGAL/Qt/PeriodicTriangulationGraphicsItem.h index 68c76d6b8a0..263119a5e38 100644 --- a/GraphicsView/demo/Periodic_2_triangulation_2/include/CGAL/Qt/PeriodicTriangulationGraphicsItem.h +++ b/GraphicsView/demo/Periodic_2_triangulation_2/include/CGAL/Qt/PeriodicTriangulationGraphicsItem.h @@ -175,10 +175,7 @@ namespace CGAL { if(visibleEdges()) { painter->setPen(this->edgesPen()); - for (typename T::Periodic_segment_iterator psit = t->periodic_segments_begin(); - psit != t->periodic_segments_end(); ++psit) { - painterostream << t->segment(*psit); - } + t->draw_triangulation(painterostream); } paintVertices(painter); @@ -191,15 +188,36 @@ namespace CGAL { if(visibleVertices()) { Converter convert; - painter->setPen(verticesPen()); QMatrix matrix = painter->matrix(); painter->resetMatrix(); - for (typename T::Periodic_point_iterator ppit = t->periodic_points_begin(); - ppit != t->periodic_points_end(); ++ppit) - { - QPointF point = matrix.map(convert(t->point(*ppit))); - painter->drawPoint(point); + + QPen pen = verticesPen(); + if (t->number_of_vertices() < 8) { + int v_index=1; + for (typename T::Unique_vertex_iterator vit = t->unique_vertices_begin(); + vit != t->unique_vertices_end(); ++vit) { + pen.setColor(QColor(255*(v_index&1), 255*((v_index>>1)&1), 255*((v_index>>2)&1))); + painter->setPen(pen); + + painter->drawPoint(matrix.map(convert(t->point(vit)))); + std::vector copies = t->periodic_copies(vit); + for (size_t i=0; idrawPoint(matrix.map(convert(t->point(copies[i])))); + + ++v_index; + } + + } else { + painter->setPen(verticesPen()); + for (typename T::Periodic_point_iterator ppit = t->periodic_points_begin(); + ppit != t->periodic_points_end(); ++ppit) + { + QPointF point = matrix.map(convert(t->point(*ppit))); + painter->drawPoint(point); + } } + + painter->setMatrix(matrix); } } diff --git a/GraphicsView/demo/Periodic_2_triangulation_2/include/CGAL/Qt/PeriodicVoronoiGraphicsItem.h b/GraphicsView/demo/Periodic_2_triangulation_2/include/CGAL/Qt/PeriodicVoronoiGraphicsItem.h index 0e8c98dde09..d89b8baaad0 100644 --- a/GraphicsView/demo/Periodic_2_triangulation_2/include/CGAL/Qt/PeriodicVoronoiGraphicsItem.h +++ b/GraphicsView/demo/Periodic_2_triangulation_2/include/CGAL/Qt/PeriodicVoronoiGraphicsItem.h @@ -100,22 +100,6 @@ PeriodicTriangulationVoronoiGraphicsItem
::paint(QPainter *painter, const QSt painter->setPen(edgesPen()); dt->draw_dual(pos); - // TODO(NGHK): Not yet implement - // for(typename DT::Finite_edges_iterator eit = dt->finite_edges_begin(); - // eit != dt->finite_edges_end(); - // eit++){ - // CGAL::Object o = dt->dual(eit); - // typename DT::Segment s; - // typename DT::Geom_traits::Ray_2 r; - // typename DT::Geom_traits::Line_2 l; - // if(CGAL::assign(s,o)){ - // pos << s; - // } else if(CGAL::assign(r,o)) { - // pos << r; - // }else if(CGAL::assign(l,o)) { - // pos << l; - // } - // } } diff --git a/Periodic_2_triangulation_2/include/CGAL/Periodic_2_triangulation_2.h b/Periodic_2_triangulation_2/include/CGAL/Periodic_2_triangulation_2.h index e3b30ae4fa1..3309de989f8 100644 --- a/Periodic_2_triangulation_2/include/CGAL/Periodic_2_triangulation_2.h +++ b/Periodic_2_triangulation_2/include/CGAL/Periodic_2_triangulation_2.h @@ -1096,6 +1096,16 @@ public: CGAL_triangulation_assertion(_virtual_vertices_reverse.find(v) != _virtual_vertices_reverse.end()); return _virtual_vertices_reverse.find(v)->second; } + + /// NGHK: Not yet implemented + template + Stream& draw_triangulation(Stream& os) const { + Edge_iterator it = edges_begin(); + for (; it != edges_end(); ++it) { + os << segment(it); + } + return os; + } protected: /// NGHK: implemented std::vector insert_dummy_points(); @@ -1230,20 +1240,8 @@ protected: // template members - /// NGHK: Not yet implemented - template - Stream& draw_triangulation(Stream& os) const { - NGHK_NYI; - Edge_iterator it = edges_begin(); - for (; it != edges_end(); ++it) { - os << segment(it); - } - return os; - } - /// NGHK: Not yet implemented bool well_oriented(Vertex_handle v) const { - NGHK_NYI; typedef typename Geom_traits::Orientation_2 Orientation_2; Face_circulator fc = incident_faces(v), done(fc); do { @@ -1265,18 +1263,6 @@ protected: return true; } - /// NGHK: Not yet implemented - bool from_convex_hull(Vertex_handle v) { - NGHK_NYI; - CGAL_triangulation_precondition(!is_infinite(v)); - Vertex_circulator vc = adjacent_vertices(v), done(vc); - do { - if (is_infinite(vc)) - return true; - } while (++vc != done); - return false; - } - /// NGHK: Not yet implemented template Vertex_handle star_hole(const Point& p, EdgeIt edge_begin, EdgeIt edge_end) {