QGIS API Documentation 3.43.0-Master (ebb4087afc0)
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
21#include <cmath>
22#include <QList>
23#include <QVector3D>
24
25#include "qgsbox3d.h"
26
27#define SIP_NO_FILE
28
34class _3D_EXPORT QgsAABB
35{
36 public:
38 QgsAABB() = default;
39
41 QgsAABB( float xMin, float yMin, float zMin, float xMax, float yMax, float zMax );
42
48 static QgsAABB fromBox3D( const QgsBox3D &box3D, const QgsVector3D &origin )
49 {
50 return QgsAABB( static_cast<float>( box3D.xMinimum() - origin.x() ), static_cast<float>( box3D.yMinimum() - origin.y() ), static_cast<float>( box3D.zMinimum() - origin.z() ), static_cast<float>( box3D.xMaximum() - origin.x() ), static_cast<float>( box3D.yMaximum() - origin.y() ), static_cast<float>( box3D.zMaximum() - origin.z() ) );
51 }
52
54 float xExtent() const { return xMax - xMin; }
56 float yExtent() const { return yMax - yMin; }
58 float zExtent() const { return zMax - zMin; }
59
61 float xCenter() const { return ( xMax + xMin ) / 2; }
63 float yCenter() const { return ( yMax + yMin ) / 2; }
65 float zCenter() const { return ( zMax + zMin ) / 2; }
66
68 QVector3D center() const { return QVector3D( xCenter(), yCenter(), zCenter() ); }
70 QVector3D minimum() const { return QVector3D( xMin, yMin, zMin ); }
72 QVector3D maximum() const { return QVector3D( xMax, yMax, zMax ); }
73
75 bool intersects( const QgsAABB &other ) const;
76
78 bool intersects( float x, float y, float z ) const;
79
81 float distanceFromPoint( float x, float y, float z ) const;
82
84 float distanceFromPoint( QVector3D v ) const;
85
87 QList<QVector3D> verticesForLines() const;
88
90 QString toString() const;
91
93 bool isEmpty() const
94 {
95 return xMin == xMax && yMin == yMax && zMin == zMax;
96 }
97
98 float xMin = 0.0f;
99 float yMin = 0.0f;
100 float zMin = 0.0f;
101 float xMax = 0.0f;
102 float yMax = 0.0f;
103 float zMax = 0.0f;
104};
105
106#endif // QGSAABB_H
float yExtent() const
Returns box width in Y axis.
Definition qgsaabb.h:56
QVector3D center() const
Returns coordinates of the center of the box.
Definition qgsaabb.h:68
float xExtent() const
Returns box width in X axis.
Definition qgsaabb.h:54
float xCenter() const
Returns center in X axis.
Definition qgsaabb.h:61
float zExtent() const
Returns box width in Z axis.
Definition qgsaabb.h:58
bool isEmpty() const
Returns true if xExtent(), yExtent() and zExtent() are all zero, false otherwise.
Definition qgsaabb.h:93
QVector3D minimum() const
Returns corner of the box with minimal coordinates.
Definition qgsaabb.h:70
float yCenter() const
Returns center in Y axis.
Definition qgsaabb.h:63
QgsAABB()=default
Constructs bounding box with null coordinates.
QVector3D maximum() const
Returns corner of the box with maximal coordinates.
Definition qgsaabb.h:72
float zCenter() const
Returns center in Z axis.
Definition qgsaabb.h:65
static QgsAABB fromBox3D(const QgsBox3D &box3D, const QgsVector3D &origin)
Constructs bounding box from QgsBox3D by subtracting origin 3D vector.
Definition qgsaabb.h:48
A 3-dimensional box composed of x, y, z coordinates.
Definition qgsbox3d.h:43
double yMaximum() const
Returns the maximum y value.
Definition qgsbox3d.h:231
double xMinimum() const
Returns the minimum x value.
Definition qgsbox3d.h:196
double zMaximum() const
Returns the maximum z value.
Definition qgsbox3d.h:259
double xMaximum() const
Returns the maximum x value.
Definition qgsbox3d.h:203
double zMinimum() const
Returns the minimum z value.
Definition qgsbox3d.h:252
double yMinimum() const
Returns the minimum y value.
Definition qgsbox3d.h:224
Class for storage of 3D vectors similar to QVector3D, with the difference that it uses double precisi...
Definition qgsvector3d.h:31
double y() const
Returns Y coordinate.
Definition qgsvector3d.h:50
double z() const
Returns Z coordinate.
Definition qgsvector3d.h:52
double x() const
Returns X coordinate.
Definition qgsvector3d.h:48