1
0
Fork 0

Revert "Minor style fixup of calc_points_inside()."

This reverts commit 28c2bb1971894be175a51232e0502882683fc3e8.
This commit is contained in:
Ralf Gerlich 2008-08-25 11:32:49 +02:00
parent fe3f38c662
commit aa03c7c2f5

View file

@ -626,6 +626,20 @@ static void calc_point_inside( TGContourNode *node, TGPolygon &p ) {
if ( contour_num < 0 ) if ( contour_num < 0 )
return; return;
/*
* Find a line intersecting the contour and intersect it with the segments
* of our children. Sort the intersection points along the line. They then
* partition the line in IN/OUT parts. Find the longest segment and take
* its midpoint as point inside the contour.
*/
/*
* Try to find a line on which none of the contour points lie. For that,
* sort all contour points (also those of our direct children) by
* y-coordinate, find the two with the largest distance and take their
* center y-coordinate.
*/
point_list allpoints; point_list allpoints;
collect_contour_points( node, p, allpoints ); collect_contour_points( node, p, allpoints );
@ -642,21 +656,24 @@ static void calc_point_inside( TGContourNode *node, TGPolygon &p ) {
sort(allpoints.begin(), allpoints.end(), Point3DOrdering(PY)); sort(allpoints.begin(), allpoints.end(), Point3DOrdering(PY));
// cout << "calc_point_inside() " << allpoints.size() << " points ";
// copy(allpoints.begin(), allpoints.end(), ostream_iterator<Point3D>(cout, " "));
// cout << endl;
point_list::iterator point_it; point_list::iterator point_it;
point_it=allpoints.begin(); point_it=allpoints.begin();
for (++point_it;point_it!=allpoints.end();++point_it) { double yline; // the y-location of the intersection line
while ((++point_it) != allpoints.end()) {
double diff=point_it->y()-(point_it-1)->y(); double diff=point_it->y()-(point_it-1)->y();
// cout << "calc_point_inside() diff=" << diff << endl;
if (diff<=8.0*SG_EPSILON) { if (diff<=8.0*SG_EPSILON) {
continue; continue;
} }
double yline=point_it->y()-diff/2.0; // the y-location of the intersection line yline=point_it->y()-diff/2.0;
// cout << "calc_point_inside() " << allpoints.size() << " points ";
// copy(allpoints.begin(), allpoints.end(), ostream_iterator<Point3D>(cout, " "));
// cout << endl;
// cout << "calc_point_inside() maxdiff=" << maxdiff << " yline=" << yline << endl;
vector < double > xcuts; vector < double > xcuts;