From a30db9375ff4627229e3712d66a1eaf1bc80daec Mon Sep 17 00:00:00 2001 From: Claudia Werner Date: Wed, 16 Jan 2013 13:50:43 +0100 Subject: [PATCH] added first version of Constrained_Delaunay_tri. --- ...trained_triangulation_face_base_sphere_2.h | 159 ++++++++++++++++++ 1 file changed, 159 insertions(+) create mode 100644 Triangulation_on_sphere_2/include/CGAL/Constrained_triangulation_face_base_sphere_2.h diff --git a/Triangulation_on_sphere_2/include/CGAL/Constrained_triangulation_face_base_sphere_2.h b/Triangulation_on_sphere_2/include/CGAL/Constrained_triangulation_face_base_sphere_2.h new file mode 100644 index 00000000000..77a59976099 --- /dev/null +++ b/Triangulation_on_sphere_2/include/CGAL/Constrained_triangulation_face_base_sphere_2.h @@ -0,0 +1,159 @@ +// Copyright (c) 1997 INRIA Sophia-Antipolis (France). +// All rights reserved. +// +// This file is part of CGAL (www.cgal.org). +// You can redistribute it and/or modify it under the terms of the GNU +// General Public License as published by the Free Software Foundation, +// either version 3 of the License, or (at your option) any later version. +// +// 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$ +// $Id$ +// +// +// Author(s) : Claudia Werner + +#ifndef CGAL_CONSTRAINED_TRIANGULATION_FACE_BASE_SPHERE_2_H +#define CGAL_CONSTRAINED_TRIANGULATION_FACE_BASE_SPHERE_2_H + +#include +#include + +namespace CGAL { + +template > +class Constrained_triangulation_face_base_sphere_2 + : public Fb +{ + + typedef Fb Base; + typedef typename Fb::Triangulation_data_structure TDS; +public: + typedef Gt Geom_traits; + typedef TDS Triangulation_data_structure; + typedef typename TDS::Vertex_handle Vertex_handle; + typedef typename TDS::Face_handle Face_handle; + + template < typename TDS2 > + struct Rebind_TDS { + typedef typename Fb::template Rebind_TDS::Other Fb2; + typedef Constrained_triangulation_face_base_sphere_2 Other; + }; + + +protected: + bool C[3]; + +public: + Constrained_triangulation_face_base_sphere_2() + : Base() + { + set_constraints(false,false,false); + } + + Constrained_triangulation_face_base_sphere_2(Vertex_handle v0, + Vertex_handle v1, + Vertex_handle v2) + : Base(v0,v1,v2) + { + set_constraints(false,false,false); + } + + Constrained_triangulation_face_base_sphere_2(Vertex_handle v0, + Vertex_handle v1, + Vertex_handle v2, + Face_handle n0, + Face_handle n1, + Face_handle n2) + : Base(v0,v1,v2,n0,n1,n2) + { + set_constraints(false,false,false); + } + + + Constrained_triangulation_face_base_sphere_2(Vertex_handle v0, + Vertex_handle v1, + Vertex_handle v2, + Face_handle n0, + Face_handle n1, + Face_handle n2, + bool c0, + bool c1, + bool c2 ) + : Base(v0,v1,v2,n0,n1,n2) + { + set_constraints(c0,c1,c2); + } + + + bool is_constrained(int i) const ; + void set_constraints(bool c0, bool c1, bool c2) ; + void set_constraint(int i, bool b); + void reorient(); + void ccw_permute(); + void cw_permute(); + +}; + +template +inline void +Constrained_triangulation_face_base_sphere_2:: +set_constraints(bool c0, bool c1, bool c2) +{ + C[0]=c0; + C[1]=c1; + C[2]=c2; +} + +template +inline void +Constrained_triangulation_face_base_sphere_2:: +set_constraint(int i, bool b) +{ + CGAL_triangulation_precondition( i == 0 || i == 1 || i == 2); + C[i] = b; +} + +template +inline bool +Constrained_triangulation_face_base_sphere_2:: +is_constrained(int i) const +{ + return(C[i]); +} + +template +inline void +Constrained_triangulation_face_base_sphere_2:: +reorient() +{ + Base::reorient(); + set_constraints(C[1],C[0],C[2]); +} + +template +inline void +Constrained_triangulation_face_base_sphere_2:: +ccw_permute() +{ + Base::ccw_permute(); + set_constraints(C[2],C[0],C[1]); +} + +template +inline void +Constrained_triangulation_face_base_sphere_2:: +cw_permute() +{ + Base::cw_permute(); + set_constraints(C[1],C[2],C[0]); +} + +} //namespace CGAL + +#endif //CGAL_CONSTRAINED_TRIANGULATION_FACE_BASE_2_H