17#include <geos/export.h>
18#include <geos/geom/Coordinate.h>
25class CoordinateSequence;
33class GEOS_DLL CircularArcs {
37 static geom::CoordinateXY getCenter(
const geom::CoordinateXY& p0,
const geom::CoordinateXY& p1,
38 const geom::CoordinateXY& p2);
40 static double getAngle(
const geom::CoordinateXY& pt,
const geom::CoordinateXY& center);
42 static geom::CoordinateXY getDirectionPoint(
const geom::CoordinateXY& center,
double radius,
double theta,
bool isCCW);
44 static double getMidpointAngle(
double theta0,
double theta2,
bool isCCW);
46 static geom::CoordinateXY getMidpoint(
const geom::CoordinateXY& p0,
const geom::CoordinateXY& p2,
const geom::CoordinateXY& center,
double radius,
bool isCCW);
49 static void expandEnvelope(geom::Envelope& e,
const geom::CoordinateXY& p0,
const geom::CoordinateXY& p1,
50 const geom::CoordinateXY& p2);
53 static geom::CoordinateXY createPoint(
const geom::CoordinateXY& center,
double radius,
double theta);
65 static void interpolateZM(
const geom::CoordinateSequence &seq,
size_t i0,
const geom::CoordinateXY ¢er,
bool isCCW, geom::CoordinateXY &pt,
double
79 circleIntersectsLine(
const geom::CoordinateXY& center,
double r,
80 const geom::CoordinateXY& p0,
const geom::CoordinateXY& p1,
81 geom::CoordinateXY& isect0, geom::CoordinateXY& isect1);
94 circleIntersectsSegment(
const geom::CoordinateXY& center,
double r,
95 const geom::CoordinateXY& p0,
const geom::CoordinateXY& p1,
96 geom::CoordinateXY& isect0, geom::CoordinateXY& isect1);
107 containsAngle(
double t0,
double t2,
bool isCCW,
double theta);
120 containsPointOnCircle(
const geom::CoordinateXY& center,
121 const geom::CoordinateXY& p0,
const geom::CoordinateXY& p2,
bool isCCW,
122 const geom::CoordinateXY& q);
135 distanceArcPoint(
const geom::CoordinateXY& c,
double r,
136 const geom::CoordinateXY& p0,
const geom::CoordinateXY& p2,
bool isCCW,
137 const geom::CoordinateXY& q);
150 distanceArcSegment(
const geom::CoordinateXY& c,
double r,
151 const geom::CoordinateXY& p0,
const geom::CoordinateXY& p2,
bool isCCW,
152 const geom::CoordinateXY& q0,
const geom::CoordinateXY& q1);
169 distanceArcArc(
const geom::CoordinateXY& ca,
double ra,
170 const geom::CoordinateXY& a0,
const geom::CoordinateXY& a2,
bool aCCW,
171 const geom::CoordinateXY& cb,
double rb,
172 const geom::CoordinateXY& b0,
const geom::CoordinateXY& b2,
bool bCCW);
184 static geom::CoordinateXY
185 closestPointArcPoint(
const geom::CoordinateXY& c,
double r,
186 const geom::CoordinateXY& p0,
const geom::CoordinateXY& p2,
187 bool isCCW,
const geom::CoordinateXY &q);
200 static std::array<geom::CoordinateXY, 2>
201 closestPointsArcSegment(
const geom::CoordinateXY& c,
double r,
202 const geom::CoordinateXY& p0,
const geom::CoordinateXY& p2,
bool isCCW,
const geom::CoordinateXY& q0,
const geom::CoordinateXY& q1);
219 static std::array<geom::CoordinateXY, 2> closestPointsArcArc(
const geom::CoordinateXY& ca,
221 const geom::CoordinateXY& a0,
222 const geom::CoordinateXY& a2,
224 const geom::CoordinateXY& cb,
226 const geom::CoordinateXY& b0,
227 const geom::CoordinateXY& b2,
244 static std::optional<geom::CoordinateXY>
245 cocircularArcsIntersectionPoint(
const geom::CoordinateXY& center,
double radius,
246 const geom::CoordinateXY& a0,
const geom::CoordinateXY& a2,
bool aCCW,
247 const geom::CoordinateXY& b0,
const geom::CoordinateXY& b2,
bool bCCW);
265 static std::optional<geom::CoordinateXY>
266 arcIntersectionPoint(
const geom::CoordinateXY& ca,
double ra,
267 const geom::CoordinateXY& a0,
const geom::CoordinateXY& a2,
bool aCCW,
268 const geom::CoordinateXY& cb,
double rb,
269 const geom::CoordinateXY& b0,
const geom::CoordinateXY& b2,
bool bCCW);
Basic namespace for all GEOS functionalities.
Definition geos.h:38