private static Point2D getPolygonSansHolesCentroid(Polygon polygon) { int pointCount = polygon.getPointCount(); double xSum = 0; double ySum = 0; double signedArea = 0; Point2D current = new Point2D(); Point2D next = new Point2D(); for (int i = 0; i < pointCount; i++) { polygon.getXY(i, current); polygon.getXY((i + 1) % pointCount, next); double ladder = current.x * next.y - next.x * current.y; xSum += (current.x + next.x) * ladder; ySum += (current.y + next.y) * ladder; signedArea += ladder / 2; } return new Point2D(xSum / (signedArea * 6), ySum / (signedArea * 6)); } }
@Override public void write(final DataOutput dataOutput) throws IOException { final int pathCount = polygon.getPathCount(); dataOutput.writeInt(pathCount); for (int i = 0; i < pathCount; i++) { dataOutput.writeInt(polygon.getPathSize(i)); } final Point2D point2D = new Point2D(); final int pointCount = polygon.getPointCount(); for (int i = 0; i < pointCount; i++) { polygon.getXY(i, point2D); // Had to patch https://github.com/Esri/geometry-api-java dataOutput.writeDouble(point2D.x); dataOutput.writeDouble(point2D.y); } }
private static Point2D getPolygonSansHolesCentroid(Polygon polygon) { int pointCount = polygon.getPointCount(); double xSum = 0; double ySum = 0; double signedArea = 0; Point2D current = new Point2D(); Point2D next = new Point2D(); for (int i = 0; i < pointCount; i++) { polygon.getXY(i, current); polygon.getXY((i + 1) % pointCount, next); double ladder = current.x * next.y - next.x * current.y; xSum += (current.x + next.x) * ladder; ySum += (current.y + next.y) * ladder; signedArea += ladder / 2; } return new Point2D(xSum / (signedArea * 6), ySum / (signedArea * 6)); } }
pt_a = polygon_a.getXY(polygon_a.getPathStart(path_a)); env_b_inf.setCoords(intersector.getBlueEnvelope()); env_b_inf.inflate(tolerance, tolerance);
pt_a = polygon_a.getXY(polygon_a.getPathStart(path_a)); env_b_inf.setCoords(intersector.getBlueEnvelope()); env_b_inf.inflate(tolerance, tolerance);
Point2D anyPoint = polygon_a.getXY(polygon_a.getPathStart(ipath)); int res = PointInPolygonHelper.isPointInPolygon(p_polygon_b, anyPoint, 0); if (res == 1)
Point2D anyPoint = polygon_a.getXY(polygon_a.getPathStart(ipath)); int res = PointInPolygonHelper.isPointInPolygon(p_polygon_b, anyPoint, 0); if (res == 1)