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

📄 snc_list.h

📁 很多二维 三维几何计算算法 C++ 类库
💻 H
📖 第 1 页 / 共 3 页
字号:
// Copyright (c) 1997-2000  Max-Planck-Institute Saarbruecken (Germany).// 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/Nef_3/include/CGAL/Nef_3/SNC_list.h $// $Id: SNC_list.h 28567 2006-02-16 14:30:13Z lsaboret $// //// Author(s)     : Peter Hachenberger <hachenberger@mpi-sb.mpg.de>#ifndef CGAL_SNC_LIST_H#define CGAL_SNC_LIST_H#include <CGAL/Nef_S2/SM_list.h>#include <CGAL/Unique_hash_map.h>CGAL_BEGIN_NAMESPACEtemplate < class Sphere_map>class SNC_in_place_list_sm    : public Sphere_map,       public In_place_list_base<SNC_in_place_list_sm<Sphere_map> > {public:    typedef SNC_in_place_list_sm<Sphere_map> Self;    //    typedef typename Vertex::Vertex_handle       Vertex_handle;    //    typedef typename Vertex::Vertex_const_handle Vertex_const_handle;    SNC_in_place_list_sm() {}    SNC_in_place_list_sm(const Sphere_map& sm)   // down cast        : Sphere_map(sm) {}    Self& operator=( const Self& sm) {        // This self written assignment avoids that assigning vertices will        // overwrite the list linking of the target vertex.        *((Sphere_map*)this) = ((const Sphere_map&)sm);        return *this;    }};template < class Halffacet>class SNC_in_place_list_halffacet    : public Halffacet,       public In_place_list_base<SNC_in_place_list_halffacet<Halffacet> > {public:    typedef SNC_in_place_list_halffacet<Halffacet> Self;    //    typedef typename Halffacet::Halffacet_handle       Halffacet_handle;    //    typedef typename Halffacet::Halffacet_const_handle Halffacet_const_handle;    SNC_in_place_list_halffacet() {}    SNC_in_place_list_halffacet(const Halffacet& v)   // down cast        : Halffacet(v) {}    Self& operator=( const Self& v) {        // This self written assignment avoids that assigning vertices will        // overwrite the list linking of the target vertex.        *((Halffacet*)this) = ((const Halffacet&)v);        return *this;    }};template < class Volume>class SNC_in_place_list_volume    : public Volume,       public In_place_list_base<SNC_in_place_list_volume<Volume> > {public:    typedef SNC_in_place_list_volume<Volume> Self;    //    typedef typename Volume::Volume_handle       Volume_handle;    //    typedef typename Volume::Volume_const_handle Volume_const_handle;    SNC_in_place_list_volume() {}    SNC_in_place_list_volume(const Volume& v)   // down cast        : Volume(v) {}    Self& operator=( const Self& v) {        // This self written assignment avoids that assigning vertices will        // overwrite the list linking of the target vertex.        *((Volume*)this) = ((const Volume&)v);        return *this;    }};template < class SHalfloop>class SNC_in_place_list_shalfloop    : public SHalfloop,       public In_place_list_base<SNC_in_place_list_shalfloop<SHalfloop> > {public:    typedef SNC_in_place_list_shalfloop<SHalfloop> Self;    //    typedef typename SHalfloop::SHalfloop_handle       SHalfloop_handle;    //    typedef typename SHalfloop::SHalfloop_const_handle SHalfloop_const_handle;    SNC_in_place_list_shalfloop() {}    SNC_in_place_list_shalfloop(const SHalfloop& v)   // down cast        : SHalfloop(v) {}    Self& operator=( const Self& v) {        // This self written assignment avoids that assigning vertices will        // overwrite the list linking of the target vertex.        *((SHalfloop*)this) = ((const SHalfloop&)v);        return *this;    }};/*template <typename K, typename I> class SNC_sphere_map;template <typename S> class SM_decorator;template<typename Kernel_,typename Items_>class SNC_list : public SM_list<CGAL::Sphere_geometry<Kernel_>,Items_> { public:  typedef Kernel_                               Kernel;  typedef Items_                                Items;  typedef CGAL::Sphere_geometry<Kernel>         Sphere_kernel;  typedef CGAL::SNC_list<Kernel,Items>          Self;  typedef CGAL::SM_list<Sphere_kernel,Items>    Base;  typedef CGAL::SNC_sphere_map<Kernel, Items>   Sphere_map;  typedef CGAL::SM_decorator<Sphere_map>        SM_decorator;  typedef typename Base::Mark                   Mark;  typedef typename Base::Size_type              Size_type;    typedef typename Kernel::Point_3                 Point_3;  typedef typename Kernel::Plane_3                 Plane_3;  typedef typename Kernel::Vector_3                Vector_3;  typedef typename Kernel::Direction_3             Direction_3;  typedef typename Kernel::Segment_3               Segment_3;  typedef typename Kernel::Line_3                  Line_3;  typedef typename Kernel::Ray_3                   Ray_3;  typedef typename Kernel::Triangle_3              Triangle_3;  typedef typename Kernel::Aff_transformation_3    Aff_transformation_3;  typedef typename Sphere_kernel::Sphere_point     Sphere_point;  typedef typename Sphere_kernel::Sphere_segment   Sphere_segment;  typedef typename Sphere_kernel::Sphere_circle    Sphere_circle;  typedef typename Sphere_kernel::Sphere_direction Sphere_direction;  typedef Sphere_map                                        Vertex_base;  typedef SNC_in_place_list_sm<Vertex_base>                 Vertex;   typedef CGAL::In_place_list<Vertex,false>                 Vertex_list;  typedef CGAL_ALLOCATOR(Vertex)                            Vertex_alloc;  typedef typename Vertex_list::iterator                    Vertex_handle;  typedef typename Vertex_list::const_iterator              Vertex_const_handle;  typedef typename Vertex_list::iterator                    Vertex_iterator;  typedef typename Vertex_list::const_iterator              Vertex_const_iterator;  typedef typename Items::template Halffacet<Self>          Halffacet_base;  typedef SNC_in_place_list_halffacet<Halffacet_base>       Halffacet;  typedef CGAL::In_place_list<Halffacet,false>              Halffacet_list;  typedef CGAL_ALLOCATOR(Halffacet)                         Halffacet_alloc;  typedef typename Halffacet_list::iterator                 Halffacet_handle;  typedef typename Halffacet_list::const_iterator           Halffacet_const_handle;  typedef typename Halffacet_list::iterator                 Halffacet_iterator;  typedef typename Halffacet_list::const_iterator           Halffacet_const_iterator;  typedef typename Items::template Volume<Self>             Volume_base;  typedef SNC_in_place_list_volume<Volume_base>             Volume;  typedef CGAL::In_place_list<Volume,false>                 Volume_list;  typedef CGAL_ALLOCATOR(Volume)                            Volume_alloc;  typedef typename Volume_list::iterator                    Volume_handle;  typedef typename Volume_list::const_iterator              Volume_const_handle;  typedef typename Volume_list::iterator                    Volume_iterator;  typedef typename Volume_list::const_iterator              Volume_const_iterator;  typedef typename Items::template SVertex<Self>            SVertex_base;  typedef SNC_in_place_list_svertex<SVertex_base>           SVertex;  typedef CGAL::In_place_list<SVertex,false>                SVertex_list;  typedef CGAL_ALLOCATOR(SVertex)                           SVertex_alloc;  typedef typename SVertex_list::iterator                   SVertex_handle;  typedef typename SVertex_list::const_iterator             SVertex_const_handle;  typedef typename SVertex_list::iterator                   SVertex_iterator;  typedef typename SVertex_list::const_iterator             SVertex_const_iterator;  typedef typename Items::template SVertex<Self>            Halfedge_base;  typedef SNC_in_place_list_svertex<SVertex_base>           Halfedge;  typedef CGAL::In_place_list<SVertex,false>                Halfedge_list;  typedef CGAL_ALLOCATOR(SVertex)                           Halfedge_alloc;  typedef typename SVertex_list::iterator                   Halfedge_handle;  typedef typename SVertex_list::const_iterator             Halfedge_const_handle;  typedef typename SVertex_list::iterator                   Halfedge_iterator;  typedef typename SVertex_list::const_iterator             Halfedge_const_iterator;  typedef typename Items::template SHalfedge<Self>          SHalfedge_base;  typedef SNC_in_place_list_shalfedge<SHalfedge_base>       SHalfedge;  typedef CGAL::In_place_list<SHalfedge,false>              SHalfedge_list;  typedef CGAL_ALLOCATOR(SHalfedge)                         SHalfedge_alloc;  typedef typename SHalfedge_list::iterator                 SHalfedge_handle;  typedef typename SHalfedge_list::const_iterator           SHalfedge_const_handle;  typedef typename SHalfedge_list::iterator                 SHalfedge_iterator;  typedef typename SHalfedge_list::const_iterator           SHalfedge_const_iterator;  typedef typename Items::template SHalfloop<Self>          SHalfloop_base;  typedef SNC_in_place_list_shalfloop<SHalfloop_base>       SHalfloop;  typedef CGAL::In_place_list<SHalfloop,false>              SHalfloop_list;  typedef CGAL_ALLOCATOR(SHalfloop)                         SHalfloop_alloc;  typedef typename SHalfloop_list::iterator                 SHalfloop_handle;  typedef typename SHalfloop_list::const_iterator           SHalfloop_const_handle;  typedef typename SHalfloop_list::iterator                 SHalfloop_iterator;  typedef typename SHalfloop_list::const_iterator           SHalfloop_const_iterator;  typedef typename Items::template SFace<Self>              SFace_base;  typedef SNC_in_place_list_sface<SFace_base>               SFace;  typedef CGAL::In_place_list<SFace,false>                  SFace_list;  typedef CGAL_ALLOCATOR(SFace)                             SFace_alloc;  typedef typename SFace_list::iterator                     SFace_handle;  typedef typename SFace_list::const_iterator               SFace_const_handle;  typedef typename SFace_list::iterator                     SFace_iterator;  typedef typename SFace_list::const_iterator               SFace_const_iterator;  typedef typename Base::SVertex                   Halfedge;  typedef typename Base::SVertex_handle            Halfedge_handle;  typedef typename Base::SVertex_iterator          Halfedge_iterator;  typedef typename Base::SVertex_const_handle      Halfedge_const_handle;  typedef typename Base::SVertex_const_iterator    Halfedge_const_iterator;  typedef typename Base::SVertex                   SVertex;  typedef typename Base::SVertex_handle            SVertex_handle;  typedef typename Base::SVertex_iterator          SVertex_iterator;  typedef typename Base::SVertex_const_handle      SVertex_const_handle;  typedef typename Base::SVertex_const_iterator    SVertex_const_iterator;  typedef typename Base::SHalfedge                 SHalfedge;  typedef typename Base::SHalfedge_handle          SHalfedge_handle;  typedef typename Base::SHalfedge_iterator        SHalfedge_iterator;  typedef typename Base::SHalfedge_const_handle    SHalfedge_const_handle;  typedef typename Base::SHalfedge_const_iterator  SHalfedge_const_iterator;  typedef typename Base::SFace                     SFace;  typedef typename Base::SFace_handle              SFace_handle;  typedef typename Base::SFace_iterator            SFace_iterator;  typedef typename Base::SFace_const_handle        SFace_const_handle;  typedef typename Base::SFace_const_iterator      SFace_const_iterator;  typedef typename Base::SHalfloop                 SHalfloop;  typedef typename Base::SHalfloop_handle          SHalfloop_handle;  typedef typename Base::SHalfloop_iterator        SHalfloop_iterator;  typedef typename Base::SHalfloop_const_handle    SHalfloop_const_handle;  typedef typename Base::SHalfloop_const_iterator  SHalfloop_const_iterator;  typedef typename Base::Object_handle             Object_handle;  typedef typename Base::Object_list               Object_list;  typedef typename Base::Object_iterator           Object_iterator;  typedef typename Base::Object_const_iterator     Object_const_iterator;  typedef typename Base::SHalfedge_around_svertex_circulator                         SHalfedge_around_svertex_circulator;  typedef typename Base::SHalfedge_around_sface_circulator                         SHalfedge_around_sface_circulator;  typedef typename Base::SHalfedge_around_svertex_const_circulator                         SHalfedge_around_svertex_const_circulator;  typedef typename Base::SHalfedge_around_sface_const_circulator                         SHalfedge_around_sface_const_circulator;  typedef typename Base::SFace_cycle_iterator                               SFace_cycle_iterator;  typedef typename Base::SFace_cycle_const_iterator                               SFace_cycle_const_iterator;  typedef CircFromIt<SHalfedge_const_iterator,           move_shalfedge_around_facet<SHalfedge_const_iterator> >           SHalfedge_around_facet_const_circulator;

⌨️ 快捷键说明

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