From f56c63da43401ff1cce2ad69b59f8b83c9326e8c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Julia=20Fl=C3=B6totto?= Date: Tue, 27 Jan 2004 11:57:49 +0000 Subject: [PATCH] - changements concerning signature of natural_neighbor_coordinates_2 (add. bool) --- .../demo/Interpolation/demo_interpolation_2.C | 51 +++++++++++-------- .../examples/Interpolation/nn_coordinates_2.C | 19 +++++-- 2 files changed, 46 insertions(+), 24 deletions(-) diff --git a/Packages/Interpolation/demo/Interpolation/demo_interpolation_2.C b/Packages/Interpolation/demo/Interpolation/demo_interpolation_2.C index 52f6c3bcfcb..0ca8ed17b41 100644 --- a/Packages/Interpolation/demo/Interpolation/demo_interpolation_2.C +++ b/Packages/Interpolation/demo/Interpolation/demo_interpolation_2.C @@ -1,6 +1,6 @@ // ============================================================================ // -// Copyright (c) 1998-1999 The CGAL Consortium +// Copyright (c) 2003 The CGAL Consortium // // This software and related documentation is part of an INTERNAL release // of the Computational Geometry Algorithms Library (CGAL). It is not @@ -70,11 +70,15 @@ typedef K::Vector_3 Vector_3; typedef K::Segment_3 Segment_3; typedef K::Triangle_3 Triangle_3; -typedef std::map Point_value_map ; -typedef std::map Point_vector_map; +typedef std::map Point_value_map ; +typedef std::map Point_vector_map; + +typedef std::vector Point_vector_3; +typedef std::vector Point_vector_2; + +typedef std::vector< std::pair< K::Point_2, K::FT > > + Point_coordinate_vector; -typedef std::vector Point_vector_3; -typedef std::vector Point_vector_2; ////////////////////// // VISU GEOMVIEW @@ -207,47 +211,51 @@ int main(int argc, char* argv[]) //INTERPOLATION: + Point_coordinate_vector coords; + std::pair interpolation_result; Coord_type value; - std::pair res; - std::vector< std::pair< Point_2, Coord_type > > coords; int n = points.size(); ITraits traits; std::cout << "Interpolation at "<0); - - switch(method){ + CGAL::Triple< + std::back_insert_iterator, + K::FT, bool> coordinate_result = + CGAL::natural_neighbor_coordinates_2(T, points[i], + std::back_inserter(coords)); + K::FT norm = coordinate_result.second; + //test if the computation was successful + assert(coordinate_result.third && norm>0); + + switch(method){ case 0: value = CGAL::linear_interpolation(coords.begin(),coords.end(),norm, - CGAL::Data_access(values)); + CGAL::Data_access(values)); break; - case 1: - res = CGAL::quadratic_interpolation(coords.begin(),coords.end(), + case 1: + interpolation_result = CGAL::quadratic_interpolation(coords.begin(),coords.end(), norm, points[i], CGAL::Data_access< Point_value_map> (values), CGAL::Data_access< Point_vector_map> (gradients),traits); break; case 2: - res = CGAL::sibson_c1_interpolation(coords.begin(),coords.end(), + interpolation_result = CGAL::sibson_c1_interpolation(coords.begin(),coords.end(), norm, points[i], CGAL::Data_access (values), CGAL::Data_access (gradients), traits); break; case 3: - res = CGAL::sibson_c1_interpolation_square(coords.begin(),coords.end(), + interpolation_result = CGAL::sibson_c1_interpolation_square(coords.begin(),coords.end(), norm, points[i], CGAL::Data_access (values), CGAL::Data_access (gradients), traits); break; case 4: - res = CGAL::farin_c1_interpolation(coords.begin(),coords.end(), + interpolation_result = CGAL::farin_c1_interpolation(coords.begin(),coords.end(), norm, points[i], CGAL::Data_access (values), @@ -259,8 +267,9 @@ int main(int argc, char* argv[]) } if(method==0) points_3.push_back(Point_3(points[i].x(), points[i].y(),value)); - else if(res.second) - points_3.push_back(Point_3(points[i].x(), points[i].y(),res.first)); + else if(interpolation_result.second) + points_3.push_back(Point_3(points[i].x(), points[i].y(), + interpolation_result.first)); else std::cout <<"Interpolation failed"< Delaunay_triangulation; +typedef std::vector< std::pair< K::Point_2, K::FT > > + Point_coordinate_vector; int main() { @@ -21,10 +23,21 @@ int main() //coordinate computation K::Point_2 p(1.2, 0.7); - std::vector< std::pair< K::Point_2, K::FT > > coords; - K::FT norm = + Coordinate_vector coords; + CGAL::Triple< + std::back_insert_iterator, + K::FT, bool> result = CGAL::natural_neighbor_coordinates_2(dt, p, - std::back_inserter(coords)).second; + std::back_inserter(coords)); + if(!result.third){ + std::cout << "The coordinate computation was not successful." + << std::endl; + std::cout << "The point (" <