17#include <geos/geom/CircularArc.h>
18#include <geos/geom/LineString.h>
19#include <geos/geom/SimpleCurve.h>
24class GEOS_DLL CircularString :
public SimpleCurve {
27 using SimpleCurve::SimpleCurve;
29 friend class GeometryFactory;
31 ~CircularString()
override;
33 std::unique_ptr<CircularString> clone()
const;
35 const std::vector<CircularArc>& getArcs()
const;
37 std::string getGeometryType()
const override;
41 double getLength()
const override;
43 bool hasCurvedComponents()
const override
48 bool isCurved()
const override {
52 void normalize()
override;
54 std::unique_ptr<CircularString> reverse()
const
56 return std::unique_ptr<CircularString>(reverseImpl());
59 std::unique_ptr<Curve> getCurved(
const algorithm::LineToCurveParams&)
const;
66 CircularString(std::unique_ptr<CoordinateSequence>&& pts,
67 const GeometryFactory& newFactory);
69 CircularString(
const std::shared_ptr<const CoordinateSequence>& pts,
70 const GeometryFactory& newFactory);
72 CircularString* cloneImpl()
const override
74 return new CircularString(*
this);
77 void geometryChangedAction()
override
79 envelope = computeEnvelopeInternal(
false);
82 CircularString* getCurvedImpl(
const algorithm::LineToCurveParams&)
const override {
86 LineString* getLinearizedImpl(
const algorithm::CurveToLineParams&)
const override;
89 getSortIndex()
const override
91 return SORTINDEX_CIRCULARSTRING;
94 CircularString* reverseImpl()
const override;
96 void validateConstruction();
99 void createArcs()
const;
101 void normalizeClosed();
103 mutable std::vector<CircularArc> arcs;
GeometryTypeId
Geometry types.
Definition Geometry.h:78
Basic namespace for all GEOS functionalities.
Definition geos.h:38