QGIS API Documentation  3.6.0-Noosa (5873452)
qgs3dutils.h
Go to the documentation of this file.
1 /***************************************************************************
2  qgs3dutils.h
3  --------------------------------------
4  Date : July 2017
5  Copyright : (C) 2017 by Martin Dobias
6  Email : wonder dot sk at gmail dot com
7  ***************************************************************************
8  * *
9  * This program is free software; you can redistribute it and/or modify *
10  * it under the terms of the GNU General Public License as published by *
11  * the Free Software Foundation; either version 2 of the License, or *
12  * (at your option) any later version. *
13  * *
14  ***************************************************************************/
15 
16 #ifndef QGS3DUTILS_H
17 #define QGS3DUTILS_H
18 
19 #include "qgis_sip.h"
20 
21 class QgsLineString;
22 class QgsPolygon;
23 
26 class Qgs3DMapScene;
27 
28 namespace Qt3DExtras
29 {
30  class QPhongMaterial;
31 }
32 
33 #include "qgs3dmapsettings.h"
34 #include "qgs3dtypes.h"
35 #include "qgsaabb.h"
36 
37 #include <memory>
38 
39 #ifndef SIP_RUN
40 
46 class _3D_EXPORT Qgs3DUtils
47 {
48  public:
49 
55  static QImage captureSceneImage( QgsAbstract3DEngine &engine, Qgs3DMapScene *scene );
56 
61  static int maxZoomLevel( double tile0width, double tileResolution, double maxError );
62 
64  static QString altClampingToString( Qgs3DTypes::AltitudeClamping altClamp );
66  static Qgs3DTypes::AltitudeClamping altClampingFromString( const QString &str );
67 
69  static QString altBindingToString( Qgs3DTypes::AltitudeBinding altBind );
71  static Qgs3DTypes::AltitudeBinding altBindingFromString( const QString &str );
72 
74  static QString cullingModeToString( Qgs3DTypes::CullingMode mode );
76  static Qgs3DTypes::CullingMode cullingModeFromString( const QString &str );
77 
79  static float clampAltitude( const QgsPoint &p, Qgs3DTypes::AltitudeClamping altClamp, Qgs3DTypes::AltitudeBinding altBind, float height, const QgsPoint &centroid, const Qgs3DMapSettings &map );
81  static void clampAltitudes( QgsLineString *lineString, Qgs3DTypes::AltitudeClamping altClamp, Qgs3DTypes::AltitudeBinding altBind, const QgsPoint &centroid, float height, const Qgs3DMapSettings &map );
83  static bool clampAltitudes( QgsPolygon *polygon, Qgs3DTypes::AltitudeClamping altClamp, Qgs3DTypes::AltitudeBinding altBind, float height, const Qgs3DMapSettings &map );
84 
86  static QString matrix4x4toString( const QMatrix4x4 &m );
88  static QMatrix4x4 stringToMatrix4x4( const QString &str );
89 
91  static void extractPointPositions( QgsFeature &f, const Qgs3DMapSettings &map, Qgs3DTypes::AltitudeClamping altClamp, QVector<QVector3D> &positions );
92 
97  static bool isCullable( const QgsAABB &bbox, const QMatrix4x4 &viewProjectionMatrix );
98 
100  static QgsVector3D mapToWorldCoordinates( const QgsVector3D &mapCoords, const QgsVector3D &origin );
102  static QgsVector3D worldToMapCoordinates( const QgsVector3D &worldCoords, const QgsVector3D &origin );
103 
105  static QgsVector3D transformWorldCoordinates( const QgsVector3D &worldPoint1, const QgsVector3D &origin1, const QgsCoordinateReferenceSystem &crs1, const QgsVector3D &origin2, const QgsCoordinateReferenceSystem &crs2,
106  const QgsCoordinateTransformContext &context );
107 
109  static std::unique_ptr<QgsAbstract3DSymbol> symbolForGeometryType( QgsWkbTypes::GeometryType geomType );
110 
112  static QgsExpressionContext globalProjectLayerExpressionContext( QgsVectorLayer *layer );
113 
115  static Qt3DExtras::QPhongMaterial *phongMaterial( const QgsPhongMaterialSettings &settings );
116 };
117 
118 #endif
119 
120 #endif // QGS3DUTILS_H
AltitudeClamping
how to handle altitude of vector features
Definition: qgs3dtypes.h:34
3 Class for storage of 3D vectors similar to QVector3D, with the difference that it uses double preci...
Definition: qgsvector3d.h:31
3 Axis-aligned bounding box - in world coords.
Definition: qgsaabb.h:30
CullingMode
Triangle culling mode.
Definition: qgs3dtypes.h:49
The feature class encapsulates a single feature including its id, geometry and a list of field/values...
Definition: qgsfeature.h:55
3 Basic shading material used for rendering based on the Phong shading model with three color compone...
3 Definition of the world
3 Abstract base class for 3D symbols that are used by VectorLayer3DRenderer objects.
Expression contexts are used to encapsulate the parameters around which a QgsExpression should be eva...
3 Base class for 3D engine implementation.
Contains information about the context in which a coordinate transform is executed.
Point geometry type, with support for z-dimension and m-values.
Definition: qgspoint.h:37
AltitudeBinding
how to handle clamping of vertices of individual features
Definition: qgs3dtypes.h:42
GeometryType
The geometry types are used to group QgsWkbTypes::Type in a coarse way.
Definition: qgswkbtypes.h:138
3 Entity that encapsulates our 3D scene - contains all other entities (such as terrain) as children...
Definition: qgs3dmapscene.h:53
Line string geometry type, with support for z-dimension and m-values.
Definition: qgslinestring.h:43
This class represents a coordinate reference system (CRS).
Polygon geometry type.
Definition: qgspolygon.h:31
Represents a vector layer which manages a vector based data sets.
3 Miscellaneous utility functions used from 3D code.
Definition: qgs3dutils.h:46