📄 partition_opt_cvx_edge.h
字号:
// Copyright (c) 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/Partition_2/include/CGAL/Partition_2/Partition_opt_cvx_edge.h $// $Id: Partition_opt_cvx_edge.h 36192 2007-02-11 22:44:29Z spion $// //// Author(s) : Susan Hert <hert@mpi-sb.mpg.de>#ifndef CGAL_PARTITION_OPT_CVX_EDGE_H#define CGAL_PARTITION_OPT_CVX_EDGE_H#include <iostream>#include <CGAL/Partition_2/Partition_opt_cvx_diagonal_list.h>namespace CGAL {enum Partition_opt_cvx_edge_validity {PARTITION_OPT_CVX_NOT_VALID, PARTITION_OPT_CVX_START_VALID, PARTITION_OPT_CVX_END_VALID, PARTITION_OPT_CVX_BOTH_VALID};class Partition_opt_cvx_edge {public: Partition_opt_cvx_edge(): _is_done(false), _validity(PARTITION_OPT_CVX_NOT_VALID), _is_visible(false), _value(0) {} bool is_done( ) const { return _is_done; } bool is_valid( ) const { return _validity != PARTITION_OPT_CVX_NOT_VALID; } Partition_opt_cvx_edge_validity validity( ) const { return _validity; } bool is_visible( ) const { return _is_visible; } int value( ) const { return _value; } Partition_opt_cvx_diagonal_list solution( ) const { return _solution; } void set_done(bool val) { _is_done = val; } void set_valid(Partition_opt_cvx_edge_validity val) { _validity = val; } template <class Point_2_, class Traits> void set_valid(const Point_2_& p1, const Point_2_& p2, const Point_2_& p3, const Point_2_& p4, const Point_2_& p5, const Point_2_& p6, const Traits& traits) { typedef typename Traits::Left_turn_2 Left_turn_2; Left_turn_2 left_turn = traits.left_turn_2_object(); _validity = PARTITION_OPT_CVX_NOT_VALID; Turn_reverser<Point_2_, Left_turn_2> right_turn(left_turn); if (right_turn(p1, p2, p3)) _validity = PARTITION_OPT_CVX_START_VALID; if (right_turn(p4, p5, p6)) { if (_validity == PARTITION_OPT_CVX_START_VALID) _validity = PARTITION_OPT_CVX_BOTH_VALID; else _validity = PARTITION_OPT_CVX_END_VALID; } } void set_visible(bool vis) { _is_visible = vis; } void set_value(int val) { _value = val; } void set_solution(const Partition_opt_cvx_diagonal_list& diag_list) { _solution = diag_list; }private: bool _is_done; Partition_opt_cvx_edge_validity _validity; bool _is_visible; int _value; Partition_opt_cvx_diagonal_list _solution;};inlinestd::ostream& operator<<(std::ostream& os, const Partition_opt_cvx_edge& g){ if (g.is_done()) os << "1"; else os << "0"; if (g.validity() == PARTITION_OPT_CVX_NOT_VALID) os << "0"; else if (g.validity() == PARTITION_OPT_CVX_START_VALID) os << "1"; else if (g.validity() == PARTITION_OPT_CVX_END_VALID) os << "2"; else os << "3"; if (g.is_visible()) os << "1"; else os << "0"; os << g.value(); return os;}}#endif // CGAL_PARTITION_OPT_CVX_EDGE_H
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -