QGIS API Documentation 3.99.0-Master (09f76ad7019)
Loading...
Searching...
No Matches
qgsquadrilateral.h
Go to the documentation of this file.
1/***************************************************************************
2 qgsquadrilateral.h
3 -------------------
4 begin : November 2018
5 copyright : (C) 2018 by Loïc Bartoletti
6 email : loic dot bartoletti at oslandia dot com
7 ***************************************************************************/
8
9/***************************************************************************
10 * *
11 * This program is free software; you can redistribute it and/or modify *
12 * it under the terms of the GNU General Public License as published by *
13 * the Free Software Foundation; either version 2 of the License, or *
14 * (at your option) any later version. *
15 * *
16 ***************************************************************************/
17
18#ifndef QGSQUADRILATERAL_H
19#define QGSQUADRILATERAL_H
20
21
22#include "qgis_core.h"
23#include "qgslinestring.h"
24#include "qgspoint.h"
25#include "qgspolygon.h"
26
27#include <QString>
28
29using namespace Qt::StringLiterals;
30
40class CORE_EXPORT QgsQuadrilateral
41{
42 public:
43
48
57 QgsQuadrilateral( const QgsPoint &p1, const QgsPoint &p2, const QgsPoint &p3, const QgsPoint &p4 ) SIP_HOLDGIL;
58
67 explicit QgsQuadrilateral( const QgsPointXY &p1, const QgsPointXY &p2, const QgsPointXY &p3, const QgsPointXY &p4 ) SIP_HOLDGIL;
68
69
79
94 static QgsQuadrilateral rectangleFrom3Points( const QgsPoint &p1, const QgsPoint &p2, const QgsPoint &p3, ConstructionOption mode ) SIP_HOLDGIL;
95
104 static QgsQuadrilateral rectangleFromExtent( const QgsPoint &p1, const QgsPoint &p2 ) SIP_HOLDGIL;
105
106#ifndef SIP_RUN
107
112#endif
113
121 static QgsQuadrilateral squareFromDiagonal( const QgsPoint &p1, const QgsPoint &p2 ) SIP_HOLDGIL;
122
131 static QgsQuadrilateral rectangleFromCenterPoint( const QgsPoint &center, const QgsPoint &point ) SIP_HOLDGIL;
132
137 static QgsQuadrilateral fromRectangle( const QgsRectangle &rectangle ) SIP_HOLDGIL;
138
139 // TODO:
140 // Rhombus
141
147 bool equals( const QgsQuadrilateral &other, double epsilon = 4 * std::numeric_limits<double>::epsilon() ) const SIP_HOLDGIL;
148 bool operator==( const QgsQuadrilateral &other ) const SIP_HOLDGIL;
149 bool operator!=( const QgsQuadrilateral &other ) const SIP_HOLDGIL;
150
156 bool isValid() const SIP_HOLDGIL;
157
168
174 bool setPoint( const QgsPoint &newPoint, Point index ) SIP_HOLDGIL;
175
185 bool setPoints( const QgsPoint &p1, const QgsPoint &p2, const QgsPoint &p3, const QgsPoint &p4 ) SIP_HOLDGIL;
186
190 QgsPointSequence points() const;
191
195 QgsPolygon *toPolygon( bool force2D = false ) const SIP_FACTORY;
196
200 QgsLineString *toLineString( bool force2D = false ) const SIP_FACTORY;
201
206 QString toString( int pointPrecision = 17 ) const;
207
211 double area() const SIP_HOLDGIL;
212
216 double perimeter() const SIP_HOLDGIL;
217#ifdef SIP_RUN
218 SIP_PYOBJECT __repr__();
219 % MethodCode
220 QString str = u"<QgsQuadrilateral: %1>"_s.arg( sipCpp->toString() );
221 sipRes = PyUnicode_FromString( str.toUtf8().constData() );
222 % End
223#endif
224 private:
225 QgsPoint mPoint1, mPoint2, mPoint3, mPoint4;
226};
227
228#endif // QGSQUADRILATERAL_H
Line string geometry type, with support for z-dimension and m-values.
Represents a 2D point.
Definition qgspointxy.h:62
Point geometry type, with support for z-dimension and m-values.
Definition qgspoint.h:53
Polygon geometry type.
Definition qgspolygon.h:37
Quadrilateral geometry type.
static QgsQuadrilateral fromRectangle(const QgsRectangle &rectangle)
Construct a QgsQuadrilateral as a rectangle from a QgsRectangle.
static QgsQuadrilateral rectangleFromCenterPoint(const QgsPoint &center, const QgsPoint &point)
Construct a QgsQuadrilateral as a rectangle from center point center and another point point.
static QgsQuadrilateral rectangleFromExtent(const QgsPoint &p1, const QgsPoint &p2)
Construct a QgsQuadrilateral as a rectangle from an extent, defined by two opposite corner points.
static constexpr auto & rectangleFromDiagonal
Alias for rectangleFromDiagonal.
Point
Simple enumeration to ensure indices in setPoint.
bool isValid() const
Convenient method to determine if a QgsQuadrilateral is valid.
static QgsQuadrilateral squareFromDiagonal(const QgsPoint &p1, const QgsPoint &p2)
Construct a QgsQuadrilateral as a square from a diagonal.
QgsQuadrilateral()
Constructor for an empty quadrilateral geometry.
bool equals(const QgsQuadrilateral &other, double epsilon=4 *std::numeric_limits< double >::epsilon()) const
Compares two QgsQuadrilateral, allowing specification of the maximum allowable difference between poi...
ConstructionOption
A quadrilateral can be constructed from 3 points where the second distance can be determined by the t...
@ Distance
Second distance is equal to the distance between 2nd and 3rd point.
@ Projected
Second distance is equal to the distance of the perpendicular projection of the 3rd point on the segm...
A rectangle specified with double values.
#define SIP_HOLDGIL
Definition qgis_sip.h:179
#define SIP_FACTORY
Definition qgis_sip.h:84
QVector< QgsPoint > QgsPointSequence