20#include <geos/export.h>
21#include <geos/geom/Coordinate.h>
22#include <geos/geom/CircularArc.h>
23#include <geos/geom/LineSegment.h>
27class GEOS_DLL CircularArcIntersector {
29 using CoordinateXY = geom::CoordinateXY;
30 using CircularArc = geom::CircularArc;
31 using Envelope = geom::Envelope;
33 enum intersection_type : uint8_t {
35 ONE_POINT_INTERSECTION = 1,
36 TWO_POINT_INTERSECTION = 2,
37 COCIRCULAR_INTERSECTION = 3,
40 intersection_type getResult()
const
45 const CoordinateXY& getPoint(std::uint8_t i)
const
50 const CircularArc& getArc(std::uint8_t i)
const
55 std::uint8_t getNumPoints()
const
60 std::uint8_t getNumArcs()
const
69 void intersects(
const CircularArc& arc,
const CoordinateXY& p0,
const CoordinateXY& p1);
71 void intersects(
const CircularArc& arc,
const geom::LineSegment& seg)
73 intersects(arc, seg.p0, seg.p1);
80 void intersects(
const CircularArc& arc1,
const CircularArc& arc2);
83 circleIntersects(
const CoordinateXY& center,
double r,
const CoordinateXY& p0,
const CoordinateXY& p1, CoordinateXY& isect0, CoordinateXY& isect1);
87 void intersects(
const CoordinateXY& p0,
const CoordinateXY& p1,
const CoordinateXY& q0,
const CoordinateXY& q1);
89 std::array<CoordinateXY, 2> intPt;
90 std::array<CircularArc, 2> intArc;
91 intersection_type result = NO_INTERSECTION;
93 std::uint8_t nArc = 0;
Contains classes and interfaces implementing fundamental computational geometry algorithms.
Definition Angle.h:32