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 std::unique_ptr<CircularString> reverse()
const
53 return std::unique_ptr<CircularString>(reverseImpl());
61 CircularString(std::unique_ptr<CoordinateSequence>&& pts,
62 const GeometryFactory& newFactory);
64 CircularString(
const std::shared_ptr<const CoordinateSequence>& pts,
65 const GeometryFactory& newFactory);
67 CircularString* cloneImpl()
const override
69 return new CircularString(*
this);
72 void geometryChangedAction()
override
74 envelope = computeEnvelopeInternal(
false);
78 getSortIndex()
const override
80 return SORTINDEX_LINESTRING;
83 CircularString* reverseImpl()
const override;
85 void validateConstruction();
88 void createArcs()
const;
90 mutable std::vector<CircularArc> arcs;
GeometryTypeId
Geometry types.
Definition Geometry.h:73
Basic namespace for all GEOS functionalities.
Definition geos.h:38