How to draw a polygon from a set of unordered points

前端 未结 3 464
囚心锁ツ
囚心锁ツ 2021-01-01 01:19

Currently, I am using a convex hull algorithm to get the outer most points from a set of points randomly placed. What I aim to do is draw a polygon from the set of points re

3条回答
  •  渐次进展
    2021-01-01 02:09

    I had an issue where a random set of points were generated from which a wrapped elevation vector needed a base contour. Having read the link supplied by @user1149913 and found a sample of gift-wrapping a hull, the following is a sample of my implementation:

      private static PointCollection CalculateContour (List points) {
         // locate lower-leftmost point
         int hull = 0;
         int i;
         for (i = 1 ; i < points.Count ; i++) {
            if (ComparePoint(points[i], points[hull])) {
               hull = i;
            }
         }
    
         // wrap contour
         var outIndices = new int[points.Count];
         int endPt;
         i = 0;
         do {
            outIndices[i++] = hull;
            endPt = 0;
            for (int j = 1 ; j < points.Count ; j++)
               if (hull == endPt || IsLeft(points[hull], points[endPt], points[j]))
                  endPt = j;
            hull = endPt;
         } while (endPt != outIndices[0]);
    
         // build countour points
         var contourPoints = new PointCollection(points.Capacity);
         int results = i;
         for (i = 0 ; i < results ; i++)
            contourPoints.Add(points[outIndices[i]]);
         return contourPoints;
      }
    

提交回复
热议问题