Advertisement
Guest User

topkek

a guest
Sep 1st, 2015
58
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 1.78 KB | None | 0 0
  1. var radius = data.Item2;
  2.                 var segments = input.Strokes.Select(s => s.Points.Select(p => new Vector2 { X = (float)p.X, Y = (float)p.Y }).ToArray()).ToList();
  3.                 var loopPoint = segments[0][0];
  4.  
  5.                 var currentSegment = 0;
  6.                 var runAlgo = true;
  7.                 while (runAlgo)
  8.                 {
  9.                     var idRef = currentSegment;
  10.                     for (int i = segments[currentSegment].Length - 1; i > 0; i--)
  11.                     {
  12.                         var neighbors = segments.Except(new[] { segments[currentSegment] })
  13.                             .Where(s => s.Any(p => Vector2.Distance(p, segments[currentSegment][i]) <= radius));
  14.                         if(neighbors.Count() == 0)
  15.                         {
  16.                             continue;
  17.                         }
  18.                         var min = neighbors.Min(s => s.Min(p => Vector2.Distance(p, segments[currentSegment][i])));
  19.                         var closestNeighbor = neighbors.First(s => s.Min(p => Vector2.Distance(p, segments[currentSegment][i])) == min);
  20.                         var index = segments.IndexOf(closestNeighbor);
  21.                         currentSegment = index;
  22.                         var point = segments[index].First(p => Vector2.Distance(p, segments[currentSegment][i]) == min);
  23.                         if(point == loopPoint)
  24.                         {
  25.                             runAlgo = false;
  26.                             respectRatio = min / (float)radius;
  27.                         }
  28.                         break;
  29.                     }
  30.                     if(idRef == currentSegment)
  31.                     {
  32.                         runAlgo = false;
  33.                         respected = false;
  34.                     }
  35.                 }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement