// Copyright (c) 2006 Fernando Luis Cacciola Carballal. All rights reserved. // // This file is part of CGAL (www.cgal.org). // You can redistribute it and/or modify it under the terms of the GNU // General Public License as published by the Free Software Foundation, // either version 3 of the License, or (at your option) any later version. // // 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$ // $Id$ // // Author(s) : Fernando Cacciola // #ifndef CGAL_POLYGON_OFFSET_PRED_FTC2_H #define CGAL_POLYGON_OFFSET_PRED_FTC2_H 1 #include namespace CGAL { namespace CGAL_SS_i { // Given a triple of oriented straight line segments: (e0,e1,e2) such that // there exists a distance 'et' for which the offsets lines at 'et' (e0',e1',e2') intersect in a single point; // returns the relative order of 't' w.r.t 'et'. // PRECONDITION: There exist a positive distance et for which the offset triple intersect at a single point. template Uncertain compare_offset_against_isec_timeC2 ( typename K::FT const& t, intrusive_ptr< Trisegment_2 > const& tri ) { typedef typename K::FT FT ; typedef Rational Rational ; typedef Quotient Quotient ; typedef optional Optional_rational ; Uncertain rResult = Uncertain::indeterminate(); Optional_rational et_ = compute_offset_lines_isec_timeC2(tri); if ( et_ ) { Quotient et = et_->to_quotient(); CGAL_assertion ( CGAL_NTS certified_is_positive(et) ) ; rResult = CGAL_NTS certified_compare( Quotient(t), et); } return rResult ; } } // namespace CGAL_SS_i } // end namespace CGAL #endif // CGAL_POLYGON_OFFSET_PRED_FTC2_H // // EOF //