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 circleIntersectsSegment(
const geom::CoordinateXY& center,
double r,
80 const geom::CoordinateXY& p0,
const geom::CoordinateXY& p1,
81 geom::CoordinateXY& isect0, geom::CoordinateXY& isect1);
92 containsAngle(
double t0,
double t2,
bool isCCW,
double theta);
105 containsPointOnCircle(
const geom::CoordinateXY& center,
106 const geom::CoordinateXY& p0,
const geom::CoordinateXY& p2,
bool isCCW,
107 const geom::CoordinateXY& q);
120 distanceArcPoint(
const geom::CoordinateXY& c,
double r,
121 const geom::CoordinateXY& p0,
const geom::CoordinateXY& p2,
bool isCCW,
122 const geom::CoordinateXY& q);
135 distanceArcSegment(
const geom::CoordinateXY& c,
double r,
136 const geom::CoordinateXY& p0,
const geom::CoordinateXY& p2,
bool isCCW,
137 const geom::CoordinateXY& q0,
const geom::CoordinateXY& q1);
154 distanceArcArc(
const geom::CoordinateXY& ca,
double ra,
155 const geom::CoordinateXY& a0,
const geom::CoordinateXY& a2,
bool aCCW,
156 const geom::CoordinateXY& cb,
double rb,
157 const geom::CoordinateXY& b0,
const geom::CoordinateXY& b2,
bool bCCW);
169 static geom::CoordinateXY
170 closestPointArcPoint(
const geom::CoordinateXY& c,
double r,
171 const geom::CoordinateXY& p0,
const geom::CoordinateXY& p2,
172 bool isCCW,
const geom::CoordinateXY &q);
185 static std::array<geom::CoordinateXY, 2>
186 closestPointsArcSegment(
const geom::CoordinateXY& c,
double r,
187 const geom::CoordinateXY& p0,
const geom::CoordinateXY& p2,
bool isCCW,
const geom::CoordinateXY& q0,
const geom::CoordinateXY& q1);
204 static std::array<geom::CoordinateXY, 2> closestPointsArcArc(
const geom::CoordinateXY& ca,
206 const geom::CoordinateXY& a0,
207 const geom::CoordinateXY& a2,
209 const geom::CoordinateXY& cb,
211 const geom::CoordinateXY& b0,
212 const geom::CoordinateXY& b2,
229 static std::optional<geom::CoordinateXY>
230 cocircularArcsIntersectionPoint(
const geom::CoordinateXY& center,
double radius,
231 const geom::CoordinateXY& a0,
const geom::CoordinateXY& a2,
bool aCCW,
232 const geom::CoordinateXY& b0,
const geom::CoordinateXY& b2,
bool bCCW);
250 static std::optional<geom::CoordinateXY>
251 arcIntersectionPoint(
const geom::CoordinateXY& ca,
double ra,
252 const geom::CoordinateXY& a0,
const geom::CoordinateXY& a2,
bool aCCW,
253 const geom::CoordinateXY& cb,
double rb,
254 const geom::CoordinateXY& b0,
const geom::CoordinateXY& b2,
bool bCCW);
Basic namespace for all GEOS functionalities.
Definition geos.h:38