QGIS API Documentation  3.14.0-Pi (9f7028fd23)
qgstriangle.h
Go to the documentation of this file.
1 /***************************************************************************
2  qgstriangle.h
3  -------------------
4  begin : January 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 QGSTRIANGLE_H
19 #define QGSTRIANGLE_H
20 
21 #include "qgis_core.h"
22 #include "qgis_sip.h"
23 #include "qgspolygon.h"
24 #include "qgscircle.h"
25 #include "qgslinestring.h"
26 
33 class CORE_EXPORT QgsTriangle : public QgsPolygon
34 {
35  public:
36  QgsTriangle();
37 
44  QgsTriangle( const QgsPoint &p1, const QgsPoint &p2, const QgsPoint &p3 );
45 
52  explicit QgsTriangle( const QgsPointXY &p1, const QgsPointXY &p2, const QgsPointXY &p3 );
53 
60  explicit QgsTriangle( QPointF p1, QPointF p2, QPointF p3 );
61 
62  bool operator==( const QgsTriangle &other ) const;
63  bool operator!=( const QgsTriangle &other ) const;
64 
65  QString geometryType() const override;
66  QgsTriangle *clone() const override SIP_FACTORY;
67  void clear() override;
68 
69  bool fromWkb( QgsConstWkbPtr &wkbPtr ) override;
70 
71  bool fromWkt( const QString &wkt ) override;
72 
73  // inherited: QString asWkt( int precision = 17 ) const;
74  // inherited (as a polygon): QDomElement asGML2( QDomDocument &doc, int precision = 17, const QString &ns = "gml" ) const;
75  QDomElement asGml3( QDomDocument &doc, int precision = 17, const QString &ns = "gml", QgsAbstractGeometry::AxisOrder axisOrder = QgsAbstractGeometry::AxisOrder::XY ) const override;
76 
77  QgsPolygon *surfaceToPolygon() const override SIP_FACTORY;
78 
79  QgsCurvePolygon *toCurveType() const override SIP_FACTORY;
80 
82  void addInteriorRing( QgsCurve *ring SIP_TRANSFER ) override;
83 
88  void setInteriorRings( const QVector< QgsCurve *> &rings ) = delete;
90  bool deleteVertex( QgsVertexId position ) override;
92  bool insertVertex( QgsVertexId position, const QgsPoint &vertex ) override;
93  bool moveVertex( QgsVertexId vId, const QgsPoint &newPos ) override;
94 
95  void setExteriorRing( QgsCurve *ring SIP_TRANSFER ) override;
96 
97  QgsCurve *boundary() const override SIP_FACTORY;
98 
99  // inherited: double pointDistanceToBoundary( double x, double y ) const;
100 
106  QgsPoint vertexAt( int atVertex ) const;
107 
123  QVector<double> lengths() const;
124 
140  QVector<double> angles() const;
141 
163  bool isDegenerate();
164 
183  bool isIsocele( double lengthTolerance = 0.0001 ) const;
184 
203  bool isEquilateral( double lengthTolerance = 0.0001 ) const;
204 
223  bool isRight( double angleTolerance = 0.0001 ) const;
224 
243  bool isScalene( double lengthTolerance = 0.0001 ) const;
244 
260  QVector<QgsLineString> altitudes() const;
261 
277  QVector<QgsLineString> medians() const;
278 
295  QVector<QgsLineString> bisectors( double lengthTolerance = 0.0001 ) const;
296 
312  QgsTriangle medial() const;
313 
330  QgsPoint orthocenter( double lengthTolerance = 0.0001 ) const;
331 
347  QgsPoint circumscribedCenter() const;
348 
364  double circumscribedRadius() const;
365 
381  QgsCircle circumscribedCircle() const;
382 
399  QgsPoint inscribedCenter() const;
400 
416  double inscribedRadius() const;
417 
433  QgsCircle inscribedCircle() const;
434 
435 #ifndef SIP_RUN
436 
444  inline const QgsTriangle *cast( const QgsAbstractGeometry *geom ) const
445  {
446  if ( geom && QgsWkbTypes::flatType( geom->wkbType() ) == QgsWkbTypes::Triangle )
447  return static_cast<const QgsTriangle *>( geom );
448  return nullptr;
449  }
450 #endif
451 
453 
454 
455 };
456 #endif // QGSTRIANGLE_H
QgsCurve
Abstract base class for curved geometry type.
Definition: qgscurve.h:35
qgspolygon.h
QgsPolygon::clear
void clear() override
Clears the geometry, ie reset it to a null geometry.
Definition: qgspolygon.cpp:59
QgsAbstractGeometry::wkbType
QgsWkbTypes::Type wkbType() const
Returns the WKB type of the geometry.
Definition: qgsabstractgeometry.h:189
QgsWkbTypes::Triangle
@ Triangle
Definition: qgswkbtypes.h:74
QgsCircle
Circle geometry type.
Definition: qgscircle.h:43
QgsPolygon
Polygon geometry type.
Definition: qgspolygon.h:33
qgslinestring.h
QgsPolygon::fromWkb
bool fromWkb(QgsConstWkbPtr &wkb) override
Sets the geometry from a WKB string.
Definition: qgspolygon.cpp:65
QgsPoint
Point geometry type, with support for z-dimension and m-values.
Definition: qgspoint.h:37
QgsPolygon::clone
QgsPolygon * clone() const override
Clones the geometry by performing a deep copy.
Definition: qgspolygon.cpp:54
QgsCurvePolygon
Curve polygon geometry type.
Definition: qgscurvepolygon.h:34
QgsPolygon::setExteriorRing
void setExteriorRing(QgsCurve *ring) override
Sets the exterior ring of the polygon.
Definition: qgspolygon.cpp:214
QgsPolygon::toCurveType
QgsCurvePolygon * toCurveType() const override
Returns the geometry converted to the more generic curve type QgsCurvePolygon.
Definition: qgspolygon.cpp:311
QgsCurvePolygon::deleteVertex
bool deleteVertex(QgsVertexId position) override
Deletes a vertex within the geometry.
Definition: qgscurvepolygon.cpp:1052
QgsCurvePolygon::setInteriorRings
void setInteriorRings(const QVector< QgsCurve * > &rings)
Sets all interior rings (takes ownership)
Definition: qgscurvepolygon.cpp:663
SIP_FACTORY
#define SIP_FACTORY
Definition: qgis_sip.h:76
precision
int precision
Definition: qgswfsgetfeature.cpp:103
QgsCurvePolygon::insertVertex
bool insertVertex(QgsVertexId position, const QgsPoint &vertex) override
Inserts a vertex into the geometry.
Definition: qgscurvepolygon.cpp:1004
QgsAbstractGeometry::AxisOrder
AxisOrder
Axis order for GML generation.
Definition: qgsabstractgeometry.h:128
QgsConstWkbPtr
Definition: qgswkbptr.h:127
QgsCurvePolygon::operator!=
bool operator!=(const QgsAbstractGeometry &other) const override
Definition: qgscurvepolygon.cpp:134
qgscircle.h
qgis_sip.h
SIP_TRANSFER
#define SIP_TRANSFER
Definition: qgis_sip.h:36
QgsCurvePolygon::operator==
bool operator==(const QgsAbstractGeometry &other) const override
Definition: qgscurvepolygon.cpp:97
QgsCurvePolygon::moveVertex
bool moveVertex(QgsVertexId position, const QgsPoint &newPos) override
Moves a vertex within the geometry.
Definition: qgscurvepolygon.cpp:1030
QgsAbstractGeometry
Abstract base class for all geometries.
Definition: qgsabstractgeometry.h:71
QgsPointXY
Definition: qgspointxy.h:43
QgsCurvePolygon::fromWkt
bool fromWkt(const QString &wkt) override
Sets the geometry from a WKT string.
Definition: qgscurvepolygon.cpp:207
QgsTriangle::cast
const QgsTriangle * cast(const QgsAbstractGeometry *geom) const
Cast the geom to a QgsTriangle.
Definition: qgstriangle.h:444
QgsCurvePolygon::asGml3
QDomElement asGml3(QDomDocument &doc, int precision=17, const QString &ns="gml", QgsAbstractGeometry::AxisOrder axisOrder=QgsAbstractGeometry::AxisOrder::XY) const override
Returns a GML3 representation of the geometry.
Definition: qgscurvepolygon.cpp:384
QgsPolygon::surfaceToPolygon
QgsPolygon * surfaceToPolygon() const override
Gets a polygon representation of this surface.
Definition: qgspolygon.cpp:306
QgsVertexId
Utility class for identifying a unique vertex within a geometry.
Definition: qgsabstractgeometry.h:1033
QgsPolygon::geometryType
QString geometryType() const override
Returns a unique string representing the geometry type.
Definition: qgspolygon.cpp:42
QgsPolygon::createEmptyWithSameType
QgsPolygon * createEmptyWithSameType() const override
Creates a new geometry with the same class and same WKB type as the original and transfers ownership.
Definition: qgspolygon.cpp:47
QgsPolygon::addInteriorRing
void addInteriorRing(QgsCurve *ring) override
Adds an interior ring to the geometry (takes ownership)
Definition: qgspolygon.cpp:183
QgsPolygon::boundary
QgsAbstractGeometry * boundary() const override
Returns the closure of the combinatorial boundary of the geometry (ie the topological boundary of the...
Definition: qgspolygon.cpp:249
QgsWkbTypes::flatType
static Type flatType(Type type)
Returns the flat type for a WKB type.
Definition: qgswkbtypes.h:701
QgsTriangle
Triangle geometry type.
Definition: qgstriangle.h:33
QgsCurvePolygon::vertexAt
QgsPoint vertexAt(QgsVertexId id) const override
Returns the point corresponding to a specified vertex id.
Definition: qgscurvepolygon.cpp:1144