⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 delaunay_triangulation_default_traits_2.h

📁 很多二维 三维几何计算算法 C++ 类库
💻 H
字号:
// Copyright (c) 2005  Stanford University (USA).// 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 Lesser General Public License as// published by the Free Software Foundation; version 2.1 of the License.// See the file LICENSE.LGPL 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/Kinetic_data_structures/include/CGAL/Kinetic/Delaunay_triangulation_default_traits_2.h $// $Id: Delaunay_triangulation_default_traits_2.h 36326 2007-02-15 17:48:43Z drussel $// //// Author(s)     : Daniel Russel <drussel@alumni.princeton.edu>#ifndef CGAL_KINETIC_DELAUNAY_TRIANGULATION_DEFAULT_TRAITS_2_H#define CGAL_KINETIC_DELAUNAY_TRIANGULATION_DEFAULT_TRAITS_2_H#include <CGAL/Kinetic/basic.h>#include <CGAL/Kinetic/internal/tds_2_helpers.h>CGAL_KINETIC_BEGIN_NAMESPACEtemplate <class Simulation_traits_t, class Triangulation_t>class Delaunay_triangulation_default_traits_2 {protected:  typedef Simulation_traits_t ST;public:  typedef typename ST::Kinetic_kernel::Side_of_oriented_circle_2 SOC;  typedef typename ST::Kinetic_kernel::Orientation_2 O2;  typedef typename Triangulation_t::Edge Edge;  typedef Triangulation_t Triangulation;  typedef internal::Triangulation_data_structure_helper_2<typename Triangulation::Triangulation_data_structure> TDS_helper;  typedef typename ST::Simulator Simulator;  typedef typename SOC::result_type Certificate_data;  typedef typename Simulator::Time Time;  typedef typename Simulator::Event_key Event_key;  typedef typename ST::Active_points_2_table::Data Point_2;  typedef typename ST::Active_points_2_table::Key Point_key;  typedef typename ST::Instantaneous_kernel Instantaneous_kernel;  typedef typename Simulator::NT NT;     Delaunay_triangulation_default_traits_2(ST st): st_(st){    soc_= st_.kinetic_kernel_object().side_of_oriented_circle_2_object();    o2_= st_.kinetic_kernel_object().orientation_2_object();  }    typename Simulator::Handle simulator_handle() {    return st_.simulator_handle();  }  typename Simulator::Const_handle simulator_handle() const {    return st_.simulator_handle();  }    typedef typename ST::Active_points_2_table Active_points_2_table;  typename Active_points_2_table::Handle active_points_2_table_handle() {    return st_.active_points_2_table_handle();  }  NT rational_current_time() {    NT nt= st_.simulator_handle()->next_time_representable_as_nt();    /*std::cout << "Next time is " << nt << " " << CGAL::to_double(nt) << std::endl;    std::cout << "Current time is " << st_.simulator_handle()->current_time() << " "    << CGAL::to_double(st_.simulator_handle()->current_time()) << std::endl;*/    CGAL_assertion(st_.simulator_handle()->current_time()== nt);    //st_.simulator_handle()->set_current_time(nt);    return nt;  }  const Point_2& point(Point_key k) const {    return st_.active_points_2_table_handle()->at(k);  }  Instantaneous_kernel instantaneous_kernel_object() const {    return st_.instantaneous_kernel_object();  }  CGAL::Comparison_result compare_concurrent(typename Simulator::Event_key a,					     Edge ,					     typename Simulator::Event_key b,					     Edge ) const {    if (a < b) return CGAL::SMALLER;    else if (b < a) return CGAL::LARGER;    else return CGAL::EQUAL;    //return CGAL::compare(a,b);  }   void point_changed(Point_key){}  typedef std::pair<Time, Certificate_data> Certificate_pair;  bool internal_certificate_failure_time(Edge e, Point_key ks[4],  Time &t, Certificate_data &s) {    s= soc_(point(ks[0]), point(ks[1]),	    point(ks[2]), point(ks[3]),	    st_.simulator_handle()->current_time(),	    st_.simulator_handle()->end_time());    return return_certificate_failure_time(e, t, s);  }  bool certificate_failure_time(Edge e, Certificate_data cd, Time &t, Certificate_data &s ) {    s=cd;    return return_certificate_failure_time(e, t, s);  }  bool hull_certificate_failure_time(Edge e,Point_key ks[3], Time &t, Certificate_data &s) {    s= o2_(point(ks[0]), point(ks[1]), point(ks[2]),	   st_.simulator_handle()->current_time(),	   st_.simulator_handle()->end_time());       return return_certificate_failure_time(e, t, s);  }  bool return_certificate_failure_time(Edge , Time &t, Certificate_data &s ) {    if (s.will_fail()) {      t= s.failure_time();      s.pop_failure_time();      return true;    } else {      return false;    }  }  SOC positive_side_of_oriented_circle_2_object() const {    return soc_;  }    bool is_exact() const {    return st_.is_exact();  }protected:  ST st_;  SOC soc_;  O2 o2_;};CGAL_KINETIC_END_NAMESPACE#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -