19 #ifndef GEOS_ALGORITHM_CENTROID_H
20 #define GEOS_ALGORITHM_CENTROID_H
22 #include <geos/export.h>
23 #include <geos/geom/Coordinate.h>
31 class CoordinateSequence;
61 class GEOS_DLL Centroid {
74 static bool getCentroid(
const geom::Geometry& geom, geom::Coordinate& cent);
79 Centroid(
const geom::Geometry& geom)
96 bool getCentroid(geom::Coordinate& cent)
const;
100 std::unique_ptr<geom::Coordinate> areaBasePt;
101 geom::Coordinate triangleCent3;
102 geom::Coordinate cg3;
103 geom::Coordinate lineCentSum;
104 geom::Coordinate ptCentSum;
114 void add(
const geom::Geometry& geom);
116 void setAreaBasePoint(
const geom::Coordinate& basePt);
118 void add(
const geom::Polygon& poly);
120 void addShell(
const geom::CoordinateSequence& pts);
122 void addHole(
const geom::CoordinateSequence& pts);
124 void addTriangle(
const geom::Coordinate& p0,
const geom::Coordinate& p1,
const geom::Coordinate& p2,
125 bool isPositiveArea);
132 static void centroid3(
const geom::Coordinate& p1,
const geom::Coordinate& p2,
const geom::Coordinate& p3,
133 geom::Coordinate& c);
139 static double area2(
const geom::Coordinate& p1,
const geom::Coordinate& p2,
const geom::Coordinate& p3);
147 void addLineSegments(
const geom::CoordinateSequence& pts);
153 void addPoint(
const geom::Coordinate& pt);
159 #endif // GEOS_ALGORITHM_CENTROID_H