getInnerCentroid method

Point getInnerCentroid()

Get the centroid of inner circle

this centroid is calculated from the center of all sides of polygon

Implementation

Point getInnerCentroid() {
  final n = vertices.length;
  var cx = 0.0;
  var cy = 0.0;
  var signedArea = 0.0;

  for (var i = 0; i < n; i++) {
    final nextI = (i + 1) % n;
    final cross = vertices[i].x * vertices[nextI].y -
        vertices[nextI].x * vertices[i].y;
    cx += (vertices[i].x + vertices[nextI].x) * cross;
    cy += (vertices[i].y + vertices[nextI].y) * cross;
    signedArea += cross;
  }

  signedArea *= 0.5;
  final factor = 1.0 / (6.0 * signedArea);
  return Point(cx * factor, cy * factor);
}