From 5487601ae10f9ae26a85c87e75e59eca25d0b0eb Mon Sep 17 00:00:00 2001 From: Nico Kruithof Date: Fri, 25 Jan 2013 17:18:44 +0100 Subject: [PATCH] Implemented the empty circumcircle button --- .../TriangulationCircumcircle.h | 32 ++++++++----------- .../TriangulationRemoveVertex.h | 1 - 2 files changed, 14 insertions(+), 19 deletions(-) diff --git a/GraphicsView/demo/Periodic_2_triangulation_2/TriangulationCircumcircle.h b/GraphicsView/demo/Periodic_2_triangulation_2/TriangulationCircumcircle.h index 29afb57ea14..95c99b251e3 100644 --- a/GraphicsView/demo/Periodic_2_triangulation_2/TriangulationCircumcircle.h +++ b/GraphicsView/demo/Periodic_2_triangulation_2/TriangulationCircumcircle.h @@ -33,7 +33,6 @@ protected: private: DT * dt; - typename DT::Vertex_handle hint; typename DT::Face_handle fh; QGraphicsScene *scene_; QGraphicsEllipseItem* circle; @@ -46,7 +45,6 @@ TriangulationCircumcircle
::TriangulationCircumcircle(QGraphicsScene* s, QObject* parent) : GraphicsViewInput(parent), dt(dt_), scene_(s) { - hint = typename DT::Vertex_handle(); circle = new QGraphicsEllipseItem(); circle->hide(); scene_->addItem(circle); @@ -87,28 +85,26 @@ template void TriangulationCircumcircle
::mouseMoveEvent(QGraphicsSceneMouseEvent *event) { - if(dt->dimension() != 2){ - circle->hide(); - return; - } + // std::cout << __PRETTY_FUNCTION__ << std::endl; + if(dt->dimension() != 2){ + circle->hide(); + return; + } typename DT::Point p = typename DT::Point(event->scenePos().x(), event->scenePos().y()); double dx = dt->domain().xmax() - dt->domain().xmin(); double dy = dt->domain().ymax() - dt->domain().ymin(); p = typename DT::Point(p.x()- std::floor(p.x()/dx), p.y()- std::floor(p.y()/dy)); - fh = dt->locate(p, hint->face()); - hint = fh->vertex(0); - if(!dt->is_infinite(fh)){ - typename DT::Geom_traits::Circle_2 c(fh->vertex(0)->point(), - fh->vertex(1)->point(), - fh->vertex(2)->point()); - CGAL::Bbox_2 bb = c.bbox(); - circle->setRect(bb.xmin(), bb.ymin(), bb.xmax()-bb.xmin(), bb.ymax()-bb.ymin()); - circle->show(); - } else { - circle->hide(); - } + fh = dt->locate(p); + + typename DT::Triangle triangle = dt->triangle(dt->periodic_triangle(fh)); + typename DT::Geom_traits::Circle_2 c(triangle[0], + triangle[1], + triangle[2]); + CGAL::Bbox_2 bb = c.bbox(); + circle->setRect(bb.xmin(), bb.ymin(), bb.xmax()-bb.xmin(), bb.ymax()-bb.ymin()); + circle->show(); } diff --git a/GraphicsView/demo/Periodic_2_triangulation_2/TriangulationRemoveVertex.h b/GraphicsView/demo/Periodic_2_triangulation_2/TriangulationRemoveVertex.h index fe3f80f7c19..cbc11cc3074 100644 --- a/GraphicsView/demo/Periodic_2_triangulation_2/TriangulationRemoveVertex.h +++ b/GraphicsView/demo/Periodic_2_triangulation_2/TriangulationRemoveVertex.h @@ -1,4 +1,3 @@ - #ifndef CGAL_QT_TRIANGULATION_REMOVE_VERTEX_H #define CGAL_QT_TRIANGULATION_REMOVE_VERTEX_H