17#include <geos/geom/CircularArc.h>
18#include <geos/geom/SimpleCurve.h>
23class GEOS_DLL CircularString :
public SimpleCurve {
26 using SimpleCurve::SimpleCurve;
28 friend class GeometryFactory;
30 ~CircularString()
override;
32 std::unique_ptr<CircularString> clone()
const;
34 const std::vector<CircularArc>& getArcs()
const;
36 std::string getGeometryType()
const override;
40 double getLength()
const override;
42 bool hasCurvedComponents()
const override
47 bool isCurved()
const override {
51 void normalize()
override;
53 std::unique_ptr<CircularString> reverse()
const
55 return std::unique_ptr<CircularString>(reverseImpl());
63 CircularString(std::unique_ptr<CoordinateSequence>&& pts,
64 const GeometryFactory& newFactory);
66 CircularString(
const std::shared_ptr<const CoordinateSequence>& pts,
67 const GeometryFactory& newFactory);
69 CircularString* cloneImpl()
const override
71 return new CircularString(*
this);
74 void geometryChangedAction()
override
76 envelope = computeEnvelopeInternal(
false);
80 getSortIndex()
const override
82 return SORTINDEX_CIRCULARSTRING;
85 CircularString* reverseImpl()
const override;
87 void validateConstruction();
90 void createArcs()
const;
92 void normalizeClosed();
94 mutable std::vector<CircularArc> arcs;
GeometryTypeId
Geometry types.
Definition Geometry.h:73
Basic namespace for all GEOS functionalities.
Definition geos.h:38