public int GetFarthestInteriorPoint (out float dist)
{
var maxIndex = -1;
var maxDist = 0.0f;
var p1 = _points [StartIndex];
var p2 = _points [EndIndex];
for (var i = StartIndex + 1; i < EndIndex; i++) {
var d = _points [i].DistanceToLine (p1, p2);
if (maxIndex == -1 || (d > maxDist)) {
maxIndex = i;
maxDist = d;
}
}
dist = maxDist;
return maxIndex;
}