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

📄 trapezoidal_decomposition_2_iostream.h

📁 很多二维 三维几何计算算法 C++ 类库
💻 H
字号:
// Copyright (c) 1999  Tel-Aviv University (Israel).// 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/Arrangement_2/include/CGAL/Arr_point_location/Trapezoidal_decomposition_2_iostream.h $// $Id: Trapezoidal_decomposition_2_iostream.h 31514 2006-06-11 17:22:18Z efif $// //// Author(s)	 : Oren Nechushtan <theoren@math.tau.ac.il>#ifndef CGAL_TRAPEZOIDAL_DECOMPOSITION_2_IOSTREAM_H#define CGAL_TRAPEZOIDAL_DECOMPOSITION_2_IOSTREAM_H#ifndef CGAL_TRAPEZOIDAL_DECOMPOSITION_2_H#include <CGAL/Arr_point_location/Trapezoidal_decomposition_2.h>#endifCGAL_BEGIN_NAMESPACEtemplate < class Traits>std::ostream& operator<<(			 std::ostream &out,			 const typename Trapezoidal_decomposition_2<Traits>::In_face_iterator& it){  out << "In_face_iterator(";  if (it.operator->()) out << *it; else out <<"end";  return out << ")" << std::flush;}template < class Traits>std::ostream& write(		    std::ostream &out,const Trapezoidal_decomposition_2<Traits>& td){  return out << td;}template < class Traits>std::ostream& operator<<(			 std::ostream &out,const Trapezoidal_decomposition_2<Traits>& td){  return write(out,td.get_data_structure(),td.get_traits());}template < class Traits>std::ostream& write(std::ostream &out,const Td_X_trapezoid<Traits>& t,		    const Traits& traits,bool validate=true){  typedef Trapezoidal_decomposition_2<Traits> TD;  typedef Td_X_trapezoid<Traits> X_trapezoid;  typedef X_trapezoid* pointer;  bool pad=false;  out << "(";  if (!t.is_left_unbounded()) out << t.left(); else out << "-oo";  out << ",";  if (!t.is_right_unbounded()) out << t.right(); else out << "+oo";  out << "," << std::flush;  if (!t.is_bottom_unbounded()) out << t.bottom(); else out << "-oo";  out << ",";  if (!t.is_top_unbounded()) out << t.top(); else out << "+oo";  out << ",neighbours(" << std::flush;	  // debug neighbours equivalence relation  int max_size=4+1;  int null_size=2,size=null_size,i,j;	  X_trapezoid* value[] =    {      0,      (X_trapezoid*)CGAL_TRAPEZOIDAL_DECOMPOSITION_2_DELETE_SIGNATURE,      t.left_bottom_neighbour(),      t.left_top_neighbour(),      t.right_bottom_neighbour(),      t.right_top_neighbour()    };  typedef char debug_string[256];  debug_string name[]=    {      "none",      "deleted",      "lb",      "lt",      "rb",      "rt"    };  for (j=null_size;j<=max_size;j++)    {      for (i=0;i<size;i++)	if (value[j]==value[i])	  {	    CGAL_CLIB_STD::strcat(name[i],"=");	    CGAL_CLIB_STD::strcat(name[i],name[j]);	    break;	  }      if (i==size)	{	  value[size]=value[j];	  CGAL_CLIB_STD::strcpy(name[size++],name[j]);	}    }  if (size==null_size) {out << "none";}  for(j=null_size;j<size;j++)    {      if (pad) out << " ";      else pad=true;      out << name[j];      // identify neighbours      if (traits.is_degenerate_point(t) && value[j])	out << "=" << value[j]->top();    }  out << ")" << std::flush;	  if (t.is_active())    {      if (!traits.is_degenerate(t))	{	  if (t.is_unbounded())	    {	      out << ",U=";	      if (t.is_left_unbounded())   out << ")";	      if (t.is_bottom_unbounded()) {		if (t.is_top_unbounded())    		  out << "/\\/";		else 		  out << "/\\";	      }	      else if (t.is_top_unbounded())    out << "\\/";	      if (t.is_right_unbounded())  out << "(";	    }	  else	    out << ",T";	}      else if (traits.is_degenerate_curve(t))	out << ",C";      else // if (t.is_degenerate_point())	out << ",P";    }  else    out << ",D";	  /*	Calling t.is_valid requires the traits to be initialized with the proper     bounding box */  if (validate)    {      if (t.is_valid(&traits))	out << ",+";      else	out << ",-";    }	  out << ")" << std::flush;	  return out;}template < class Traits>std::ostream& operator<<(std::ostream &out,const Td_X_trapezoid<Traits>& t){  typedef Trapezoidal_decomposition_2<Traits> TD;  typedef Td_X_trapezoid<Traits> X_trapezoid;  typedef X_trapezoid* pointer;  Traits traits;  out << "(";  if (!t.is_left_unbounded()) out << t.left(); else out << "-oo";  out << ",";  if (!t.is_right_unbounded()) out << t.right(); else out << "+oo";  out << "," << std::flush;  if (!t.is_bottom_unbounded()) out << t.bottom(); else out << "-oo";  out << ",";  if (!t.is_top_unbounded()) out << t.top(); else out << "+oo";  out << ",neighbours(" << std::flush;	  // debug neighbours equivalence relation  int max_size=4+1;  int null_size=2,size=null_size,i,j;	  X_trapezoid* value[] =    {      0,      (X_trapezoid*)CGAL_TRAPEZOIDAL_DECOMPOSITION_2_DELETE_SIGNATURE,      t.left_bottom_neighbour(),      t.left_top_neighbour(),      t.right_bottom_neighbour(),      t.right_top_neighbour()    };  typedef char debug_string[256];  debug_string name[]=    {      "none",      "deleted",      "lb",      "lt",      "rb",      "rt"    };  for (j=null_size;j<=max_size;j++)    {      for (i=0;i<size;i++)	if (value[j]==value[i])	  {	    CGAL_CLIB_STD::strcat(name[i],"=");	    CGAL_CLIB_STD::strcat(name[i],name[j]);	    break;	  }      if (i==size)	{	  value[size]=value[j];	  CGAL_CLIB_STD::strcpy(name[size++],name[j]);	}    }  if (size==null_size) {out << "none";}  for(j=null_size;j<size;j++)    {      out << name[j];      // identify neighbours      if (traits.is_degenerate_point(t) && value[j])	out << "=" << value[j]->top();      out << " ";    }  out << ")" << std::flush;	  if (t.is_active())    {      if (!traits.is_degenerate(t))	{	  if (t.is_unbounded())	    {	      out << ",U";	      if (t.is_left_unbounded())		out << (char) 174;	      if (t.is_bottom_unbounded())		out << (char) 25;	      if (t.is_top_unbounded())		out << (char) 24;	      if (t.is_right_unbounded())		out << (char) 175;	    }	  else	    out << ",T";	}      else if (traits.is_degenerate_curve(t))	out << ",C";      else // if (t.is_degenerate_point())	out << ",P";    }  else    out << ",D";	  /*	Calling t.is_valid requires the traits to be initialized with the proper     bounding box    if (traits)    {    if (t.is_valid(traits))    out << ",+";    else    out << ",-";    }  */	  out << ")" << std::flush;	  return out;}CGAL_END_NAMESPACE#endif //CGAL_TRAPEZOIDAL_DECOMPOSITION_2_IOSTREAM_H

⌨️ 快捷键说明

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