QGIS API Documentation 4.1.0-Master (5bf3c20f3c9)
Loading...
Searching...
No Matches
qgsaabb.h
Go to the documentation of this file.
1/***************************************************************************
2 qgsaabb.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 QGSAABB_H
17#define QGSAABB_H
18
19#include "qgis_3d.h"
20#include "qgsbox3d.h"
21
22#include <QList>
23#include <QVector3D>
24
25#define SIP_NO_FILE
26
32class _3D_EXPORT QgsAABB
33{
34 public:
36 QgsAABB() = default;
37
39 QgsAABB( float xMin, float yMin, float zMin, float xMax, float yMax, float zMax );
40
46 static QgsAABB fromBox3D( const QgsBox3D &box3D, const QgsVector3D &origin )
47 {
48 return QgsAABB(
49 static_cast<float>( box3D.xMinimum() - origin.x() ),
50 static_cast<float>( box3D.yMinimum() - origin.y() ),
51 static_cast<float>( box3D.zMinimum() - origin.z() ),
52 static_cast<float>( box3D.xMaximum() - origin.x() ),
53 static_cast<float>( box3D.yMaximum() - origin.y() ),
54 static_cast<float>( box3D.zMaximum() - origin.z() )
55 );
56 }
57
59 float xExtent() const { return xMax - xMin; }
61 float yExtent() const { return yMax - yMin; }
63 float zExtent() const { return zMax - zMin; }
64
66 float xCenter() const { return ( xMax + xMin ) / 2; }
68 float yCenter() const { return ( yMax + yMin ) / 2; }
70 float zCenter() const { return ( zMax + zMin ) / 2; }
71
73 QVector3D center() const { return QVector3D( xCenter(), yCenter(), zCenter() ); }
75 QVector3D minimum() const { return QVector3D( xMin, yMin, zMin ); }
77 QVector3D maximum() const { return QVector3D( xMax, yMax, zMax ); }
78
80 bool intersects( const QgsAABB &other ) const;
81
83 bool intersects( float x, float y, float z ) const;
84
86 float distanceFromPoint( float x, float y, float z ) const;
87
89 float distanceFromPoint( QVector3D v ) const;
90
92 QList<QVector3D> verticesForLines() const;
93
95 QString toString() const;
96
98 bool isEmpty() const { return xMin == xMax && yMin == yMax && zMin == zMax; }
99
100 float xMin = 0.0f;
101 float yMin = 0.0f;
102 float zMin = 0.0f;
103 float xMax = 0.0f;
104 float yMax = 0.0f;
105 float zMax = 0.0f;
106};
107
108#endif // QGSAABB_H
Axis-aligned bounding box - in world coords.
Definition qgsaabb.h:33
float yMax
Definition qgsaabb.h:104
float yExtent() const
Returns box width in Y axis.
Definition qgsaabb.h:61
float xMax
Definition qgsaabb.h:103
QVector3D center() const
Returns coordinates of the center of the box.
Definition qgsaabb.h:73
float xExtent() const
Returns box width in X axis.
Definition qgsaabb.h:59
float xCenter() const
Returns center in X axis.
Definition qgsaabb.h:66
float zExtent() const
Returns box width in Z axis.
Definition qgsaabb.h:63
float xMin
Definition qgsaabb.h:100
float zMax
Definition qgsaabb.h:105
float yMin
Definition qgsaabb.h:101
bool isEmpty() const
Returns true if xExtent(), yExtent() and zExtent() are all zero, false otherwise.
Definition qgsaabb.h:98
QVector3D minimum() const
Returns corner of the box with minimal coordinates.
Definition qgsaabb.h:75
float yCenter() const
Returns center in Y axis.
Definition qgsaabb.h:68
QgsAABB()=default
Constructs bounding box with null coordinates.
float zMin
Definition qgsaabb.h:102
QVector3D maximum() const
Returns corner of the box with maximal coordinates.
Definition qgsaabb.h:77
float zCenter() const
Returns center in Z axis.
Definition qgsaabb.h:70
static QgsAABB fromBox3D(const QgsBox3D &box3D, const QgsVector3D &origin)
Constructs bounding box from QgsBox3D by subtracting origin 3D vector.
Definition qgsaabb.h:46
A 3-dimensional box composed of x, y, z coordinates.
Definition qgsbox3d.h:45
double yMaximum() const
Returns the maximum y value.
Definition qgsbox3d.h:240
double xMinimum() const
Returns the minimum x value.
Definition qgsbox3d.h:205
double zMaximum() const
Returns the maximum z value.
Definition qgsbox3d.h:268
double xMaximum() const
Returns the maximum x value.
Definition qgsbox3d.h:212
double zMinimum() const
Returns the minimum z value.
Definition qgsbox3d.h:261
double yMinimum() const
Returns the minimum y value.
Definition qgsbox3d.h:233
A 3D vector (similar to QVector3D) with the difference that it uses double precision instead of singl...
Definition qgsvector3d.h:33
double y() const
Returns Y coordinate.
Definition qgsvector3d.h:60
double z() const
Returns Z coordinate.
Definition qgsvector3d.h:62
double x() const
Returns X coordinate.
Definition qgsvector3d.h:58