QGIS API Documentation 3.37.0-Master (fdefdf9c27f)
qgsregularpolygon.h
Go to the documentation of this file.
1/***************************************************************************
2 qgsregularpolygon.h
3 --------------
4 begin : May 2017
5 copyright : (C) 2017 by Loîc Bartoletti
6 email : lbartoletti at tuxfamily dot org
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 QGSREGULARPOLYGON_H
19#define QGSREGULARPOLYGON_H
20
21#include <QString>
22
23#include "qgis_core.h"
24#include "qgspoint.h"
25#include "qgspolygon.h"
26#include "qgslinestring.h"
27#include "qgscircle.h"
28#include "qgstriangle.h"
29
30
40class CORE_EXPORT QgsRegularPolygon
41{
42 public:
43
49 {
51 CircumscribedCircle
52 };
53
58
67 QgsRegularPolygon( const QgsPoint &center, double radius, double azimuth, unsigned int numberSides, ConstructionOption circle ) SIP_HOLDGIL;
68
76 QgsRegularPolygon( const QgsPoint &center, const QgsPoint &pt1, unsigned int numberSides, ConstructionOption circle ) SIP_HOLDGIL;
77
84 QgsRegularPolygon( const QgsPoint &pt1, const QgsPoint &pt2, unsigned int numberSides ) SIP_HOLDGIL;
85
86 bool operator ==( const QgsRegularPolygon &rp ) const SIP_HOLDGIL;
87 bool operator !=( const QgsRegularPolygon &rp ) const SIP_HOLDGIL;
88
90 bool isEmpty() const SIP_HOLDGIL;
91
96 QgsPoint center() const SIP_HOLDGIL { return mCenter; }
97
104 double radius() const SIP_HOLDGIL { return mRadius; }
105
110 QgsPoint firstVertex() const SIP_HOLDGIL { return mFirstVertex; }
111
117 double apothem() const SIP_HOLDGIL { return mRadius * std::cos( M_PI / mNumberSides ); }
118
123 unsigned int numberSides() const SIP_HOLDGIL { return mNumberSides; }
124
130 void setCenter( const QgsPoint &center ) SIP_HOLDGIL;
131
137 void setRadius( double radius ) SIP_HOLDGIL;
138
144 void setFirstVertex( const QgsPoint &firstVertex ) SIP_HOLDGIL;
145
151 void setNumberSides( unsigned int numberSides ) SIP_HOLDGIL;
152
156 QgsPointSequence points() const;
157
162
166 QgsLineString *toLineString() const SIP_FACTORY;
167
172 QgsTriangle toTriangle() const;
173
178 QVector<QgsTriangle> triangulate() const;
179
183 QgsCircle inscribedCircle() const SIP_HOLDGIL;
184
188 QgsCircle circumscribedCircle() const SIP_HOLDGIL;
189
194 QString toString( int pointPrecision = 17, int radiusPrecision = 17, int anglePrecision = 2 ) const;
195
199 double interiorAngle() const SIP_HOLDGIL;
200
204 double centralAngle() const SIP_HOLDGIL;
205
210 double area() const SIP_HOLDGIL;
211
216 double perimeter() const SIP_HOLDGIL;
217
222 double length() const SIP_HOLDGIL;
223
224 private:
225 QgsPoint mCenter;
226 QgsPoint mFirstVertex;
227 unsigned int mNumberSides = 0;
228 double mRadius = 0.0;
229
233 double apothemToRadius( double apothem, unsigned int numberSides ) const;
234
238 double interiorAngle( unsigned int nbSides ) const;
239
243 double centralAngle( unsigned int nbSides ) const;
244
245};
246
247#endif // QGSREGULARPOLYGON_H
Circle geometry type.
Definition: qgscircle.h:43
Line string geometry type, with support for z-dimension and m-values.
Definition: qgslinestring.h:45
Point geometry type, with support for z-dimension and m-values.
Definition: qgspoint.h:49
Polygon geometry type.
Definition: qgspolygon.h:33
Regular Polygon geometry type.
QgsRegularPolygon()=default
Constructor for QgsRegularPolygon.
QgsPoint firstVertex() const
Returns the first vertex (corner) of the regular polygon.
ConstructionOption
A regular polygon can be constructed inscribed in a circle or circumscribed about a circle.
@ InscribedCircle
Inscribed in a circle (the radius is the distance between the center and vertices)
double radius() const
Returns the radius.
unsigned int numberSides() const
Returns the number of sides of the regular polygon.
double apothem() const
Returns the apothem of the regular polygon.
Triangle geometry type.
Definition: qgstriangle.h:33
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 SIP_HOLDGIL
Definition: qgis_sip.h:171
#define SIP_FACTORY
Definition: qgis_sip.h:76
QVector< QgsPoint > QgsPointSequence