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

📄 arrangement_enum.h

📁 很多二维 三维几何计算算法 C++ 类库
💻 H
字号:
// Copyright (c) 2003,2004,2005,2006  INRIA Sophia-Antipolis (France) and// Notre Dame University (U.S.A.).  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/Segment_Delaunay_graph_2/include/CGAL/Segment_Delaunay_graph_2/Arrangement_enum.h $// $Id: Arrangement_enum.h 32830 2006-07-31 13:25:07Z mkaravel $// //// Author(s)     : Menelaos Karavelas <mkaravel@cse.nd.edu>#ifndef CGAL_SEGMENT_DELAUNAY_GRAPH_2_ARRANGEMENT_ENUM_H#define CGAL_SEGMENT_DELAUNAY_GRAPH_2_ARRANGEMENT_ENUM_H#include <CGAL/Segment_Delaunay_graph_2/basic.h>#include <iostream>CGAL_BEGIN_NAMESPACECGAL_SEGMENT_DELAUNAY_GRAPH_2_BEGIN_NAMESPACEnamespace Internal {  struct Arrangement_enum {    enum Arrangement_type {      DISJOINT = 0, // obvious      TOUCH_1, // (p1,p2) and q, and p1 and q are identical      TOUCH_2, // (p1,p2) and q, and p2 and q are identical      TOUCH_11, // (p1,p2), (q1,q2), and p1, q1 are identical      TOUCH_12, // (p1,p2), (q1,q2), and p1, q2 are identical      TOUCH_21, // (p1,p2), (q1,q2), and p2, q1 are identical      TOUCH_22, // (p1,p2), (q1,q2), and p2, q2 are identical      CROSSING, // two segments intersecting at interior points      IDENTICAL, // either two segments or two points that are identical      INTERIOR_1, // (p1,p2) and (q1,q2), and q1, q2 are interior                  // points of (p1,p2)      INTERIOR_2, // (p1,p2) and (q1,q2), and p1, p2 are interior                  // points of (q1,q2)      INTERIOR,  // (p1,p2) and q, and q is an interior point of (p1,p2)      TOUCH_11_INTERIOR_1, // (p1,p2) and (q1,q2), and p1, q1 are			   // identical and q2 is an interior point of (p1,p2)      TOUCH_11_INTERIOR_2, // (p1,p2) and (q1,q2), and p1, q1 are			   // identical and p2 is an interior point of			   // (q1,q2)      TOUCH_12_INTERIOR_1, // (p1,p2) and (q1,q2), and p1, q2 are                           // identical and q1 is an interior point of (p1,p2)      TOUCH_12_INTERIOR_2, // (p1,p2) and (q1,q2), and p1, q2 are			   // identical and p2 is an interior point of (q1,q2)      TOUCH_21_INTERIOR_1, // (p1,p2) and (q1,q2), and p2, q1 are			   // identical and q2 is an interior point of (p1,p2)      TOUCH_21_INTERIOR_2, // (p1,p2) and (q1,q2), and p2, q1 are  			   // identical and p1 is an interior point of (q1,q2)      TOUCH_22_INTERIOR_1, // (p1,p2) and (q1,q2), and p2, q2 are			   // identical and q1 is an interior point of (p1,p2)      TOUCH_22_INTERIOR_2, // (p1,p2) and (q1,q2), and p2, q2 are		           // identical and p1 is an interior point of (q1,q2)      OVERLAPPING_11, // (p1,p2) and (q1,q2), and (p1,q1) is the overlap      OVERLAPPING_12, // (p1,p2) and (q1,q2), and (p1,q1) is the overlap      OVERLAPPING_21, // (p1,p2) and (q1,q2), and (p2,q1) is the overlap      OVERLAPPING_22, // (p1,p2) and (q1,q2), and (p2,q2) is the overlap      TOUCH_INTERIOR_12, // (p1,p2) and (q1,q2) and p1 is an interior                         //  point of (q1,q2)      TOUCH_INTERIOR_22, // (p1,p2) and (q1,q2) and p2 is an interior                         //  point of (q1,q2)      TOUCH_INTERIOR_11, // (p1,p2) and (q1,q2) and q1 is an interior                         //  point of (p1,p2)      TOUCH_INTERIOR_21  // (p1,p2) and (q1,q2) and q2 is an interior                         //  point of (p1,p2)    };    static Arrangement_type opposite(const Arrangement_type& at) {      // this returns the result if we swap the order of the arguments...      if ( at == TOUCH_12 ) {	return TOUCH_21;      } else if ( at == TOUCH_21 ) {	return TOUCH_12;      } else if ( at == INTERIOR_1 ) {	return INTERIOR_2;      } else if ( at == INTERIOR_2 ) {	return INTERIOR_1;      } else if ( at == TOUCH_11_INTERIOR_1 ) {	return TOUCH_11_INTERIOR_2;      } else if ( at == TOUCH_11_INTERIOR_2 ) {	return TOUCH_11_INTERIOR_1;      } else if ( at == TOUCH_12_INTERIOR_1 ) {	return TOUCH_21_INTERIOR_2;      } else if ( at == TOUCH_12_INTERIOR_2 ) {	return TOUCH_21_INTERIOR_1;      } else if ( at == TOUCH_21_INTERIOR_1 ) {	return TOUCH_12_INTERIOR_2;      } else if ( at == TOUCH_21_INTERIOR_2 ) {	return TOUCH_12_INTERIOR_1;      } else if ( at == TOUCH_22_INTERIOR_1 ) {	return TOUCH_22_INTERIOR_2;      } else if ( at == TOUCH_22_INTERIOR_2 ) {	return TOUCH_22_INTERIOR_1;      } else if ( at == OVERLAPPING_12 ) {	return OVERLAPPING_21;      } else if ( at == OVERLAPPING_21 ) {	return OVERLAPPING_12;      } else if ( at == TOUCH_INTERIOR_12 ) {	return TOUCH_INTERIOR_11;      } else if ( at == TOUCH_INTERIOR_22 ) {	return TOUCH_INTERIOR_21;      } else if ( at == TOUCH_INTERIOR_11 ) {	return TOUCH_INTERIOR_12;      } else if ( at == TOUCH_INTERIOR_21 ) {	return TOUCH_INTERIOR_22;      }      return at;    }  };#ifdef CGAL_SEGMENT_DELAUNAY_GRAPH_2_ARRANGEMENT_TYPE_OUTPUT_OPERATOR  static  std::ostream& operator<<(std::ostream& os,			   const Arrangement_enum::Arrangement_type& at)  {    typedef Arrangement_enum AT;    if ( at == AT::DISJOINT ) {      os << "DISJOINT";    } else if ( at == AT::TOUCH_1 ) {      os << "TOUCH_1";    } else if ( at == AT::TOUCH_2 ) {      os << "TOUCH_2";    } else if ( at == AT::TOUCH_11 ) {      os << "TOUCH_11";    } else if ( at == AT::TOUCH_12 ) {      os << "TOUCH_12";    } else if ( at == AT::TOUCH_21 ) {      os << "TOUCH_21";    } else if ( at == AT::TOUCH_22 ) {      os << "TOUCH_22";    } else if ( at == AT::CROSSING ) {      os << "CROSSING";    } else if ( at == AT::IDENTICAL) {      os << "IDENTICAL";    } else if ( at == AT::INTERIOR_1 ) {      os << "INTERIOR_1";    } else if ( at == AT::INTERIOR_2 ) {      os << "INTERIOR_2";    } else if ( at == AT::INTERIOR ) {      os << "INTERIOR";    } else if ( at == AT::TOUCH_11_INTERIOR_1 ) {      os << "TOUCH_11_INTERIOR_1";    } else if ( at == AT::TOUCH_11_INTERIOR_2 ) {      os << "TOUCH_11_INTERIOR_2";    } else if ( at == AT::TOUCH_12_INTERIOR_1 ) {      os << "TOUCH_12_INTERIOR_1";    } else if ( at == AT::TOUCH_12_INTERIOR_2 ) {      os << "TOUCH_12_INTERIOR_2";    } else if ( at == AT::TOUCH_21_INTERIOR_1 ) {      os << "TOUCH_21_INTERIOR_1";    } else if ( at == AT::TOUCH_21_INTERIOR_2 ) {      os << "TOUCH_21_INTERIOR_2";    } else if ( at == AT::TOUCH_22_INTERIOR_1 ) {      os << "TOUCH_22_INTERIOR_1";    } else if ( at == AT::TOUCH_22_INTERIOR_2 ) {      os << "TOUCH_22_INTERIOR_2";    } else if ( at == AT::OVERLAPPING_11 ) {      os << "OVERLAPPING_11";    } else if ( at == AT::OVERLAPPING_12 ) {      os << "OVERLAPPING_12";    } else if ( at == AT::OVERLAPPING_21 ) {      os << "OVERLAPPING_21";    } else if ( at == AT::OVERLAPPING_22 ) {      os << "OVERLAPPING_22";    } else if ( at == AT::TOUCH_INTERIOR_11 ) {      os << "TOUCH_INTERIOR_11";    } else if ( at == AT::TOUCH_INTERIOR_12 ) {      os << "TOUCH_INTERIOR_12";    } else if ( at == AT::TOUCH_INTERIOR_21 ) {      os << "TOUCH_INTERIOR_21";    } else if ( at == AT::TOUCH_INTERIOR_22 ) {      os << "TOUCH_INTERIOR_22";    } else {      CGAL_assertion( false );    }    return os;  }#endif // CGAL_SEGMENT_DELAUNAY_GRAPH_2_ARRANGEMENT_TYPE_OUTPUT_OPERATOR} // namespace InternalCGAL_SEGMENT_DELAUNAY_GRAPH_2_END_NAMESPACECGAL_END_NAMESPACE#endif // CGAL_SEGMENT_DELAUNAY_GRAPH_2_ARRANGEMENT_ENUM_H

⌨️ 快捷键说明

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