mirror of
				https://github.com/qgis/QGIS.git
				synced 2025-11-04 00:04:25 -05:00 
			
		
		
		
	
		
			
				
	
	
		
			445 lines
		
	
	
		
			13 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			445 lines
		
	
	
		
			13 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
/************************************************************************
 | 
						|
 * This file has been generated automatically from                      *
 | 
						|
 *                                                                      *
 | 
						|
 * src/core/geometry/qgsbox3d.h                                         *
 | 
						|
 *                                                                      *
 | 
						|
 * Do not edit manually ! Edit header and run scripts/sipify.pl again   *
 | 
						|
 ************************************************************************/
 | 
						|
 | 
						|
 | 
						|
 | 
						|
 | 
						|
 | 
						|
 | 
						|
 | 
						|
class QgsBox3D
 | 
						|
{
 | 
						|
%Docstring(signature="appended")
 | 
						|
A 3-dimensional box composed of x, y, z coordinates.
 | 
						|
 | 
						|
A box composed of x/y/z minimum and maximum values. It is often used to return the 3D
 | 
						|
extent of a geometry or collection of geometries.
 | 
						|
 | 
						|
.. note::
 | 
						|
 | 
						|
   In QGIS 3.34 this class was renamed from :py:class:`QgsBox3d` to :py:class:`QgsBox3D`. The old :py:class:`QgsBox3d` name
 | 
						|
   remains available in PyQGIS for compatibility.
 | 
						|
 | 
						|
.. seealso:: :py:class:`QgsRectangle`
 | 
						|
%End
 | 
						|
 | 
						|
%TypeHeaderCode
 | 
						|
#include "qgsbox3d.h"
 | 
						|
%End
 | 
						|
  public:
 | 
						|
    static const QMetaObject staticMetaObject;
 | 
						|
 | 
						|
  public:
 | 
						|
 | 
						|
    QgsBox3D( SIP_PYOBJECT x /TypeHint="Optional[Union[QgsPoint, QgsRectangle, float]]"/ = Py_None, SIP_PYOBJECT y /TypeHint="Optional[QgsPoint, float]"/ = Py_None, SIP_PYOBJECT z /TypeHint="Optional[Union[bool, float]]"/ = Py_None, SIP_PYOBJECT x2 /TypeHint="Optional[Union[bool, float]]"/ = Py_None, SIP_PYOBJECT y2 /TypeHint="Optional[float]"/ = Py_None, SIP_PYOBJECT z2 /TypeHint="Optional[float]"/ = Py_None, SIP_PYOBJECT n /TypeHint="Optional[bool]"/ = Py_None ) [( double x = 0.0, double y = 0.0, double z = 0.0, double x2 = 0.0, double y2 = 0.0, double z2 = 0.0, bool n = true )];
 | 
						|
%Docstring
 | 
						|
Constructor for QgsBox3D which accepts the ranges of x/y/z coordinates. If ``normalize`` is ``False`` then
 | 
						|
the normalization step will not be applied automatically.
 | 
						|
%End
 | 
						|
%MethodCode
 | 
						|
    if ( sipCanConvertToType( a0, sipType_QgsRectangle, SIP_NOT_NONE ) && a4 == Py_None && a5 == Py_None && a6 == Py_None )
 | 
						|
    {
 | 
						|
      int state;
 | 
						|
      sipIsErr = 0;
 | 
						|
 | 
						|
      QgsRectangle *p = reinterpret_cast<QgsRectangle *>( sipConvertToType( a0, sipType_QgsRectangle, 0, SIP_NOT_NONE, &state, &sipIsErr ) );
 | 
						|
      if ( sipIsErr )
 | 
						|
      {
 | 
						|
        sipReleaseType( p, sipType_QgsRectangle, state );
 | 
						|
      }
 | 
						|
      else
 | 
						|
      {
 | 
						|
        double z1 = a1 == Py_None ? std::numeric_limits<double>::quiet_NaN() : PyFloat_AsDouble( a1 );
 | 
						|
        double z2 = a2 == Py_None ? std::numeric_limits<double>::quiet_NaN() : PyFloat_AsDouble( a2 );
 | 
						|
        bool n = a3 == Py_None ? true : PyObject_IsTrue( a3 );
 | 
						|
 | 
						|
        sipCpp = new QgsBox3D( *p, z1, z2, n );
 | 
						|
      }
 | 
						|
    }
 | 
						|
    else if ( sipCanConvertToType( a0, sipType_QgsPoint, SIP_NOT_NONE ) && sipCanConvertToType( a1, sipType_QgsPoint, SIP_NOT_NONE ) && a3 == Py_None && a4 == Py_None && a5 == Py_None && a6 == Py_None )
 | 
						|
    {
 | 
						|
      int state;
 | 
						|
      sipIsErr = 0;
 | 
						|
 | 
						|
      QgsPoint *pt1 = reinterpret_cast<QgsPoint *>( sipConvertToType( a0, sipType_QgsPoint, 0, SIP_NOT_NONE, &state, &sipIsErr ) );
 | 
						|
      if ( sipIsErr )
 | 
						|
      {
 | 
						|
        sipReleaseType( pt1, sipType_QgsPoint, state );
 | 
						|
      }
 | 
						|
      else
 | 
						|
      {
 | 
						|
        QgsPoint *pt2 = reinterpret_cast<QgsPoint *>( sipConvertToType( a1, sipType_QgsPoint, 0, SIP_NOT_NONE, &state, &sipIsErr ) );
 | 
						|
        if ( sipIsErr )
 | 
						|
        {
 | 
						|
          sipReleaseType( pt2, sipType_QgsPoint, state );
 | 
						|
        }
 | 
						|
        else
 | 
						|
        {
 | 
						|
          bool n = a2 == Py_None ? true : PyObject_IsTrue( a2 );
 | 
						|
          sipCpp = new QgsBox3D( *pt1, *pt2, n );
 | 
						|
        }
 | 
						|
      }
 | 
						|
    }
 | 
						|
    else if (
 | 
						|
      ( a0 == Py_None || PyFloat_AsDouble( a0 ) != -1.0 || !PyErr_Occurred() ) &&
 | 
						|
      ( a1 == Py_None || PyFloat_AsDouble( a1 ) != -1.0 || !PyErr_Occurred() ) &&
 | 
						|
      ( a2 == Py_None || PyFloat_AsDouble( a2 ) != -1.0 || !PyErr_Occurred() ) &&
 | 
						|
      ( a3 == Py_None || PyFloat_AsDouble( a3 ) != -1.0 || !PyErr_Occurred() ) &&
 | 
						|
      ( a4 == Py_None || PyFloat_AsDouble( a3 ) != -1.0 || !PyErr_Occurred() ) &&
 | 
						|
      ( a5 == Py_None || PyFloat_AsDouble( a3 ) != -1.0 || !PyErr_Occurred() ) &&
 | 
						|
      ( a6 == Py_None || PyFloat_AsDouble( a3 ) != -1.0 || !PyErr_Occurred() ) )
 | 
						|
    {
 | 
						|
      double x1 = a0 == Py_None ? std::numeric_limits<double>::quiet_NaN() : PyFloat_AsDouble( a0 );
 | 
						|
      double y1 = a1 == Py_None ? std::numeric_limits<double>::quiet_NaN() : PyFloat_AsDouble( a1 );
 | 
						|
      double z1 = a2 == Py_None ? std::numeric_limits<double>::quiet_NaN() : PyFloat_AsDouble( a2 );
 | 
						|
      double x2 = a3 == Py_None ? std::numeric_limits<double>::quiet_NaN() : PyFloat_AsDouble( a3 );
 | 
						|
      double y2 = a4 == Py_None ? std::numeric_limits<double>::quiet_NaN() : PyFloat_AsDouble( a4 );
 | 
						|
      double z2 = a5 == Py_None ? std::numeric_limits<double>::quiet_NaN() : PyFloat_AsDouble( a5 );
 | 
						|
      bool n = a6 == Py_None ? true : PyObject_IsTrue( a6 );
 | 
						|
      sipCpp = new QgsBox3D( x1, y1, z1, x2, y2, z2, n );
 | 
						|
    }
 | 
						|
    else // Invalid ctor arguments
 | 
						|
    {
 | 
						|
      PyErr_SetString( PyExc_TypeError, QStringLiteral( "Invalid type in constructor arguments." ).toUtf8().constData() );
 | 
						|
      sipIsErr = 1;
 | 
						|
    }
 | 
						|
%End
 | 
						|
 | 
						|
    void set( double xMin, double yMin, double zMin, double xMax, double yMax, double zMax, bool normalize = true );
 | 
						|
%Docstring
 | 
						|
Sets the box from a set of (x,y,z) minimum and maximum coordinates.
 | 
						|
 | 
						|
.. versionadded:: 3.40
 | 
						|
%End
 | 
						|
 | 
						|
    void setXMinimum( double x ) /HoldGIL/;
 | 
						|
%Docstring
 | 
						|
Sets the minimum ``x`` value.
 | 
						|
 | 
						|
.. seealso:: :py:func:`xMinimum`
 | 
						|
 | 
						|
.. seealso:: :py:func:`setXMaximum`
 | 
						|
%End
 | 
						|
 | 
						|
    void setXMaximum( double x ) /HoldGIL/;
 | 
						|
%Docstring
 | 
						|
Sets the maximum ``x`` value.
 | 
						|
 | 
						|
.. seealso:: :py:func:`xMaximum`
 | 
						|
 | 
						|
.. seealso:: :py:func:`setXMinimum`
 | 
						|
%End
 | 
						|
 | 
						|
    double xMinimum() const /HoldGIL/;
 | 
						|
%Docstring
 | 
						|
Returns the minimum x value.
 | 
						|
 | 
						|
.. seealso:: :py:func:`setXMinimum`
 | 
						|
 | 
						|
.. seealso:: :py:func:`xMaximum`
 | 
						|
%End
 | 
						|
 | 
						|
    double xMaximum() const /HoldGIL/;
 | 
						|
%Docstring
 | 
						|
Returns the maximum x value.
 | 
						|
 | 
						|
.. seealso:: :py:func:`setXMaximum`
 | 
						|
 | 
						|
.. seealso:: :py:func:`xMinimum`
 | 
						|
%End
 | 
						|
 | 
						|
    void setYMinimum( double y ) /HoldGIL/;
 | 
						|
%Docstring
 | 
						|
Sets the minimum ``y`` value.
 | 
						|
 | 
						|
.. seealso:: :py:func:`yMinimum`
 | 
						|
 | 
						|
.. seealso:: :py:func:`setYMaximum`
 | 
						|
%End
 | 
						|
 | 
						|
    void setYMaximum( double y ) /HoldGIL/;
 | 
						|
%Docstring
 | 
						|
Sets the maximum ``y`` value.
 | 
						|
 | 
						|
.. seealso:: :py:func:`yMaximum`
 | 
						|
 | 
						|
.. seealso:: :py:func:`setYMinimum`
 | 
						|
%End
 | 
						|
 | 
						|
    double yMinimum() const /HoldGIL/;
 | 
						|
%Docstring
 | 
						|
Returns the minimum y value.
 | 
						|
 | 
						|
.. seealso:: :py:func:`setYMinimum`
 | 
						|
 | 
						|
.. seealso:: :py:func:`yMaximum`
 | 
						|
%End
 | 
						|
 | 
						|
    double yMaximum() const /HoldGIL/;
 | 
						|
%Docstring
 | 
						|
Returns the maximum y value.
 | 
						|
 | 
						|
.. seealso:: :py:func:`setYMaximum`
 | 
						|
 | 
						|
.. seealso:: :py:func:`yMinimum`
 | 
						|
%End
 | 
						|
 | 
						|
    void setZMinimum( double z ) /HoldGIL/;
 | 
						|
%Docstring
 | 
						|
Sets the minimum ``z`` value.
 | 
						|
 | 
						|
.. seealso:: :py:func:`zMinimum`
 | 
						|
 | 
						|
.. seealso:: :py:func:`setZMaximum`
 | 
						|
%End
 | 
						|
 | 
						|
    void setZMaximum( double z ) /HoldGIL/;
 | 
						|
%Docstring
 | 
						|
Sets the maximum ``z`` value.
 | 
						|
 | 
						|
.. seealso:: :py:func:`zMaximum`
 | 
						|
 | 
						|
.. seealso:: :py:func:`setZMinimum`
 | 
						|
%End
 | 
						|
 | 
						|
    double zMinimum() const /HoldGIL/;
 | 
						|
%Docstring
 | 
						|
Returns the minimum z value.
 | 
						|
 | 
						|
.. seealso:: :py:func:`setZMinimum`
 | 
						|
 | 
						|
.. seealso:: :py:func:`zMaximum`
 | 
						|
%End
 | 
						|
 | 
						|
    double zMaximum() const /HoldGIL/;
 | 
						|
%Docstring
 | 
						|
Returns the maximum z value.
 | 
						|
 | 
						|
.. seealso:: :py:func:`setZMaximum`
 | 
						|
 | 
						|
.. seealso:: :py:func:`zMinimum`
 | 
						|
%End
 | 
						|
 | 
						|
    void setNull() /HoldGIL/;
 | 
						|
%Docstring
 | 
						|
Mark a box as being null (holding no spatial information).
 | 
						|
 | 
						|
.. versionadded:: 3.34
 | 
						|
%End
 | 
						|
 | 
						|
    void normalize() /HoldGIL/;
 | 
						|
%Docstring
 | 
						|
Normalize the box so it has non-negative width/height/depth.
 | 
						|
%End
 | 
						|
 | 
						|
    double width() const /HoldGIL/;
 | 
						|
%Docstring
 | 
						|
Returns the width of the box.
 | 
						|
 | 
						|
.. seealso:: :py:func:`height`
 | 
						|
 | 
						|
.. seealso:: :py:func:`depth`
 | 
						|
%End
 | 
						|
 | 
						|
    double height() const /HoldGIL/;
 | 
						|
%Docstring
 | 
						|
Returns the height of the box.
 | 
						|
 | 
						|
.. seealso:: :py:func:`width`
 | 
						|
 | 
						|
.. seealso:: :py:func:`depth`
 | 
						|
%End
 | 
						|
 | 
						|
    double depth() const /HoldGIL/;
 | 
						|
%Docstring
 | 
						|
Returns the depth of the box.
 | 
						|
 | 
						|
.. seealso:: :py:func:`width`
 | 
						|
 | 
						|
.. seealso:: :py:func:`height`
 | 
						|
%End
 | 
						|
 | 
						|
    QgsVector3D center() const /HoldGIL/;
 | 
						|
%Docstring
 | 
						|
Returns the center of the box as a vector.
 | 
						|
 | 
						|
.. versionadded:: 3.34
 | 
						|
%End
 | 
						|
 | 
						|
    double area() const /HoldGIL/;
 | 
						|
%Docstring
 | 
						|
Returns the area of the box.
 | 
						|
 | 
						|
.. versionadded:: 3.40
 | 
						|
%End
 | 
						|
 | 
						|
    double volume() const /HoldGIL/;
 | 
						|
%Docstring
 | 
						|
Returns the volume of the box.
 | 
						|
%End
 | 
						|
 | 
						|
    QgsBox3D intersect( const QgsBox3D &other ) const /HoldGIL/;
 | 
						|
%Docstring
 | 
						|
Returns the intersection of this box and another 3D box.
 | 
						|
%End
 | 
						|
 | 
						|
    bool is2d() const /HoldGIL/;
 | 
						|
%Docstring
 | 
						|
Returns ``True`` if the box can be considered a 2-dimensional box, i.e.
 | 
						|
it has equal minimum and maximum z values.
 | 
						|
%End
 | 
						|
 | 
						|
    bool is3D() const /HoldGIL/;
 | 
						|
%Docstring
 | 
						|
Returns ``True`` if the box can be considered a 3-dimensional box, i.e.
 | 
						|
it has valid minimum and maximum z values.
 | 
						|
If the box is not normalized, this returns ``False``.
 | 
						|
 | 
						|
.. versionadded:: 3.34
 | 
						|
%End
 | 
						|
 | 
						|
    bool intersects( const QgsBox3D &other ) const /HoldGIL/;
 | 
						|
%Docstring
 | 
						|
Returns ``True`` if box intersects with another box.
 | 
						|
%End
 | 
						|
 | 
						|
    bool contains( const QgsBox3D &other ) const /HoldGIL/;
 | 
						|
%Docstring
 | 
						|
Returns ``True`` when box contains other box.
 | 
						|
%End
 | 
						|
 | 
						|
    bool contains( const QgsPoint &point ) const /HoldGIL/;
 | 
						|
%Docstring
 | 
						|
Returns ``True`` when box contains a ``point``.
 | 
						|
 | 
						|
If the point is a 2D point (no z-coordinate), then the containment test
 | 
						|
will be performed on the x/y extent of the box only.
 | 
						|
%End
 | 
						|
 | 
						|
    bool contains( double x, double y, double z ) const /HoldGIL/;
 | 
						|
%Docstring
 | 
						|
Returns ``True`` when box contains a point (``x``, ``y``, ``z``).
 | 
						|
A point on the border of the box will also return ``True``
 | 
						|
 | 
						|
If the point is a 2D point (no z-coordinate), then the containment test
 | 
						|
will be performed on the x/y extent of the box only.
 | 
						|
 | 
						|
.. versionadded:: 3.34
 | 
						|
%End
 | 
						|
 | 
						|
    void combineWith( const QgsBox3D &box ) /HoldGIL/;
 | 
						|
%Docstring
 | 
						|
Expands the bbox so that it covers both the original rectangle and the given rectangle.
 | 
						|
 | 
						|
.. versionadded:: 3.34
 | 
						|
%End
 | 
						|
 | 
						|
    void combineWith( double x, double y, double z ) /HoldGIL/;
 | 
						|
%Docstring
 | 
						|
Expands the bbox so that it covers both the original rectangle and the given point.
 | 
						|
 | 
						|
.. versionadded:: 3.34
 | 
						|
%End
 | 
						|
 | 
						|
    QgsRectangle toRectangle() const /HoldGIL/;
 | 
						|
%Docstring
 | 
						|
Converts the box to a 2D rectangle.
 | 
						|
%End
 | 
						|
 | 
						|
    double distanceTo( const  QVector3D &point ) const /HoldGIL/;
 | 
						|
%Docstring
 | 
						|
Returns the smallest distance between the box and the point ``point``
 | 
						|
(returns 0 if the point is inside the box)
 | 
						|
 | 
						|
.. versionadded:: 3.18
 | 
						|
%End
 | 
						|
 | 
						|
    bool operator==( const QgsBox3D &other ) const /HoldGIL/;
 | 
						|
 | 
						|
    void scale( double scaleFactor, const QgsPoint ¢er = QgsPoint() ) /HoldGIL/;
 | 
						|
%Docstring
 | 
						|
Scale the rectangle around a ``center`` :py:class:`QgsPoint`.
 | 
						|
 | 
						|
If no ``center`` point is specified then the current center of the box will be used.
 | 
						|
 | 
						|
.. versionadded:: 3.26
 | 
						|
%End
 | 
						|
 | 
						|
    void scale( double scaleFactor, double centerX, double centerY, double centerZ ) /HoldGIL/;
 | 
						|
%Docstring
 | 
						|
Scale the rectangle around a center coordinates.
 | 
						|
 | 
						|
.. versionadded:: 3.26
 | 
						|
%End
 | 
						|
 | 
						|
    bool isNull() const /HoldGIL/;
 | 
						|
%Docstring
 | 
						|
Test if the box is null (holding no spatial information).
 | 
						|
 | 
						|
A null box is also an empty box.
 | 
						|
 | 
						|
.. seealso:: :py:func:`setNull`
 | 
						|
 | 
						|
.. versionadded:: 3.34
 | 
						|
%End
 | 
						|
 | 
						|
    bool isEmpty() const /HoldGIL/;
 | 
						|
%Docstring
 | 
						|
Returns ``True`` if the box is empty.
 | 
						|
An empty box may still be non-null if it contains valid
 | 
						|
spatial information (e.g. bounding box of a point or of a vertical
 | 
						|
or horizontal segment).
 | 
						|
 | 
						|
.. versionadded:: 3.34
 | 
						|
%End
 | 
						|
 | 
						|
    QString toString( int precision = 16 ) const /HoldGIL/;
 | 
						|
%Docstring
 | 
						|
Returns a string representation of form xmin,ymin,zmin : xmax,ymax,zmax
 | 
						|
Coordinates will be truncated to the specified precision.
 | 
						|
If the specified precision is less than 0, a suitable minimum precision is used.
 | 
						|
 | 
						|
.. versionadded:: 3.34
 | 
						|
%End
 | 
						|
 | 
						|
    QVector< QgsVector3D > corners() const /HoldGIL/;
 | 
						|
%Docstring
 | 
						|
Returns an array of all box corners as 3D vectors.
 | 
						|
%End
 | 
						|
 | 
						|
    QgsBox3D operator-( const QgsVector3D &v ) const /HoldGIL/;
 | 
						|
 | 
						|
    QgsBox3D operator+( const QgsVector3D &v ) const /HoldGIL/;
 | 
						|
 | 
						|
    QgsBox3D &operator-=( const QgsVector3D &v ) /HoldGIL/;
 | 
						|
 | 
						|
    QgsBox3D &operator+=( const QgsVector3D &v ) /HoldGIL/;
 | 
						|
 | 
						|
 | 
						|
    SIP_PYOBJECT __repr__();
 | 
						|
%MethodCode
 | 
						|
    QString str = QStringLiteral( "<QgsBox3D(%1, %2, %3, %4, %5, %6)>" )
 | 
						|
                  .arg( sipCpp->xMinimum() )
 | 
						|
                  .arg( sipCpp->yMinimum() )
 | 
						|
                  .arg( sipCpp->zMinimum() )
 | 
						|
                  .arg( sipCpp->xMaximum() )
 | 
						|
                  .arg( sipCpp->yMaximum() )
 | 
						|
                  .arg( sipCpp->zMaximum() );
 | 
						|
    sipRes = PyUnicode_FromString( str.toUtf8().constData() );
 | 
						|
%End
 | 
						|
 | 
						|
};
 | 
						|
 | 
						|
/************************************************************************
 | 
						|
 * This file has been generated automatically from                      *
 | 
						|
 *                                                                      *
 | 
						|
 * src/core/geometry/qgsbox3d.h                                         *
 | 
						|
 *                                                                      *
 | 
						|
 * Do not edit manually ! Edit header and run scripts/sipify.pl again   *
 | 
						|
 ************************************************************************/
 |