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 hasCurvedTypes()
const override
53 bool isCurved()
const override {
57 void normalize()
override;
59 std::unique_ptr<CircularString> reverse()
const
61 return std::unique_ptr<CircularString>(reverseImpl());
64 std::unique_ptr<Curve> getCurved(
const algorithm::LineToCurveParams&)
const;
71 CircularString(std::unique_ptr<CoordinateSequence>&& pts,
72 const GeometryFactory& newFactory);
74 CircularString(
const std::shared_ptr<const CoordinateSequence>& pts,
75 const GeometryFactory& newFactory);
77 CircularString* cloneImpl()
const override
79 return new CircularString(*
this);
82 void geometryChangedAction()
override
84 envelope = computeEnvelopeInternal(
false);
87 CircularString* getCurvedImpl(
const algorithm::LineToCurveParams&)
const override {
91 LineString* getLinearizedImpl(
const algorithm::CurveToLineParams&)
const override;
94 getSortIndex()
const override
96 return SORTINDEX_CIRCULARSTRING;
99 CircularString* reverseImpl()
const override;
101 void validateConstruction();
104 void createArcs()
const;
106 void normalizeClosed();
108 mutable std::vector<CircularArc> arcs;
GeometryTypeId
Geometry types.
Definition Geometry.h:78
Basic namespace for all GEOS functionalities.
Definition geos.h:38