31   return equals( *otherCurve );
    50   if ( 
is3D() && closed )
    51     closed &= 
qgsDoubleNear( start.
z(), end.
z(), 1E-8 ) || ( std::isnan( start.
z() ) && std::isnan( end.
z() ) );
    65   points( sequence.back().back() );
    92   return pointAt( 
id.vertex, vertex, 
id.type );
   113   if ( vertex.
vertex == n - 1 )
   125   if ( 
id.part != 0 || 
id.ring != 0 )
   127   if ( 
id.vertex < 0 || id.vertex >= 
numPoints() )
   184   if ( mBoundingBox.
isNull() )
   195   points.reserve( nb );
   196   for ( 
int i = 0; i < nb; ++i )
   198     points << QPointF( 
xAt( i ), 
yAt( i ) );
   212     return std::numeric_limits<double>::quiet_NaN();
   239   bool res = 
pointAt( index, point, type );
   246                                   const QVector<double> &srcX, 
const QVector<double> &srcY, 
const QVector<double> &srcZ, 
const QVector<double> &srcM,
   247                                   QVector<double> &outX, QVector<double> &outY, QVector<double> &outZ, QVector<double> &outM )
 const   258   auto roundVertex = [hSpacing, vSpacing, dSpacing, mSpacing, hasZ, hasM, &srcX, &srcY, &srcZ, &srcM]( 
QgsPoint & out, 
int i )
   261       out.setX( std::round( srcX.at( i ) / hSpacing ) * hSpacing );
   263       out.setX( srcX.at( i ) );
   266       out.setY( std::round( srcY.at( i ) / vSpacing ) * vSpacing );
   268       out.setY( srcY.at( i ) );
   273         out.setZ( std::round( srcZ.at( i ) / dSpacing ) * dSpacing );
   275         out.setZ( srcZ.at( i ) );
   281         out.setM( std::round( srcM.at( i ) / mSpacing ) * mSpacing );
   283         out.setM( srcM.at( i ) );
   288   auto append = [hasZ, hasM, &outX, &outY, &outM, &outZ]( 
QgsPoint const & point )
   290     outX.append( point.x() );
   292     outY.append( point.y() );
   295       outZ.append( point.z() );
   298       outM.append( point.m() );
   301   auto isPointEqual = [dSpacing, mSpacing, hasZ, hasM]( 
const QgsPoint & a, 
const QgsPoint & b )
   303     return ( a.x() == b.x() )
   304            && ( a.y() == b.y() )
   305            && ( !hasZ || dSpacing <= 0 || a.z() == b.z() )
   306            && ( !hasM || mSpacing <= 0 || a.m() == b.m() );
   315   roundVertex( last, 0 );
   318   for ( 
int i = 1; i < 
length; ++i )
   320     roundVertex( current, i );
   321     if ( !isPointEqual( current, last ) )
   330   if ( outX.length() < 2 || ( 
isClosed() && outX.length() < 4 ) )
 virtual bool isEmpty() const 
Returns true if the geometry is empty. 
 
A rectangle specified with double values. 
 
int partCount() const override
Returns count of parts contained in the geometry. 
 
bool operator==(const QgsAbstractGeometry &other) const override
 
Orientation orientation() const 
Returns the curve's orientation, e.g. 
 
Multi point geometry collection. 
 
QVector< QgsRingSequence > QgsCoordinateSequence
 
bool nextVertex(QgsVertexId &id, QgsPoint &vertex) const override
Returns next vertex id and coordinates. 
 
bool qgsDoubleNear(double a, double b, double epsilon=4 *std::numeric_limits< double >::epsilon())
Compare two doubles (but allow some difference) 
 
bool isNull() const 
Test if the rectangle is null (all coordinates zero or after call to setMinimal()). 
 
virtual void sumUpArea(double &sum) const =0
Sums up the area of the curve by iterating over the vertices (shoelace formula). 
 
void clearCache() const override
Clears any cached parameters associated with the geometry, e.g., bounding boxes. 
 
SegmentationToleranceType
Segmentation tolerance as maximum angle or maximum difference between approximation and circle...
 
virtual bool pointAt(int node, QgsPoint &point, QgsVertexId::VertexType &type) const =0
Returns the point and vertex id of a point within the curve. 
 
virtual bool equals(const QgsCurve &other) const =0
Checks whether this curve exactly equals another curve. 
 
bool snapToGridPrivate(double hSpacing, double vSpacing, double dSpacing, double mSpacing, const QVector< double > &srcX, const QVector< double > &srcY, const QVector< double > &srcZ, const QVector< double > &srcM, QVector< double > &outX, QVector< double > &outY, QVector< double > &outZ, QVector< double > &outM) const 
Helper function for QgsCurve subclasses to snap to grids. 
 
QgsPoint childPoint(int index) const override
Returns point at index (for geometries without child geometries - i.e. 
 
virtual QgsRectangle calculateBoundingBox() const 
Default calculator for the minimal bounding box for the geometry. 
 
int childCount() const override
Returns number of child geometries (for geometries with child geometries) or child points (for geomet...
 
virtual QgsPoint endPoint() const =0
Returns the end point of the curve. 
 
Type
The WKB type describes the number of dimensions a geometry has. 
 
bool isMeasure() const 
Returns true if the geometry contains m values. 
 
Utility class for identifying a unique vertex within a geometry. 
 
double straightDistance2d() const 
Returns the straight distance of the curve, i.e. 
 
virtual QPolygonF asQPolygonF() const 
Returns a QPolygonF representing the points. 
 
int vertexCount(int part=0, int ring=0) const override
Returns the number of vertices of which this geometry is built. 
 
T qgsgeometry_cast(const QgsAbstractGeometry *geom)
 
virtual double xAt(int index) const =0
Returns the x-coordinate of the specified node in the line string. 
 
virtual bool isClosed() const 
Returns true if the curve is closed. 
 
Orientation
Curve orientation. 
 
Abstract base class for curved geometry type. 
 
Abstract base class for all geometries. 
 
virtual void clearCache() const 
Clears any cached parameters associated with the geometry, e.g., bounding boxes. 
 
QgsPoint vertexAt(QgsVertexId id) const override
Returns the point corresponding to a specified vertex id. 
 
Counter-clockwise orientation. 
 
Point geometry type, with support for z-dimension and m-values. 
 
int vertexNumberFromVertexId(QgsVertexId id) const override
Returns the vertex number corresponding to a vertex id. 
 
QgsAbstractGeometry * boundary() const override
Returns the closure of the combinatorial boundary of the geometry (ie the topological boundary of the...
 
QgsCoordinateSequence coordinateSequence() const override
Retrieves the sequence of geometries, rings and nodes. 
 
double distance(double x, double y) const 
Returns the distance between this point and a specified x, y coordinate. 
 
virtual double length() const 
Returns the length of the geometry. 
 
QVector< QgsPoint > QgsPointSequence
 
QgsCurve * segmentize(double tolerance=M_PI_2/90, SegmentationToleranceType toleranceType=MaximumAngle) const override
Returns a geometry without curves. 
 
bool addGeometry(QgsAbstractGeometry *g) override
Adds a geometry and takes ownership. Returns true in case of success. 
 
QVector< QgsPointSequence > QgsRingSequence
 
QgsCurve * toCurveType() const override
Returns the geometry converted to the more generic curve type. 
 
QgsRectangle boundingBox() const override
Returns the minimal bounding box for the geometry. 
 
int ringCount(int part=0) const override
Returns the number of rings of which this geometry is built. 
 
void adjacentVertices(QgsVertexId vertex, QgsVertexId &previousVertex, QgsVertexId &nextVertex) const override
Returns the vertices adjacent to a specified vertex within a geometry. 
 
double sinuosity() const 
Returns the curve sinuosity, which is the ratio of the curve length() to curve straightDistance2d(). 
 
QgsCurve * clone() const override=0
Clones the geometry by performing a deep copy. 
 
virtual QgsLineString * curveToLine(double tolerance=M_PI_2/90, SegmentationToleranceType toleranceType=MaximumAngle) const =0
Returns a new line string geometry corresponding to a segmentized approximation of the curve...
 
virtual double yAt(int index) const =0
Returns the y-coordinate of the specified node in the line string. 
 
bool is3D() const 
Returns true if the geometry is 3D and contains a z-value. 
 
static Type zmType(Type type, bool hasZ, bool hasM)
Returns the modified input geometry type according to hasZ / hasM. 
 
virtual QgsPoint startPoint() const =0
Returns the starting point of the curve. 
 
bool operator!=(const QgsAbstractGeometry &other) const override
 
virtual bool isRing() const 
Returns true if the curve is a ring. 
 
virtual int numPoints() const =0
Returns the number of points in the curve. 
 
virtual void points(QgsPointSequence &pt) const =0
Returns a list of points within the curve.