17#include <geos/export.h>
18#include <geos/geom/Coordinate.h>
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);
68 static void interpolateZM(
const geom::CoordinateSequence &seq,
size_t i0,
const geom::CoordinateXY ¢er,
bool isCCW, geom::CoordinateXY &pt,
double
82 circleIntersectsLine(
const geom::CoordinateXY& center,
double r,
83 const geom::CoordinateXY& p0,
const geom::CoordinateXY& p1,
84 geom::CoordinateXY& isect0, geom::CoordinateXY& isect1);
97 circleIntersectsSegment(
const geom::CoordinateXY& center,
double r,
98 const geom::CoordinateXY& p0,
const geom::CoordinateXY& p1,
99 geom::CoordinateXY& isect0, geom::CoordinateXY& isect1);
110 containsAngle(
double t0,
double t2,
bool isCCW,
double theta);
123 containsPointOnCircle(
const geom::CoordinateXY& center,
124 const geom::CoordinateXY& p0,
const geom::CoordinateXY& p2,
bool isCCW,
125 const geom::CoordinateXY& q);
138 distanceArcPoint(
const geom::CoordinateXY& c,
double r,
139 const geom::CoordinateXY& p0,
const geom::CoordinateXY& p2,
bool isCCW,
140 const geom::CoordinateXY& q);
153 distanceArcSegment(
const geom::CoordinateXY& c,
double r,
154 const geom::CoordinateXY& p0,
const geom::CoordinateXY& p2,
bool isCCW,
155 const geom::CoordinateXY& q0,
const geom::CoordinateXY& q1);
172 distanceArcArc(
const geom::CoordinateXY& ca,
double ra,
173 const geom::CoordinateXY& a0,
const geom::CoordinateXY& a2,
bool aCCW,
174 const geom::CoordinateXY& cb,
double rb,
175 const geom::CoordinateXY& b0,
const geom::CoordinateXY& b2,
bool bCCW);
187 static geom::CoordinateXY
188 closestPointArcPoint(
const geom::CoordinateXY& c,
double r,
189 const geom::CoordinateXY& p0,
const geom::CoordinateXY& p2,
190 bool isCCW,
const geom::CoordinateXY &q);
203 static std::array<geom::CoordinateXY, 2>
204 closestPointsArcSegment(
const geom::CoordinateXY& c,
double r,
205 const geom::CoordinateXY& p0,
const geom::CoordinateXY& p2,
bool isCCW,
const geom::CoordinateXY& q0,
const geom::CoordinateXY& q1);
222 static std::array<geom::CoordinateXY, 2> closestPointsArcArc(
const geom::CoordinateXY& ca,
224 const geom::CoordinateXY& a0,
225 const geom::CoordinateXY& a2,
227 const geom::CoordinateXY& cb,
229 const geom::CoordinateXY& b0,
230 const geom::CoordinateXY& b2,
247 static std::optional<geom::CoordinateXY>
248 cocircularArcsIntersectionPoint(
const geom::CoordinateXY& center,
double radius,
249 const geom::CoordinateXY& a0,
const geom::CoordinateXY& a2,
bool aCCW,
250 const geom::CoordinateXY& b0,
const geom::CoordinateXY& b2,
bool bCCW);
268 static std::optional<geom::CoordinateXY>
269 arcIntersectionPoint(
const geom::CoordinateXY& ca,
double ra,
270 const geom::CoordinateXY& a0,
const geom::CoordinateXY& a2,
bool aCCW,
271 const geom::CoordinateXY& cb,
double rb,
272 const geom::CoordinateXY& b0,
const geom::CoordinateXY& b2,
bool bCCW);
The internal representation of a list of coordinates inside a Geometry.
Definition CoordinateSequence.h:56
An Envelope defines a rectangulare region of the 2D coordinate plane.
Definition Envelope.h:59
Contains classes and interfaces implementing fundamental computational geometry algorithms.
Definition Angle.h:32
Basic namespace for all GEOS functionalities.
Definition geos.h:38