private Point FindPointInDistance(Point candidatePoint, int startIndex, Func<int, int> directionFunc)
{
int resultIndex = startIndex;
do
{
resultIndex = directionFunc(resultIndex);
if (resultIndex < 0)
{
resultIndex = contourPoints.Count - 1;
}
if (resultIndex >= contourPoints.Count)
{
resultIndex = 0;
}
}
while (Point.Distance(candidatePoint, this.contourPoints[resultIndex]) < this.settings.MinimumDistanceIntersectionPoints && resultIndex != startIndex);
return this.contourPoints[resultIndex];
}
}