53    QgsBox3D( 
double xmin = std::numeric_limits<double>::quiet_NaN(), 
double ymin = std::numeric_limits<double>::quiet_NaN(), 
double zmin = std::numeric_limits<double>::quiet_NaN(),
 
   54              double xmax = std::numeric_limits<double>::quiet_NaN(), 
double ymax = std::numeric_limits<double>::quiet_NaN(), 
double zmax = std::numeric_limits<double>::quiet_NaN(),
 
   55              bool normalize = 
true );
 
   69              double zMin = std::numeric_limits<double>::quiet_NaN(), 
double zMax = std::numeric_limits<double>::quiet_NaN(),
 
   70              bool normalize = 
true );
 
   72    QgsBox3D( SIP_PYOBJECT x 
SIP_TYPEHINT( Optional[Union[
QgsPoint, 
QgsRectangle, 
float]] ) = Py_None, SIP_PYOBJECT y 
SIP_TYPEHINT( Optional[
QgsPoint, 
float] ) = Py_None, SIP_PYOBJECT z 
SIP_TYPEHINT( Optional[Union[
bool, 
float]] ) = Py_None, SIP_PYOBJECT x2 
SIP_TYPEHINT( Optional[Union[
bool, 
float]] ) = Py_None, SIP_PYOBJECT y2 
SIP_TYPEHINT( Optional[
float] ) = Py_None, SIP_PYOBJECT z2 
SIP_TYPEHINT( Optional[
float] ) = Py_None, SIP_PYOBJECT n 
SIP_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 )];
 
   74    if ( sipCanConvertToType( a0, sipType_QgsRectangle, SIP_NOT_NONE ) && a4 == Py_None && a5 == Py_None && a6 == Py_None )
 
   79      QgsRectangle *p = 
reinterpret_cast<QgsRectangle *
>( sipConvertToType( a0, sipType_QgsRectangle, 0, SIP_NOT_NONE, &state, &sipIsErr ) );
 
   82        sipReleaseType( p, sipType_QgsRectangle, state );
 
   86        double z1 = a1 == Py_None ? std::numeric_limits<double>::quiet_NaN() : PyFloat_AsDouble( a1 );
 
   87        double z2 = a2 == Py_None ? std::numeric_limits<double>::quiet_NaN() : PyFloat_AsDouble( a2 );
 
   88        bool n = a3 == Py_None ? true : PyObject_IsTrue( a3 );
 
   90        sipCpp = 
new QgsBox3D( *p, z1, z2, n );
 
   93    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 )
 
   98      QgsPoint *pt1 = 
reinterpret_cast<QgsPoint *
>( sipConvertToType( a0, sipType_QgsPoint, 0, SIP_NOT_NONE, &state, &sipIsErr ) );
 
  101        sipReleaseType( pt1, sipType_QgsPoint, state );
 
  105        QgsPoint *pt2 = 
reinterpret_cast<QgsPoint *
>( sipConvertToType( a1, sipType_QgsPoint, 0, SIP_NOT_NONE, &state, &sipIsErr ) );
 
  108          sipReleaseType( pt2, sipType_QgsPoint, state );
 
  112          bool n = a2 == Py_None ? true : PyObject_IsTrue( a2 );
 
  113          sipCpp = 
new QgsBox3D( *pt1, *pt2, n );
 
  118      ( a0 == Py_None || PyFloat_AsDouble( a0 ) != -1.0 || !PyErr_Occurred() ) &&
 
  119      ( a1 == Py_None || PyFloat_AsDouble( a1 ) != -1.0 || !PyErr_Occurred() ) &&
 
  120      ( a2 == Py_None || PyFloat_AsDouble( a2 ) != -1.0 || !PyErr_Occurred() ) &&
 
  121      ( a3 == Py_None || PyFloat_AsDouble( a3 ) != -1.0 || !PyErr_Occurred() ) &&
 
  122      ( a4 == Py_None || PyFloat_AsDouble( a3 ) != -1.0 || !PyErr_Occurred() ) &&
 
  123      ( a5 == Py_None || PyFloat_AsDouble( a3 ) != -1.0 || !PyErr_Occurred() ) &&
 
  124      ( a6 == Py_None || PyFloat_AsDouble( a3 ) != -1.0 || !PyErr_Occurred() ) )
 
  126      double x1 = a0 == Py_None ? std::numeric_limits<double>::quiet_NaN() : PyFloat_AsDouble( a0 );
 
  127      double y1 = a1 == Py_None ? std::numeric_limits<double>::quiet_NaN() : PyFloat_AsDouble( a1 );
 
  128      double z1 = a2 == Py_None ? std::numeric_limits<double>::quiet_NaN() : PyFloat_AsDouble( a2 );
 
  129      double x2 = a3 == Py_None ? std::numeric_limits<double>::quiet_NaN() : PyFloat_AsDouble( a3 );
 
  130      double y2 = a4 == Py_None ? std::numeric_limits<double>::quiet_NaN() : PyFloat_AsDouble( a4 );
 
  131      double z2 = a5 == Py_None ? std::numeric_limits<double>::quiet_NaN() : PyFloat_AsDouble( a5 );
 
  132      bool n = a6 == Py_None ? true : PyObject_IsTrue( a6 );
 
  133      sipCpp = 
new QgsBox3D( x1, y1, z1, x2, y2, z2, n );
 
  137      PyErr_SetString( PyExc_TypeError, QStringLiteral( 
"Invalid type in constructor arguments." ).toUtf8().constData() );
 
  148    void set( 
double xMin, 
double yMin, 
double zMin, 
double xMax, 
double yMax, 
double zMax, 
bool normalize = 
true )
 
  150      mBounds2d.set( xMin, yMin, xMax, yMax, 
false );
 
 
  342    bool contains( 
double x, 
double y, 
double z ) const 
SIP_HOLDGIL;
 
  356    void combineWith( 
double x, 
double y, 
double z ) 
SIP_HOLDGIL;
 
  369    double distanceTo( 
const  QVector3D &point ) 
const SIP_HOLDGIL;
 
  387    void scale( 
double scaleFactor, 
double centerX, 
double centerY, 
double centerZ ) 
SIP_HOLDGIL;
 
  450    SIP_PYOBJECT __repr__();
 
  452    QString 
str = QStringLiteral( 
"<QgsBox3D(%1, %2, %3, %4, %5, %6)>" )
 
  453                  .arg( sipCpp->xMinimum() )
 
  454                  .arg( sipCpp->yMinimum() )
 
  455                  .arg( sipCpp->zMinimum() )
 
  456                  .arg( sipCpp->xMaximum() )
 
  457                  .arg( sipCpp->yMaximum() )
 
  458                  .arg( sipCpp->zMaximum() );
 
  459    sipRes = PyUnicode_FromString( 
str.toUtf8().constData() );
 
  466    double mZmin = std::numeric_limits<double>::quiet_NaN();
 
  467    double mZmax = std::numeric_limits<double>::quiet_NaN();