📄 regular_triangulation_degeneracy_testers.h
字号:
// Copyright (c) 2006 Foundation for Research and Technology-Hellas (Greece).// All rights reserved.//// This file is part of CGAL (www.cgal.org); you may redistribute it under// the terms of the Q Public License version 1.0.// See the file LICENSE.QPL distributed with CGAL.//// Licensees holding a valid commercial license may use this file in// accordance with the commercial license agreement provided with the software.//// This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE// WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.//// $URL: svn+ssh://scm.gforge.inria.fr/svn/cgal/branches/CGAL-3.3-branch/Voronoi_diagram_2/include/CGAL/Voronoi_diagram_2/Regular_triangulation_degeneracy_testers.h $// $Id: Regular_triangulation_degeneracy_testers.h 29163 2006-03-07 23:41:02Z mkaravel $// //// Author(s) : Menelaos Karavelas <mkaravel@iacm.forth.gr>#ifndef CGAL_VORONOI_DIAGRAM_2_REGULAR_TRIANGULATION_DEGENERACY_TESTERS_H#define CGAL_VORONOI_DIAGRAM_2_REGULAR_TRIANGULATION_DEGENERACY_TESTERS_H 1#include <CGAL/Voronoi_diagram_2/basic.h>#include <CGAL/Voronoi_diagram_2/Adaptation_traits_base_2.h>CGAL_BEGIN_NAMESPACECGAL_VORONOI_DIAGRAM_2_BEGIN_NAMESPACE//=========================================================================//=========================================================================template<class DG>class Regular_triangulation_edge_tester_2 : public Rejector_base{ // tests whether a dual edge has zero length public: typedef DG Delaunay_graph; typedef typename DG::Edge Edge; typedef typename DG::Face_handle Face_handle; typedef typename DG::Edge_circulator Edge_circulator; typedef typename DG::All_edges_iterator All_edges_iterator; typedef typename DG::Finite_edges_iterator Finite_edges_iterator; typedef bool result_type; typedef Arity_tag<2> Arity; private: typedef typename Delaunay_graph::Geom_traits Geom_traits; typedef typename Delaunay_graph::Vertex_handle Vertex_handle; typedef typename Geom_traits::Weighted_point_2 Site_2; public: bool operator()(const Delaunay_graph& dual, const Face_handle& f, int i) const { if ( dual.dimension() == 1 ) { return false; } if ( dual.is_infinite(f, i) ) { return false; } Vertex_handle v3 = f->vertex( i ); Vertex_handle v4 = dual.tds().mirror_vertex(f, i); if ( dual.is_infinite(v3) || dual.is_infinite(v4) ) { return false; } Vertex_handle v1 = f->vertex( dual.ccw(i) ); Vertex_handle v2 = f->vertex( dual.cw(i) ); Site_2 s1 = v1->point(); Site_2 s2 = v2->point(); Site_2 s3 = v3->point(); Site_2 s4 = v4->point(); Oriented_side os = dual.geom_traits().power_test_2_object()(s1,s2,s3,s4); return os == ON_ORIENTED_BOUNDARY; } bool operator()(const Delaunay_graph& dual, const Edge& e) const { return operator()(dual, e.first, e.second); } bool operator()(const Delaunay_graph& dual, const All_edges_iterator& eit) const { return operator()(dual, *eit); } bool operator()(const Delaunay_graph& dual, const Finite_edges_iterator& eit) const { return operator()(dual, *eit); } bool operator()(const Delaunay_graph& dual, const Edge_circulator& ec) const { return operator()(dual, *ec); }};//=========================================================================//=========================================================================CGAL_VORONOI_DIAGRAM_2_END_NAMESPACECGAL_END_NAMESPACE#endif // CGAL_VORONOI_DIAGRAM_2_REGULAR_TRIANGULATION_DEGENERACY_TESTERS_H
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -