containsPointPolygon method

bool containsPointPolygon(
  1. Float32List polygon,
  2. double x,
  3. double y
)

Implementation

bool containsPointPolygon(Float32List polygon, double x, double y) {
  final Float32List vertices = polygon;
  final int nn = polygon.length;

  int prevIndex = nn - 2;
  bool inside = false;
  for (int ii = 0; ii < nn; ii += 2) {
    final double vertexY = vertices[ii + 1];
    final double prevY = vertices[prevIndex + 1];
    if ((vertexY < y && prevY >= y) || (prevY < y && vertexY >= y)) {
      final double vertexX = vertices[ii];
      if (vertexX +
              (y - vertexY) /
                  (prevY - vertexY) *
                  (vertices[prevIndex] - vertexX) <
          x) inside = !inside;
    }
    prevIndex = ii;
  }
  return inside;
}