From dd79ec1fdfd7c8e685e42ff9bd3469fc7e4e2981 Mon Sep 17 00:00:00 2001 From: Pierre Alliez Date: Thu, 17 Jan 2008 13:55:43 +0000 Subject: [PATCH] PCA: the test suit works fine on Windows --- .../CGAL/linear_least_squares_fitting_2.h | 58 +++++-------- .../linear_least_squares_fitting_circles_2.h | 8 +- .../linear_least_squares_fitting_points_2.h | 6 +- ...inear_least_squares_fitting_rectangles_2.h | 8 +- .../linear_least_squares_fitting_segments_2.h | 4 +- ...linear_least_squares_fitting_triangles_2.h | 82 ++++++++++--------- ...linear_least_squares_fitting_circles_2.cpp | 29 +++---- .../linear_least_squares_fitting_points_2.cpp | 4 +- ...ear_least_squares_fitting_rectangles_2.cpp | 5 -- ...inear_least_squares_fitting_segments_2.cpp | 11 +-- ...near_least_squares_fitting_triangles_2.cpp | 45 +++++----- 11 files changed, 110 insertions(+), 150 deletions(-) diff --git a/Principal_component_analysis/include/CGAL/linear_least_squares_fitting_2.h b/Principal_component_analysis/include/CGAL/linear_least_squares_fitting_2.h index acbe2fd29e7..f3c8c35489a 100644 --- a/Principal_component_analysis/include/CGAL/linear_least_squares_fitting_2.h +++ b/Principal_component_analysis/include/CGAL/linear_least_squares_fitting_2.h @@ -35,74 +35,58 @@ CGAL_BEGIN_NAMESPACE template < typename InputIterator, - typename K , typename tag> + typename Kernel, + typename Tag> inline -typename K::FT +typename Kernel::FT linear_least_squares_fitting_2(InputIterator first, InputIterator beyond, - typename K::Line_2& line, - typename K::Point_2& centroid, - const K& k, - const tag& t) + typename Kernel::Line_2& line, + typename Kernel::Point_2& centroid, + const Tag& tag, + const Kernel& kernel) { typedef typename std::iterator_traits::value_type Value_type; return CGALi::linear_least_squares_fitting_2(first, beyond, line, - centroid, k, (Value_type*) NULL, t); -} - -template < typename InputIterator, - typename K, typename tag > -inline -typename K::FT -linear_least_squares_fitting_2(InputIterator first, - InputIterator beyond, - typename K::Line_2& line, - const K& k, - const tag& t) -{ - typedef typename std::iterator_traits::value_type Value_type; - // BOOST_STATIC_ASSERT((boost::is_same::Algebraic_category,CGAL::Field_with_sqrt_tag>::value)); - typename K::Point_2 centroid; - return CGALi::linear_least_squares_fitting_2(first, beyond, line, - centroid, k,(Value_type*) NULL, t); + centroid,(Value_type*)NULL,kernel,tag); } // deduces the kernel from the points in container. template < typename InputIterator, typename Line, - typename tag> + typename Point, + typename Tag> inline typename Kernel_traits::Kernel::FT linear_least_squares_fitting_2(InputIterator first, InputIterator beyond, Line& line, - typename Kernel_traits::Kernel::Point_2& centroid, - const tag& t) + Point& centroid, + const Tag& tag) { typedef typename std::iterator_traits::value_type Value_type; - typedef typename Kernel_traits::Kernel K; - return CGAL::linear_least_squares_fitting_2(first,beyond,line,centroid,K(), t); + typedef typename Kernel_traits::Kernel Kernel; + return CGAL::linear_least_squares_fitting_2(first,beyond,line,centroid,tag,Kernel()); } -// does not return the centroid and deduces the kernel as well. + template < typename InputIterator, typename Line, - typename tag > + typename Tag > inline typename Kernel_traits::Kernel::FT linear_least_squares_fitting_2(InputIterator first, InputIterator beyond, Line& line, - const tag& t) + const Tag& tag) { typedef typename std::iterator_traits::value_type Value_type; - typedef typename Kernel_traits::Kernel K; - return CGAL::linear_least_squares_fitting_2(first,beyond,line,K(), t); + typedef typename Kernel_traits::Kernel Kernel; + typename Kernel::Point_2 centroid; // unused + return CGAL::linear_least_squares_fitting_2(first,beyond,line,centroid,tag,Kernel()); } + CGAL_END_NAMESPACE - // BOOST_STATIC_ASSERT((boost::is_same::Algebraic_category,CGAL::Field_with_sqrt_tag>::value)); - - #endif // CGAL_LINEAR_LEAST_SQUARES_FITTING_2_H diff --git a/Principal_component_analysis/include/CGAL/linear_least_squares_fitting_circles_2.h b/Principal_component_analysis/include/CGAL/linear_least_squares_fitting_circles_2.h index 89b678c2e9b..14be45458b7 100644 --- a/Principal_component_analysis/include/CGAL/linear_least_squares_fitting_circles_2.h +++ b/Principal_component_analysis/include/CGAL/linear_least_squares_fitting_circles_2.h @@ -46,9 +46,9 @@ linear_least_squares_fitting_2(InputIterator first, InputIterator beyond, typename K::Line_2& line, // best fit line typename K::Point_2& c, // centroid - const K&, // kernel const typename K::Circle_2*,// used for indirection - const CGAL::PCA_dimension_2_tag& tag) + const K&, // kernel + const CGAL::PCA_dimension_2_tag& tag) { // types typedef typename K::FT FT; @@ -155,9 +155,9 @@ linear_least_squares_fitting_2(InputIterator first, InputIterator beyond, typename K::Line_2& line, // best fit line typename K::Point_2& c, // centroid - const K&, // kernel const typename K::Circle_2*,// used for indirection - const CGAL::PCA_dimension_1_tag& tag) + const K&, // kernel + const CGAL::PCA_dimension_1_tag& tag) { // types typedef typename K::FT FT; diff --git a/Principal_component_analysis/include/CGAL/linear_least_squares_fitting_points_2.h b/Principal_component_analysis/include/CGAL/linear_least_squares_fitting_points_2.h index d2592e62e9d..1b810b3f323 100644 --- a/Principal_component_analysis/include/CGAL/linear_least_squares_fitting_points_2.h +++ b/Principal_component_analysis/include/CGAL/linear_least_squares_fitting_points_2.h @@ -43,9 +43,9 @@ linear_least_squares_fitting_2(InputIterator first, InputIterator beyond, typename K::Line_2& line, // best fit line typename K::Point_2& c, // centroid - const K&, // kernel const typename K::Point_2*,// used for indirection - const CGAL::PCA_dimension_0_tag& tag = CGAL::PCA_dimension_0_tag()) + const K&, // kernel + const CGAL::PCA_dimension_0_tag& tag) { // types typedef typename K::FT FT; @@ -59,7 +59,7 @@ linear_least_squares_fitting_2(InputIterator first, CGAL_precondition(first != beyond); // compute centroid - c = centroid(first,beyond,K(),t); + c = centroid(first,beyond,K(),tag); // assemble covariance matrix as a semi-definite matrix. // Matrix numbering: diff --git a/Principal_component_analysis/include/CGAL/linear_least_squares_fitting_rectangles_2.h b/Principal_component_analysis/include/CGAL/linear_least_squares_fitting_rectangles_2.h index 84e40040224..3d3436460fc 100644 --- a/Principal_component_analysis/include/CGAL/linear_least_squares_fitting_rectangles_2.h +++ b/Principal_component_analysis/include/CGAL/linear_least_squares_fitting_rectangles_2.h @@ -46,9 +46,9 @@ linear_least_squares_fitting_2(InputIterator first, InputIterator beyond, typename K::Line_2& line, // best fit line typename K::Point_2& c, // centroid - const K&, // kernel const typename K::Iso_rectangle_2*,// used for indirection - const CGAL::PCA_dimension_2_tag& tag = CGAL::PCA_dimension_2_tag()) + const K&, // kernel + const CGAL::PCA_dimension_2_tag& tag) { // types typedef typename K::FT FT; @@ -158,8 +158,8 @@ linear_least_squares_fitting_2(InputIterator first, InputIterator beyond, typename K::Line_2& line, // best fit line typename K::Point_2& c, // centroid - const K&, // kernel const typename K::Iso_rectangle_2*,// used for indirection + const K&, // kernel const CGAL::PCA_dimension_1_tag& tag) { // types @@ -194,8 +194,8 @@ linear_least_squares_fitting_2(InputIterator first, InputIterator beyond, typename K::Line_2& line, // best fit line typename K::Point_2& c, // centroid - const K&, // kernel const typename K::Iso_rectangle_2*,// used for indirection + const K&, // kernel const CGAL::PCA_dimension_0_tag& tag) { // types diff --git a/Principal_component_analysis/include/CGAL/linear_least_squares_fitting_segments_2.h b/Principal_component_analysis/include/CGAL/linear_least_squares_fitting_segments_2.h index 8547de29725..9e6f9f31322 100644 --- a/Principal_component_analysis/include/CGAL/linear_least_squares_fitting_segments_2.h +++ b/Principal_component_analysis/include/CGAL/linear_least_squares_fitting_segments_2.h @@ -46,8 +46,8 @@ linear_least_squares_fitting_2(InputIterator first, InputIterator beyond, typename K::Line_2& line, // best fit line typename K::Point_2& c, // centroid - const K&, // kernel const typename K::Segment_2*,// used for indirection + const K&, // kernel const CGAL::PCA_dimension_1_tag& tag = CGAL::PCA_dimension_1_tag()) { // types @@ -145,8 +145,8 @@ linear_least_squares_fitting_2(InputIterator first, InputIterator beyond, typename K::Line_2& line, // best fit line typename K::Point_2& c, // centroid - const K& k, // kernel const typename K::Segment_2*,// used for indirection + const K& k, // kernel const CGAL::PCA_dimension_0_tag& tag) { // types diff --git a/Principal_component_analysis/include/CGAL/linear_least_squares_fitting_triangles_2.h b/Principal_component_analysis/include/CGAL/linear_least_squares_fitting_triangles_2.h index b62ea024362..6e04b4223bb 100644 --- a/Principal_component_analysis/include/CGAL/linear_least_squares_fitting_triangles_2.h +++ b/Principal_component_analysis/include/CGAL/linear_least_squares_fitting_triangles_2.h @@ -41,31 +41,31 @@ namespace CGALi { // 0 is worst (isotropic case, returns a line with horizontal // direction by default) -template < typename InputIterator, typename K > -typename K::FT +template < typename InputIterator, + typename Kernel > +typename Kernel::FT linear_least_squares_fitting_2(InputIterator first, InputIterator beyond, - typename K::Line_2& line, // best fit line - typename K::Point_2& c, // centroid - const K&, // kernel - const typename K::Triangle_2*,// used for indirection - const CGAL::PCA_dimension_2_tag& tag) + typename Kernel::Line_2& line, // best fit line + typename Kernel::Point_2& c, // centroid + const typename Kernel::Triangle_2*,// used for indirection + const Kernel&, // kernel + const CGAL::PCA_dimension_2_tag& tag) { // types - typedef typename K::FT FT; - typedef typename K::Line_2 Line; - typedef typename K::Point_2 Point; - typedef typename K::Vector_2 Vector; - typedef typename K::Triangle_2 Triangle; + typedef typename Kernel::FT FT; + typedef typename Kernel::Line_2 Line; + typedef typename Kernel::Point_2 Point; + typedef typename Kernel::Vector_2 Vector; + typedef typename Kernel::Triangle_2 Triangle; typedef typename CGAL::Linear_algebraCd LA; typedef typename LA::Matrix Matrix; - typedef typename K::Segment_2 Segment_2; // precondition: at least one element in the container. CGAL_precondition(first != beyond); // compute centroid - c = centroid(first,beyond,K(),tag); + c = centroid(first,beyond,Kernel(),tag); // assemble covariance matrix as a semi-definite matrix. // Matrix numbering: @@ -79,7 +79,7 @@ linear_least_squares_fitting_2(InputIterator first, FT temp[4] = {1/12.0, 1/24.0, 1/24.0, 1/12.0}; - Matrix moment = init_matrix(2,temp); + Matrix moment = init_matrix(2,temp); for(InputIterator it = first; it != beyond; @@ -95,7 +95,7 @@ linear_least_squares_fitting_2(InputIterator first, FT delta[4] = {t[1].x() - x0, t[2].x() - x0, t[1].y() - y0, t[2].y() - y0}; - Matrix transformation = init_matrix(2,delta); + Matrix transformation = init_matrix(2,delta); FT area = 0.5 * std::abs(LA::determinant(transformation)); CGAL_assertion(area!=0); @@ -151,19 +151,20 @@ linear_least_squares_fitting_2(InputIterator first, } } // end linear_least_squares_fitting_2 for triangle set with 2D tag -template < typename InputIterator, typename K > -typename K::FT +template < typename InputIterator, + typename Kernel > +typename Kernel::FT linear_least_squares_fitting_2(InputIterator first, InputIterator beyond, - typename K::Line_2& line, // best fit line - typename K::Point_2& c, // centroid - const K&, // kernel - const typename K::Triangle_2*,// used for indirection + typename Kernel::Line_2& line, // best fit line + typename Kernel::Point_2& c, // centroid + const typename Kernel::Triangle_2*,// used for indirection + const Kernel&, // kernel const CGAL::PCA_dimension_1_tag& tag) { // types - typedef typename K::Triangle_2 Triangle; - typedef typename K::Segment_2 Segment_2; + typedef typename Kernel::Triangle_2 Triangle; + typedef typename Kernel::Segment_2 Segment; // precondition: at least one element in the container. CGAL_precondition(first != beyond); @@ -174,29 +175,30 @@ linear_least_squares_fitting_2(InputIterator first, it++) { const Triangle& t = *it; - segments.push_back(Segment_2(t[0],t[1])); - segments.push_back(Segment_2(t[1],t[2])); - segments.push_back(Segment_2(t[2],t[0])); + segments.push_back(Segment(t[0],t[1])); + segments.push_back(Segment(t[1],t[2])); + segments.push_back(Segment(t[2],t[0])); } - return linear_least_squares_fitting_2(segments.begin(),segments.end(),line,c,K(),tag); + return linear_least_squares_fitting_2(segments.begin(),segments.end(),line,c,tag,Kernel()); } // end linear_least_squares_fitting_2 for triangle set with 1D tag -template < typename InputIterator, typename K > -typename K::FT +template < typename InputIterator, + typename Kernel > +typename Kernel::FT linear_least_squares_fitting_2(InputIterator first, InputIterator beyond, - typename K::Line_2& line, // best fit line - typename K::Point_2& c, // centroid - const K&, // kernel - const typename K::Triangle_2*,// used for indirection + typename Kernel::Line_2& line, // best fit line + typename Kernel::Point_2& c, // centroid + const typename Kernel::Triangle_2*,// used for indirection + const Kernel&, // kernel const CGAL::PCA_dimension_0_tag& tag) { // types - typedef typename K::Triangle_2 Triangle; - typedef typename K::Point_2 Point_2; + typedef typename Kernel::Triangle_2 Triangle; + typedef typename Kernel::Point_2 Point; // precondition: at least one element in the container. CGAL_precondition(first != beyond); @@ -207,12 +209,12 @@ linear_least_squares_fitting_2(InputIterator first, it++) { const Triangle& t = *it; - points.push_back(Point_2(t[0])); - points.push_back(Point_2(t[1])); - points.push_back(Point_2(t[2])); + points.push_back(Point(t[0])); + points.push_back(Point(t[1])); + points.push_back(Point(t[2])); } - return linear_least_squares_fitting_2(points.begin(),points.end(),line,c,K(),tag); + return linear_least_squares_fitting_2(points.begin(),points.end(),line,c,tag,Kernel()); } // end linear_least_squares_fitting_2 for triangle set with 0D tag diff --git a/Principal_component_analysis/test/Principal_component_analysis/linear_least_squares_fitting_circles_2.cpp b/Principal_component_analysis/test/Principal_component_analysis/linear_least_squares_fitting_circles_2.cpp index 360c1826c91..ad3fa056b2a 100644 --- a/Principal_component_analysis/test/Principal_component_analysis/linear_least_squares_fitting_circles_2.cpp +++ b/Principal_component_analysis/test/Principal_component_analysis/linear_least_squares_fitting_circles_2.cpp @@ -7,32 +7,25 @@ typedef double FT; typedef CGAL::Cartesian K; -typedef K::Line_2 Line_2; -typedef K::Point_2 Point_2; -typedef K::Circle_2 Circle_2; +typedef K::Line_2 Line; +typedef K::Point_2 Point; +typedef K::Circle_2 Circle; int main() { - std::list circles; - circles.push_back(Circle_2(Point_2(0.0,0.0),9)); - circles.push_back(Circle_2(Point_2(0.0,10.0),49)); - circles.push_back(Circle_2(Point_2(10.0,0.0),49)); + std::list circles; + circles.push_back(Circle(Point(0.0, 0.0),9.0)); + circles.push_back(Circle(Point(0.0,10.0),49.0)); + circles.push_back(Circle(Point(10.0,0.0),49.0)); - Line_2 line; - Point_2 c; - K k; + Line line; + Point centroid; linear_least_squares_fitting_2(circles.begin(),circles.end(),line,CGAL::PCA_dimension_2_tag()); linear_least_squares_fitting_2(circles.begin(),circles.end(),line,CGAL::PCA_dimension_1_tag()); - linear_least_squares_fitting_2(circles.begin(),circles.end(),line,c,CGAL::PCA_dimension_2_tag()); - linear_least_squares_fitting_2(circles.begin(),circles.end(),line,c,CGAL::PCA_dimension_1_tag()); - - linear_least_squares_fitting_2(circles.begin(),circles.end(),line,k,CGAL::PCA_dimension_2_tag()); - linear_least_squares_fitting_2(circles.begin(),circles.end(),line,k,CGAL::PCA_dimension_1_tag()); - - linear_least_squares_fitting_2(circles.begin(),circles.end(),line,c,k,CGAL::PCA_dimension_2_tag()); - linear_least_squares_fitting_2(circles.begin(),circles.end(),line,c,k,CGAL::PCA_dimension_1_tag()); + linear_least_squares_fitting_2(circles.begin(),circles.end(),line,centroid,CGAL::PCA_dimension_2_tag()); + linear_least_squares_fitting_2(circles.begin(),circles.end(),line,centroid,CGAL::PCA_dimension_1_tag()); return 0; } diff --git a/Principal_component_analysis/test/Principal_component_analysis/linear_least_squares_fitting_points_2.cpp b/Principal_component_analysis/test/Principal_component_analysis/linear_least_squares_fitting_points_2.cpp index bb0131b427a..7a479da5ced 100644 --- a/Principal_component_analysis/test/Principal_component_analysis/linear_least_squares_fitting_points_2.cpp +++ b/Principal_component_analysis/test/Principal_component_analysis/linear_least_squares_fitting_points_2.cpp @@ -36,7 +36,7 @@ void test_2D() FT quality; quality = linear_least_squares_fitting_2(points.begin(),points.end(),line,CGAL::PCA_dimension_0_tag()); quality = linear_least_squares_fitting_2(points.begin(),points.end(),line,centroid,CGAL::PCA_dimension_0_tag()); - quality = linear_least_squares_fitting_2(points.begin(),points.end(),line,centroid,k,CGAL::PCA_dimension_0_tag()); + quality = linear_least_squares_fitting_2(points.begin(),points.end(),line,centroid,CGAL::PCA_dimension_0_tag(),k); std::cout << "done (quality: " << quality << ")" << std::endl; if(!line.is_horizontal()) @@ -71,7 +71,7 @@ void test_2D_point_set(const unsigned int nb_points) Kernel k; quality = linear_least_squares_fitting_2(points.begin(),points.end(),line,CGAL::PCA_dimension_0_tag()); quality = linear_least_squares_fitting_2(points.begin(),points.end(),line,centroid,CGAL::PCA_dimension_0_tag()); - quality = linear_least_squares_fitting_2(points.begin(),points.end(),line,centroid,k,CGAL::PCA_dimension_0_tag()); + quality = linear_least_squares_fitting_2(points.begin(),points.end(),line,centroid,CGAL::PCA_dimension_0_tag(),k); std::cout << "done (quality: " << quality << ")" << std::endl; diff --git a/Principal_component_analysis/test/Principal_component_analysis/linear_least_squares_fitting_rectangles_2.cpp b/Principal_component_analysis/test/Principal_component_analysis/linear_least_squares_fitting_rectangles_2.cpp index e8100589c63..72e557a3a5b 100644 --- a/Principal_component_analysis/test/Principal_component_analysis/linear_least_squares_fitting_rectangles_2.cpp +++ b/Principal_component_analysis/test/Principal_component_analysis/linear_least_squares_fitting_rectangles_2.cpp @@ -40,7 +40,6 @@ void test_1() FT quality; quality = linear_least_squares_fitting_2(Iso_rectangles.begin(),Iso_rectangles.end(),line,CGAL::PCA_dimension_2_tag()); quality = linear_least_squares_fitting_2(Iso_rectangles.begin(),Iso_rectangles.end(),line,centroid,CGAL::PCA_dimension_2_tag()); - quality = linear_least_squares_fitting_2(Iso_rectangles.begin(),Iso_rectangles.end(),line,centroid,k,CGAL::PCA_dimension_2_tag()); std::cout << "done (quality: " << quality << ") Line: " << line< points; @@ -144,7 +138,6 @@ void test_4() FT quality1; quality1 = linear_least_squares_fitting_2(points.begin(),points.end(),line1,CGAL::PCA_dimension_0_tag()); quality1 = linear_least_squares_fitting_2(points.begin(),points.end(),line1,centroid1,CGAL::PCA_dimension_0_tag()); - quality1 = linear_least_squares_fitting_2(points.begin(),points.end(),line1,centroid1,k1,CGAL::PCA_dimension_0_tag()); std::cout << "done (quality: " << quality1 << ")" <<" line: "< Iso_rectangles; - Iso_rectangles.push_back(Iso_rectangle_2(Point_2(1.6,15.2),Point_2(11.6,19.2))); + std::list iso_rectangles; + iso_rectangles.push_back(Iso_rectangle_2(Point_2(1.6,15.2),Point_2(11.6,19.2))); // fit a line // call all versions of the function @@ -37,15 +37,14 @@ void test_1() Line_2 line; Point_2 centroid; FT quality; - quality = linear_least_squares_fitting_2(Iso_rectangles.begin(),Iso_rectangles.end(),line,CGAL::PCA_dimension_2_tag()); - quality = linear_least_squares_fitting_2(Iso_rectangles.begin(),Iso_rectangles.end(),line,centroid,CGAL::PCA_dimension_2_tag()); - quality = linear_least_squares_fitting_2(Iso_rectangles.begin(),Iso_rectangles.end(),line,centroid,k,CGAL::PCA_dimension_2_tag()); + quality = linear_least_squares_fitting_2(iso_rectangles.begin(),iso_rectangles.end(),line,CGAL::PCA_dimension_2_tag()); + quality = linear_least_squares_fitting_2(iso_rectangles.begin(),iso_rectangles.end(),line,centroid,CGAL::PCA_dimension_2_tag()); std::cout << "done (quality: " << quality << ") Line: " << line<<" centroid: "< Triangles1; - Triangles1.push_back(Triangle_2(Point_2(1.6,15.2),Point_2(1.6,19.2),Point_2(11.6,19.2))); - Triangles1.push_back(Triangle_2(Point_2(1.6,15.2),Point_2(11.6,19.2),Point_2(11.6,15.2))); + std::list triangles1; + triangles1.push_back(Triangle_2(Point_2(1.6,15.2),Point_2(1.6,19.2),Point_2(11.6,19.2))); + triangles1.push_back(Triangle_2(Point_2(1.6,15.2),Point_2(11.6,19.2),Point_2(11.6,15.2))); // fit a line // call all versions of the function @@ -54,9 +53,8 @@ void test_1() Line_2 line1; Point_2 centroid1; FT quality1; - quality1 = linear_least_squares_fitting_2(Triangles1.begin(),Triangles1.end(),line1,CGAL::PCA_dimension_2_tag()); - quality1 = linear_least_squares_fitting_2(Triangles1.begin(),Triangles1.end(),line1,centroid1,CGAL::PCA_dimension_2_tag()); - quality1 = linear_least_squares_fitting_2(Triangles1.begin(),Triangles1.end(),line1,centroid1,k1,CGAL::PCA_dimension_2_tag()); + quality1 = linear_least_squares_fitting_2(triangles1.begin(),triangles1.end(),line1,CGAL::PCA_dimension_2_tag()); + quality1 = linear_least_squares_fitting_2(triangles1.begin(),triangles1.end(),line1,centroid1,CGAL::PCA_dimension_2_tag()); std::cout << "done (quality: " << quality1 << ") Line: " << line1<<" centroid: "< Iso_rectangles; - Iso_rectangles.push_back(Iso_rectangle_2(Point_2(1.6,15.2),Point_2(11.6,19.2))); + std::list iso_rectangles; + iso_rectangles.push_back(Iso_rectangle_2(Point_2(1.6,15.2),Point_2(11.6,19.2))); // fit a line // call all versions of the function @@ -82,17 +80,15 @@ void test_2() Line_2 line; Point_2 centroid; FT quality; - quality = linear_least_squares_fitting_2(Iso_rectangles.begin(),Iso_rectangles.end(),line,CGAL::PCA_dimension_2_tag()); - quality = linear_least_squares_fitting_2(Iso_rectangles.begin(),Iso_rectangles.end(),line,centroid,CGAL::PCA_dimension_2_tag()); - quality = linear_least_squares_fitting_2(Iso_rectangles.begin(),Iso_rectangles.end(),line,centroid,k,CGAL::PCA_dimension_2_tag()); + quality = linear_least_squares_fitting_2(iso_rectangles.begin(),iso_rectangles.end(),line,CGAL::PCA_dimension_2_tag()); + quality = linear_least_squares_fitting_2(iso_rectangles.begin(),iso_rectangles.end(),line,centroid,CGAL::PCA_dimension_2_tag()); std::cout << "done (quality: " << quality << ") Line: " << line<<" centroid: "< Triangles1; - Triangles1.push_back(Triangle_2(Point_2(1.6,15.2),Point_2(1.6,19.2),Point_2(6.6,17.2))); - Triangles1.push_back(Triangle_2(Point_2(11.6,19.2),Point_2(11.6,15.2),Point_2(6.6,17.2))); - Triangles1.push_back(Triangle_2(Point_2(1.6,19.2),Point_2(11.6,19.2),Point_2(6.6,17.2))); - Triangles1.push_back(Triangle_2(Point_2(1.6,15.2),Point_2(11.6,15.2),Point_2(6.6,17.2))); + std::list triangles1; + triangles1.push_back(Triangle_2(Point_2(1.6,15.2),Point_2(1.6,19.2),Point_2(6.6,17.2))); + triangles1.push_back(Triangle_2(Point_2(11.6,19.2),Point_2(11.6,15.2),Point_2(6.6,17.2))); + triangles1.push_back(Triangle_2(Point_2(1.6,19.2),Point_2(11.6,19.2),Point_2(6.6,17.2))); + triangles1.push_back(Triangle_2(Point_2(1.6,15.2),Point_2(11.6,15.2),Point_2(6.6,17.2))); // fit a line // call all versions of the function @@ -101,9 +97,8 @@ void test_2() Line_2 line1; Point_2 centroid1; FT quality1; - quality1 = linear_least_squares_fitting_2(Triangles1.begin(),Triangles1.end(),line1,CGAL::PCA_dimension_2_tag()); - quality1 = linear_least_squares_fitting_2(Triangles1.begin(),Triangles1.end(),line1,centroid1,CGAL::PCA_dimension_2_tag()); - quality1 = linear_least_squares_fitting_2(Triangles1.begin(),Triangles1.end(),line1,centroid1,k1,CGAL::PCA_dimension_2_tag()); + quality1 = linear_least_squares_fitting_2(triangles1.begin(),triangles1.end(),line1,CGAL::PCA_dimension_2_tag()); + quality1 = linear_least_squares_fitting_2(triangles1.begin(),triangles1.end(),line1,centroid1,CGAL::PCA_dimension_2_tag()); std::cout << "done (quality: " << quality1 << ") Line: " << line1<<" centroid: "<