QGIS API Documentation
3.14.0-Pi (9f7028fd23)
|
Go to the documentation of this file.
30 mNumberSides = numSides;
36 mRadius = std::fabs(
radius );
37 mFirstVertex = mCenter.
project( mRadius, azimuth );
42 mRadius = apothemToRadius( std::fabs(
radius ), numSides );
57 mNumberSides = numSides;
85 mNumberSides = numSides;
87 double azimuth = pt1.
azimuth( pt2 );
91 double angle = ( 180 - ( 360 / numSides ) ) / 2.0;
92 double hypothenuse =
length / std::cos(
angle * M_PI / 180 );
97 mRadius = std::fabs( hypothenuse );
103 return ( ( mCenter == rp.mCenter ) &&
104 ( mFirstVertex == rp.mFirstVertex ) &&
105 ( mNumberSides == rp.mNumberSides )
116 return ( ( mNumberSides < 3 ) ||
119 ( mCenter == mFirstVertex )
125 double azimuth = mFirstVertex.
isEmpty() ? 0 : mCenter.
azimuth( mFirstVertex );
133 mRadius = std::fabs(
radius );
134 double azimuth = mFirstVertex.
isEmpty() ? 0 : mCenter.
azimuth( mFirstVertex );
136 mFirstVertex = mCenter.
project( mRadius, azimuth );
141 double azimuth = mCenter.
azimuth( mFirstVertex );
144 mCenter = mFirstVertex.
project( mRadius, azimuth );
151 mNumberSides = numSides;
163 double azimuth = mCenter.
azimuth( mFirstVertex );
168 while ( n <= mNumberSides )
170 pts.push_back( mCenter.
project( mRadius, azimuth ) );
171 azimuth += azimuth_add;
172 if ( ( azimuth_add > 0 ) && ( azimuth > 180.0 ) )
185 std::unique_ptr<QgsPolygon> polygon(
new QgsPolygon() );
188 return polygon.release();
193 return polygon.release();
201 return ext.release();
207 ext->setPoints( pts );
208 ext->addVertex( pts.at( 0 ) );
210 return ext.release();
215 if (
isEmpty() || ( mNumberSides != 3 ) )
223 return QgsTriangle( pts.at( 0 ), pts.at( 1 ), pts.at( 2 ) );
228 QVector<QgsTriangle> l_tri;
238 while ( n < mNumberSides - 1 )
240 l_tri.append(
QgsTriangle( pts.at( n ), pts.at( n + 1 ), mCenter ) );
243 l_tri.append(
QgsTriangle( pts.at( n ), pts.at( 0 ), mCenter ) );
264 rep = QStringLiteral(
"Empty" );
266 rep = QStringLiteral(
"RegularPolygon (Center: %1, First Vertex: %2, Radius: %3, Azimuth: %4)" )
267 .arg( mCenter.
asWkt( pointPrecision ), 0,
's' )
268 .arg( mFirstVertex.
asWkt( pointPrecision ), 0,
's' )
284 return ( mRadius * mRadius * mNumberSides * std::sin(
centralAngle() * M_PI / 180.0 ) ) / 2;
294 return length() * mNumberSides;
304 return mRadius * 2 * std::sin( M_PI / mNumberSides );
307 double QgsRegularPolygon::apothemToRadius(
const double apothem,
const unsigned int numSides )
const
309 return apothem / std::cos( M_PI / numSides );
314 return ( nbSides - 2 ) * 180 / nbSides;
319 return 360.0 / nbSides;
QgsPoint project(double distance, double azimuth, double inclination=90.0) const
Returns a new point which correspond to this point projected by a specified distance with specified a...
double distance(double x, double y) const
Returns the Cartesian 2D distance between this point and a specified x, y coordinate.
QgsTriangle toTriangle() const
Returns as a triangle.
void setFirstVertex(const QgsPoint &firstVertex)
Sets the first vertex.
double radius() const
Returns the radius.
static QgsPoint midpoint(const QgsPoint &pt1, const QgsPoint &pt2)
Returns a middle point between points pt1 and pt2.
Point geometry type, with support for z-dimension and m-values.
QString asWkt(int precision=17) const override
Returns a WKT representation of the geometry.
QgsCircle inscribedCircle() const
Returns the inscribed circle.
QgsPoint center() const
Returns the center point of the regular polygon.
QVector< QgsTriangle > triangulate() const
Returns a triangulation (vertices from sides to the center) of the regular polygon.
Line string geometry type, with support for z-dimension and m-values.
QString toString(int pointPrecision=17, int radiusPrecision=17, int anglePrecision=2) const
Returns a string representation of the regular polygon.
QString qgsDoubleToString(double a, int precision=17)
Returns a string representation of a double.
QgsPointSequence points() const
Returns a list including the vertices of the regular polygon.
QgsCircle circumscribedCircle() const
Returns the circumscribed circle.
double azimuth(const QgsPoint &other) const
Calculates Cartesian azimuth between this point and other one (clockwise in degree,...
double area() const
Returns the area.
QgsRegularPolygon()=default
Constructor for QgsRegularPolygon.
bool isEmpty() const
A regular polygon is empty if radius equal to 0 or number of sides < 3.
double perimeter() const
Returns the perimeter.
ConstructionOption
A regular polygon can be constructed inscribed in a circle or circumscribed about a circle.
double interiorAngle() const
Returns the measure of the interior angles in degrees.
void setNumberSides(unsigned int numberSides)
Sets the number of sides.
This document describes what qgis_wms supports does not support use feature geometry circle
double length() const
Returns the length of a side.
bool operator==(const QgsRegularPolygon &rp) const
bool isEmpty() const override
Returns true if the geometry is empty.
QVector< QgsPoint > QgsPointSequence
void setCenter(const QgsPoint ¢er)
Sets the center point.
Regular Polygon geometry type.
void setRadius(double radius)
Sets the radius.
QgsLineString * toLineString() const
Returns as a linestring.
double apothem() const
Returns the apothem of the regular polygon.
double centralAngle() const
Returns the measure of the central angle (the angle subtended at the center of the polygon by one of ...
double ANALYSIS_EXPORT angle(QgsPoint *p1, QgsPoint *p2, QgsPoint *p3, QgsPoint *p4)
Calculates the angle between two segments (in 2 dimension, z-values are ignored)
QgsPolygon * toPolygon() const
Returns as a polygon.
QgsPoint firstVertex() const
Returns the first vertex (corner) of the regular polygon.
bool operator!=(const QgsRegularPolygon &rp) const