QGIS API Documentation 3.34.0-Prizren (ffbdd678812)
Loading...
Searching...
No Matches
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
41class CORE_EXPORT QgsRegularPolygon
42{
43 public:
44
50 {
52 CircumscribedCircle
53 };
54
59
68 QgsRegularPolygon( const QgsPoint &center, double radius, double azimuth, unsigned int numberSides, ConstructionOption circle ) SIP_HOLDGIL;
69
77 QgsRegularPolygon( const QgsPoint &center, const QgsPoint &pt1, unsigned int numberSides, ConstructionOption circle ) SIP_HOLDGIL;
78
85 QgsRegularPolygon( const QgsPoint &pt1, const QgsPoint &pt2, unsigned int numberSides ) SIP_HOLDGIL;
86
87 bool operator ==( const QgsRegularPolygon &rp ) const SIP_HOLDGIL;
88 bool operator !=( const QgsRegularPolygon &rp ) const SIP_HOLDGIL;
89
91 bool isEmpty() const SIP_HOLDGIL;
92
97 QgsPoint center() const SIP_HOLDGIL { return mCenter; }
98
105 double radius() const SIP_HOLDGIL { return mRadius; }
106
111 QgsPoint firstVertex() const SIP_HOLDGIL { return mFirstVertex; }
112
118 double apothem() const SIP_HOLDGIL { return mRadius * std::cos( M_PI / mNumberSides ); }
119
124 unsigned int numberSides() const SIP_HOLDGIL { return mNumberSides; }
125
131 void setCenter( const QgsPoint &center ) SIP_HOLDGIL;
132
138 void setRadius( double radius ) SIP_HOLDGIL;
139
145 void setFirstVertex( const QgsPoint &firstVertex ) SIP_HOLDGIL;
146
152 void setNumberSides( unsigned int numberSides ) SIP_HOLDGIL;
153
157 QgsPointSequence points() const;
158
162 QgsPolygon *toPolygon() const SIP_FACTORY;
163
167 QgsLineString *toLineString() const SIP_FACTORY;
168
173 QgsTriangle toTriangle() const;
174
179 QVector<QgsTriangle> triangulate() const;
180
184 QgsCircle inscribedCircle() const SIP_HOLDGIL;
185
189 QgsCircle circumscribedCircle() const SIP_HOLDGIL;
190
195 QString toString( int pointPrecision = 17, int radiusPrecision = 17, int anglePrecision = 2 ) const;
196
200 double interiorAngle() const SIP_HOLDGIL;
201
205 double centralAngle() const SIP_HOLDGIL;
206
211 double area() const SIP_HOLDGIL;
212
217 double perimeter() const SIP_HOLDGIL;
218
223 double length() const SIP_HOLDGIL;
224
225 private:
226 QgsPoint mCenter;
227 QgsPoint mFirstVertex;
228 unsigned int mNumberSides = 0;
229 double mRadius = 0.0;
230
234 double apothemToRadius( double apothem, unsigned int numberSides ) const;
235
239 double interiorAngle( unsigned int nbSides ) const;
240
244 double centralAngle( unsigned int nbSides ) const;
245
246};
247
248#endif // QGSREGULARPOLYGON_H
Circle geometry type.
Definition qgscircle.h:44
Line string geometry type, with support for z-dimension and m-values.
Point geometry type, with support for z-dimension and m-values.
Definition qgspoint.h:49
Polygon geometry type.
Definition qgspolygon.h:34
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:34
#define SIP_HOLDGIL
Definition qgis_sip.h:166
#define SIP_FACTORY
Definition qgis_sip.h:76
QVector< QgsPoint > QgsPointSequence