QGIS API Documentation 3.27.0-Master (f261cc1f8b)
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 "qgspoint.h"
24#include "qgspolygon.h"
25#include "qgslinestring.h"
26
36class CORE_EXPORT QgsQuadrilateral
37{
38 public:
39
44
53 QgsQuadrilateral( const QgsPoint &p1, const QgsPoint &p2, const QgsPoint &p3, const QgsPoint &p4 ) SIP_HOLDGIL;
54
63 explicit QgsQuadrilateral( const QgsPointXY &p1, const QgsPointXY &p2, const QgsPointXY &p3, const QgsPointXY &p4 ) SIP_HOLDGIL;
64
65
71 {
74 };
75
90 static QgsQuadrilateral rectangleFrom3Points( const QgsPoint &p1, const QgsPoint &p2, const QgsPoint &p3, ConstructionOption mode ) SIP_HOLDGIL;
91
100 static QgsQuadrilateral rectangleFromExtent( const QgsPoint &p1, const QgsPoint &p2 ) SIP_HOLDGIL;
101
102#ifndef SIP_RUN
103
107 static constexpr auto &rectangleFromDiagonal = rectangleFromExtent;
108#endif
109
117 static QgsQuadrilateral squareFromDiagonal( const QgsPoint &p1, const QgsPoint &p2 ) SIP_HOLDGIL;
118
127 static QgsQuadrilateral rectangleFromCenterPoint( const QgsPoint &center, const QgsPoint &point ) SIP_HOLDGIL;
128
133 static QgsQuadrilateral fromRectangle( const QgsRectangle &rectangle ) SIP_HOLDGIL;
134
135 // TODO:
136 // Rhombus
137
143 bool equals( const QgsQuadrilateral &other, double epsilon = 4 * std::numeric_limits<double>::epsilon() ) const SIP_HOLDGIL;
144 bool operator==( const QgsQuadrilateral &other ) const SIP_HOLDGIL;
145 bool operator!=( const QgsQuadrilateral &other ) const SIP_HOLDGIL;
146
152 bool isValid() const SIP_HOLDGIL;
153
157 enum Point
158 {
163 };
164
170 bool setPoint( const QgsPoint &newPoint, Point index ) SIP_HOLDGIL;
171
181 bool setPoints( const QgsPoint &p1, const QgsPoint &p2, const QgsPoint &p3, const QgsPoint &p4 ) SIP_HOLDGIL;
182
186 QgsPointSequence points() const;
187
191 QgsPolygon *toPolygon( bool force2D = false ) const SIP_FACTORY;
192
196 QgsLineString *toLineString( bool force2D = false ) const SIP_FACTORY;
197
202 QString toString( int pointPrecision = 17 ) const;
203
207 double area() const SIP_HOLDGIL;
208
212 double perimeter() const SIP_HOLDGIL;
213#ifdef SIP_RUN
214 SIP_PYOBJECT __repr__();
215 % MethodCode
216 QString str = QStringLiteral( "<QgsQuadrilateral: %1>" ).arg( sipCpp->toString() );
217 sipRes = PyUnicode_FromString( str.toUtf8().constData() );
218 % End
219#endif
220 private:
221 QgsPoint mPoint1, mPoint2, mPoint3, mPoint4;
222};
223
224#endif // QGSQUADRILATERAL_H
Line string geometry type, with support for z-dimension and m-values.
Definition: qgslinestring.h:45
A class to represent a 2D point.
Definition: qgspointxy.h:59
Point geometry type, with support for z-dimension and m-values.
Definition: qgspoint.h:49
Polygon geometry type.
Definition: qgspolygon.h:34
Quadrilateral geometry type.
QgsQuadrilateral() SIP_HOLDGIL
Constructor for an empty quadrilateral geometry.
Point
Simple enumeration to ensure indices in setPoint.
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.
Definition: qgsrectangle.h:42
CORE_EXPORT std::unique_ptr< QgsPolygon > toPolygon(const QgsMeshFace &face, const QVector< QgsMeshVertex > &vertices)
Returns face as polygon geometry, caller is responsible for delete.
#define str(x)
Definition: qgis.cpp:37
#define SIP_HOLDGIL
Definition: qgis_sip.h:166
#define SIP_FACTORY
Definition: qgis_sip.h:76
QVector< QgsPoint > QgsPointSequence