getInnerCircle method

Circle getInnerCircle()

Get the outer circle

formed by the inner centroid of the polygon and its radius

Implementation

Circle getInnerCircle() {
  final centroid = getInnerCentroid();

  int n = vertices.length;
  double radius = 0;
  for (int i = 0; i < n; i++) {
    int nextI = (i + 1) % n;
    int nextI2 = (i + 2) % n;

    Point a = vertices[i];
    Point b = vertices[nextI];
    double d = a.distanceTo(b);
    Point c = vertices[nextI2];
    double s = (b - a) % (c - a) / 2;
    Point p = (a + b) / 2;
    radius = max(radius, centroid.distanceTo(p) * d / s / 3);
  }
  return Circle(radius: radius, center: centroid);
}