///////////////////////////////////// // compute_convex_hull() ///////////////////////////////////// void HatchingGroupFixed::compute_convex_hull( CNDCZpt_list &pts, NDCZpt_list &hull) { size_t i, num_upper, num_lower; vector<const NDCZpt*> P, Q; hull.clear(); for (i=0; i<pts.size(); i++) P.push_back(&(pts[i])); num_lower = make_chain(P, compare_xinc_ydec); if (!num_lower) return; for (i=0; i<num_lower; i++) hull.push_back(*(P[i])); for (i=num_lower; i<P.size(); i++) Q.push_back(P[i]); Q.push_back(P[0]); num_upper = make_chain(Q, compare_xdec_yinc); for (i=0; i<num_upper; i++) hull.push_back(*(Q[i])); }
///////////////////////////////////// // compute_convex_hull() ///////////////////////////////////// void HatchingGroupFixed::compute_convex_hull( CNDCZpt_list &pts, NDCZpt_list &hull) { int i, num_upper, num_lower; ARRAY<NDCZpt*> P, Q; hull.clear(); for (i=0; i<pts.num(); i++) P.add(&(pts[i])); num_lower = make_chain(P, compare_xinc_ydec); if (!num_lower) return; for (i=0; i<num_lower; i++) hull.add(*(P[i])); for (i=num_lower; i<P.num(); i++) Q.add(P[i]); Q.add(P[0]); num_upper = make_chain(Q, compare_xdec_yinc); for (i=0; i<num_upper; i++) hull.add(*(Q[i])); }