Ejemplo n.º 1
0
/////////////////////////////////////
// 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]));
}
Ejemplo n.º 2
0
/////////////////////////////////////
// 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]));

}