1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
| List<Point> returnPoints = new List<Point>();
returnPoints.Add(contour[0]);
int iLastPt = 0;
for (int iCurseur = 1; iCurseur < contour.Size; iCurseur++)
{
Point currentPt = contour[iCurseur];
int iCheck = iCurseur - 1;
while ( iCheck > iLastPt)
{
Point lastPt = returnPoints[returnPoints.Count - 1];
Point checkPt = contour[iCheck];
PointF closest = PointF.Empty;
double dist = FindDistanceToSegment(checkPt, lastPt, currentPt, out closest);
if (Math.Abs(dist) > 3)
{
returnPoints.Add(checkPt);
iLastPt = iCheck;
continue;
}
iCheck--;
}
} |
Partager