private void FindCenterFromCandidates(IList<Point> contour, IList<Point> candidates)
{
double[] distances = new double[candidates.Count];
Parallel.For(0, candidates.Count, (index) =>
{
distances[index] = FindMaxDistance(contour, candidates[index]);
});
double maxDistance = this.result == null ? 0 : this.result.DistanceToContour;
int maxIndex = -1;
for (int index = 0; index < distances.Length; index++)
{
if (distances[index] > maxDistance)
{
maxDistance = distances[index];
maxIndex = index;
}
}
if (maxIndex >= 0)
{
this.result = new Palm(candidates[maxIndex], maxDistance);
}
}