QGIS API Documentation 3.99.0-Master (a8f284845db)
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( 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() ) );
49 }
50
52 float xExtent() const { return xMax - xMin; }
54 float yExtent() const { return yMax - yMin; }
56 float zExtent() const { return zMax - zMin; }
57
59 float xCenter() const { return ( xMax + xMin ) / 2; }
61 float yCenter() const { return ( yMax + yMin ) / 2; }
63 float zCenter() const { return ( zMax + zMin ) / 2; }
64
66 QVector3D center() const { return QVector3D( xCenter(), yCenter(), zCenter() ); }
68 QVector3D minimum() const { return QVector3D( xMin, yMin, zMin ); }
70 QVector3D maximum() const { return QVector3D( xMax, yMax, zMax ); }
71
73 bool intersects( const QgsAABB &other ) const;
74
76 bool intersects( float x, float y, float z ) const;
77
79 float distanceFromPoint( float x, float y, float z ) const;
80
82 float distanceFromPoint( QVector3D v ) const;
83
85 QList<QVector3D> verticesForLines() const;
86
88 QString toString() const;
89
91 bool isEmpty() const
92 {
93 return xMin == xMax && yMin == yMax && zMin == zMax;
94 }
95
96 float xMin = 0.0f;
97 float yMin = 0.0f;
98 float zMin = 0.0f;
99 float xMax = 0.0f;
100 float yMax = 0.0f;
101 float zMax = 0.0f;
102};
103
104#endif // QGSAABB_H
Axis-aligned bounding box - in world coords.
Definition qgsaabb.h:33
float yMax
Definition qgsaabb.h:100
float yExtent() const
Returns box width in Y axis.
Definition qgsaabb.h:54
float xMax
Definition qgsaabb.h:99
QVector3D center() const
Returns coordinates of the center of the box.
Definition qgsaabb.h:66
float xExtent() const
Returns box width in X axis.
Definition qgsaabb.h:52
float xCenter() const
Returns center in X axis.
Definition qgsaabb.h:59
float zExtent() const
Returns box width in Z axis.
Definition qgsaabb.h:56
float xMin
Definition qgsaabb.h:96
float zMax
Definition qgsaabb.h:101
float yMin
Definition qgsaabb.h:97
bool isEmpty() const
Returns true if xExtent(), yExtent() and zExtent() are all zero, false otherwise.
Definition qgsaabb.h:91
QVector3D minimum() const
Returns corner of the box with minimal coordinates.
Definition qgsaabb.h:68
float yCenter() const
Returns center in Y axis.
Definition qgsaabb.h:61
QgsAABB()=default
Constructs bounding box with null coordinates.
float zMin
Definition qgsaabb.h:98
QVector3D maximum() const
Returns corner of the box with maximal coordinates.
Definition qgsaabb.h:70
float zCenter() const
Returns center in Z axis.
Definition qgsaabb.h:63
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:233
double xMinimum() const
Returns the minimum x value.
Definition qgsbox3d.h:198
double zMaximum() const
Returns the maximum z value.
Definition qgsbox3d.h:261
double xMaximum() const
Returns the maximum x value.
Definition qgsbox3d.h:205
double zMinimum() const
Returns the minimum z value.
Definition qgsbox3d.h:254
double yMinimum() const
Returns the minimum y value.
Definition qgsbox3d.h:226
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:52
double z() const
Returns Z coordinate.
Definition qgsvector3d.h:54
double x() const
Returns X coordinate.
Definition qgsvector3d.h:50