private void ScalePoints(int startIndex, int endIndex, float scale)
{
int pointNum = endIndex - startIndex + 1;
double xSum = 0;
double ySum = 0;
for (int i = startIndex; i <= endIndex; i++)
{
xSum += points[0][i].x;
ySum += points[0][i].y;
}
double xMean = xSum / pointNum;
double yMean = ySum / pointNum;
// scale from mean
for (int i = startIndex; i <= endIndex; i++)
{
double relativeX = points[0][i].x - xMean;
double relativeY = points[0][i].y - yMean;
relativeX *= scale;
relativeY *= scale;
points[0][i].x = relativeX + xMean;
points[0][i].y = relativeY + yMean;
}
}