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

📄 snc_items.h

📁 很多二维 三维几何计算算法 C++ 类库
💻 H
📖 第 1 页 / 共 3 页
字号:
    typedef typename Refs::SFace_const_handle SFace_const_handle;    typedef typename Refs::Halffacet_handle Halffacet_handle;    typedef typename Refs::Halffacet_const_handle Halffacet_const_handle;    // Role within local graph:    SVertex_handle     source_;    SHalfedge_handle   sprev_, snext_;    SFace_handle       incident_sface_;    SHalfedge_handle   twin_;    // Topology within global Nef structure:      SHalfedge_handle   prev_, next_;    Halffacet_handle   facet_;    GenPtr             info_;    // temporary needed:    Mark               mark_;    Sphere_circle      circle_;  public:    SHalfedge() : source_(), sprev_(), snext_(),     incident_sface_(), twin_(),      prev_(), next_(), facet_(),      info_(), mark_(), circle_() {}    ~SHalfedge() {      CGAL_NEF_TRACEN("  destroying SHalfedge item "<<&*this);    }    SHalfedge(const SHalfedge<Refs>& e)    {      source_ = e.source_;      sprev_ = e.sprev_;      snext_ = e.snext_;      incident_sface_ = e.incident_sface_;      twin_ = e.twin_;      prev_ = e.prev_;      next_ = e.next_;      facet_ = e.facet_;      info_ = 0;      mark_ = e.mark_;      circle_ = e.circle_;    }    SHalfedge<Refs>& operator=(const SHalfedge<Refs>& e)    {      source_ = e.source_;      sprev_ = e.sprev_;      snext_ = e.snext_;      incident_sface_ = e.incident_sface_;      twin_ = e.twin_;      prev_ = e.prev_;      next_ = e.next_;      facet_ = e.facet_;      info_ = 0;      mark_ = e.mark_;      circle_ = e.circle_;      return *this;    }    Mark& mark() { return mark_; }    const Mark& mark() const { return mark_; }    SHalfedge_handle& twin() { return twin_; }    SHalfedge_const_handle twin() const { return twin_; }    SVertex_handle& source() { return source_; }    SVertex_const_handle source() const { return source_; }    SVertex_handle& target() { return twin()->source(); }    SVertex_const_handle target() const { return twin()->source(); }    SHalfedge_handle& prev() { return prev_; }    SHalfedge_const_handle prev() const { return prev_; }    SHalfedge_handle& next() { return next_; }    SHalfedge_const_handle next() const { return next_; }    SHalfedge_handle& sprev() { return sprev_; }    SHalfedge_const_handle sprev() const { return sprev_; }    SHalfedge_handle& snext() { return snext_; }    SHalfedge_const_handle snext() const { return snext_; }    SHalfedge_handle& cyclic_adj_succ()      { return sprev()->twin(); }    SHalfedge_const_handle cyclic_adj_succ() const      { return sprev()->twin(); }    SHalfedge_handle& cyclic_adj_pred(SHalfedge_const_handle e)      { return e->twin()->snext(); }    SHalfedge_const_handle cyclic_adj_pred(SHalfedge_const_handle e) const      { return e->twin()->snext(); }    Sphere_circle& circle() { return circle_; }    const Sphere_circle& circle() const { return circle_; }        SFace_handle& incident_sface() { return incident_sface_; }    SFace_const_handle incident_sface() const { return incident_sface_; }    Halffacet_handle& facet() { return facet_; }    Halffacet_const_handle facet() const { return facet_; }    GenPtr& info() { return info_; }    const GenPtr& info() const { return info_; }  public:    std::string debug() const    { std::stringstream os;       set_pretty_mode(os);       os <<"e[ "<<source_->debug()<<", "         <<twin_->source_->debug()<<" "<<info_<<" ] ";      return os.str();    }    bool is_twin() const { return (&*twin_ < this); }    bool is_valid( bool verb = false, int level = 0) const {            Verbose_ostream verr(verb);      verr << "begin CGAL::SNC_items<...>::SHalfedge::is_valid( verb=true, "	"level = " << level << "):" << std::endl;      bool valid = (source_ != SVertex_handle() &&		    source_ != NULL &&		    source_ != Halfedge_handle());      valid = valid && (twin_  != SHalfedge_handle() && twin_  != NULL);      valid = valid && (sprev_ != SHalfedge_handle() && sprev_ != NULL);      valid = valid && (snext_ != SHalfedge_handle() && snext_ != NULL);      valid = valid && (prev_  != SHalfedge_handle() && prev_  != NULL);      valid = valid && (next_  != SHalfedge_handle() && next_  != NULL);            valid = valid && (incident_sface_ != SFace_handle() && 			incident_sface_ != NULL);      valid = valid && (facet_ != Halffacet_handle() &&			facet_ != NULL);      valid = valid && (circle_.d() == 0);      valid = valid && (circle_.a() != 0 || circle_.b() != 0 || circle_.c() !=0);            verr << "end of CGAL::SNC_items<...>::SHalfedge::is_valid(): structure is "	   << ( valid ? "valid." : "NOT VALID.") << std::endl;      return valid;    }  }; // SHalfedge//-----------------------------------------------------------------------------  template <typename Refs>   class SHalfloop {    typedef void* GenPtr;    typedef typename Refs::Mark  Mark;    typedef typename Refs::Sphere_circle  Sphere_circle;    typedef typename Refs::SHalfloop_handle SHalfloop_handle;    typedef typename Refs::SHalfloop_const_handle SHalfloop_const_handle;    typedef typename Refs::SFace_handle SFace_handle;    typedef typename Refs::SFace_const_handle SFace_const_handle;    typedef typename Refs::Halffacet_handle Halffacet_handle;    typedef typename Refs::Halffacet_const_handle Halffacet_const_handle;    SHalfloop_handle   twin_;    SFace_handle       incident_sface_;    Halffacet_handle   facet_;    GenPtr             info_;    // temporary needed:    Mark               mark_;    Sphere_circle      circle_;  public:    SHalfloop() : twin_(), incident_sface_(), facet_(),       info_(), mark_(), circle_() {}    ~SHalfloop() {      CGAL_NEF_TRACEN("  destroying SHalfloop item "<<&*this);    }    SHalfloop(const SHalfloop<Refs>& l)    { twin_ = l.twin_;      incident_sface_ = l.incident_sface_;      facet_ = l.facet_;      info_ = 0;      mark_ = l.mark_;      circle_ = l.circle_;    }    SHalfloop<Refs>& operator=(const SHalfloop<Refs>& l)    { twin_ = l.twin_;      incident_sface_ = l.incident_sface_;      facet_ = l.facet_;      info_ = 0;      mark_ = l.mark_;      circle_ = l.circle_;      return *this;    }    Mark& mark() { return mark_;}    const Mark& mark() const { return mark_; }    SHalfloop_handle& twin() { return twin_; }    SHalfloop_const_handle twin() const { return twin_; }    Sphere_circle& circle() { return circle_; }    const Sphere_circle& circle() const { return circle_; }    SFace_handle& incident_sface() { return incident_sface_; }    SFace_const_handle incident_sface() const { return incident_sface_; }    Halffacet_handle& facet() { return facet_; }    Halffacet_const_handle facet() const { return facet_; }    GenPtr& info() { return info_; }    const GenPtr& info() const { return info_; }  public:    std::string debug() const    { std::stringstream os;       set_pretty_mode(os);       os<<"sl [ "<<circle_<<" ] ";      return os.str();    }    bool is_twin() const { return (&*twin_ < this); }    bool is_valid( bool verb = false, int level = 0) const {            Verbose_ostream verr(verb);      verr << "begin CGAL::SNC_items<...>::SHalfloop::is_valid( verb=true, "	"level = " << level << "):" << std::endl;      bool valid = (twin_  != SHalfloop_handle() && twin_  != NULL);      valid = valid && (incident_sface_ != SFace_handle() && 			incident_sface_ != NULL);      valid = valid && (facet_ != Halffacet_handle() &&			facet_ != NULL);      valid = valid && (circle_.d() == 0);      valid = valid && (circle_.a() != 0 || circle_.b() != 0 || circle_.c() !=0);            verr << "end of CGAL::SNC_items<...>::SHalfloop::is_valid(): structure is "	   << ( valid ? "valid." : "NOT VALID.") << std::endl;      return valid;    }  }; // SHalfloop//-----------------------------------------------------------------------------  template <typename Refs>  class SFace {     typedef void* GenPtr;    typedef typename Refs::Mark  Mark;    typedef typename Refs::Vertex_handle        Vertex_handle;    typedef typename Refs::Vertex_const_handle  Vertex_const_handle;    typedef typename Refs::SFace_handle         SFace_handle;    typedef typename Refs::SFace_const_handle   SFace_const_handle;    typedef typename Refs::Volume_handle        Volume_handle;    typedef typename Refs::Volume_const_handle  Volume_const_handle;    typedef typename Refs::Object_list          Object_list;    typedef typename Refs::SFace_cycle_iterator SFace_cycle_iterator;    typedef typename Refs::SFace_cycle_const_iterator                                                 SFace_cycle_const_iterator;    Vertex_handle  center_vertex_;    Volume_handle  volume_;    //    Object_list   boundary_entry_objects_; // SEdges, SLoops, SVertices    GenPtr         info_;    // temporary needed:    Mark           mark_;  public:    Object_list   boundary_entry_objects_; // SEdges, SLoops, SVertices    SFace() : center_vertex_(), volume_(), info_(), mark_() {}    ~SFace() {      CGAL_NEF_TRACEN("  destroying SFace item "<<&*this);    }    SFace(const SFace<Refs>& f)    { center_vertex_ = f.center_vertex_;      volume_ = f.volume_;      boundary_entry_objects_ = f.boundary_entry_objects_;      info_ = 0;      mark_ = f.mark_;    }    SFace<Refs>& operator=(const SFace<Refs>& f)    { if (this == &f) return *this;      center_vertex_ = f.center_vertex_;      volume_ = f.volume_;      boundary_entry_objects_ = f.boundary_entry_objects_;      info_ = 0;      mark_ = f.mark_;      return *this;    }    SFace_cycle_iterator sface_cycles_begin()     { return boundary_entry_objects_.begin(); }    SFace_cycle_iterator sface_cycles_end()    { return boundary_entry_objects_.end(); }    SFace_cycle_const_iterator sface_cycles_begin() const    { return boundary_entry_objects_.begin(); }    SFace_cycle_const_iterator sface_cycles_end() const    { return boundary_entry_objects_.end(); }    Mark& mark() { return mark_; }    const Mark& mark() const { return mark_; }    Vertex_handle& center_vertex() { return center_vertex_; }    Vertex_const_handle center_vertex() const { return center_vertex_; }    Volume_handle& volume() { return volume_; }    Volume_const_handle volume() const { return volume_; }    Object_list& boundary_entry_objects() { return boundary_entry_objects_; }    const Object_list& boundary_entry_objects() const { return boundary_entry_objects_; }    GenPtr& info() { return info_; }    const GenPtr& info() const { return info_; }    bool is_valid( bool verb = false, int level = 0) const {            Verbose_ostream verr(verb);      verr << "begin CGAL::SNC_items<...>::SFace::is_valid( verb=true, "	"level = " << level << "):" << std::endl;      bool valid =(center_vertex_ != Vertex_handle() && center_vertex_ != NULL);      valid = valid && (volume_ != Volume_handle() &&			volume_ != NULL);      if(boundary_entry_objects_.empty()) {	valid = valid && 	  (center_vertex_->shalfedges_begin() == center_vertex_->shalfedges_end());      }      verr << "end of CGAL::SNC_items<...>::SFace::is_valid(): structure is "	   << ( valid ? "valid." : "NOT VALID.") << std::endl;      return valid;    }  }; // SFace}; // SNC_itemsCGAL_END_NAMESPACE#endif //CGAL_SNC_ITEMS_H

⌨️ 快捷键说明

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