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 );
 
   77              double zMin = std::numeric_limits<double>::quiet_NaN(), 
double zMax = std::numeric_limits<double>::quiet_NaN(),
 
   78              bool normalize = 
true );
 
   81    QgsBox3D( SIP_PYOBJECT x 
SIP_TYPEHINT( Optional[Union[
QgsPoint, 
QgsVector3D, 
QgsRectangle, 
float]] ) = Py_None, SIP_PYOBJECT y 
SIP_TYPEHINT( Optional[
QgsPoint, 
QgsVector3D, 
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 )];
 
   83    if ( sipCanConvertToType( a0, sipType_QgsRectangle, SIP_NOT_NONE ) && a4 == Py_None && a5 == Py_None && a6 == Py_None )
 
   88      QgsRectangle *p = 
reinterpret_cast<QgsRectangle *
>( sipConvertToType( a0, sipType_QgsRectangle, 0, SIP_NOT_NONE, &state, &sipIsErr ) );
 
   91        double z1 = a1 == Py_None ? std::numeric_limits<double>::quiet_NaN() : PyFloat_AsDouble( a1 );
 
   92        double z2 = a2 == Py_None ? std::numeric_limits<double>::quiet_NaN() : PyFloat_AsDouble( a2 );
 
   93        bool n = a3 == Py_None ? true : PyObject_IsTrue( a3 );
 
   95        sipCpp = 
new QgsBox3D( *p, z1, z2, n );
 
   97      sipReleaseType( p, sipType_QgsRectangle, state );
 
   99    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 )
 
  104      QgsPoint *pt1 = 
reinterpret_cast<QgsPoint *
>( sipConvertToType( a0, sipType_QgsPoint, 0, SIP_NOT_NONE, &state, &sipIsErr ) );
 
  107        QgsPoint *pt2 = 
reinterpret_cast<QgsPoint *
>( sipConvertToType( a1, sipType_QgsPoint, 0, SIP_NOT_NONE, &state, &sipIsErr ) );
 
  110          bool n = a2 == Py_None ? true : PyObject_IsTrue( a2 );
 
  111          sipCpp = 
new QgsBox3D( *pt1, *pt2, n );
 
  113        sipReleaseType( pt2, sipType_QgsPoint, state );
 
  115      sipReleaseType( pt1, sipType_QgsPoint, state );
 
  117    else if ( sipCanConvertToType( a0, sipType_QgsVector3D, SIP_NOT_NONE ) && sipCanConvertToType( a1, sipType_QgsVector3D, SIP_NOT_NONE ) && a3 == Py_None && a4 == Py_None && a5 == Py_None && a6 == Py_None )
 
  122      QgsVector3D *corner1 = 
reinterpret_cast<QgsVector3D *
>( sipConvertToType( a0, sipType_QgsVector3D, 0, SIP_NOT_NONE, &state, &sipIsErr ) );
 
  125        QgsVector3D *corner2 = 
reinterpret_cast<QgsVector3D *
>( sipConvertToType( a1, sipType_QgsVector3D, 0, SIP_NOT_NONE, &state, &sipIsErr ) );
 
  128          bool n = a2 == Py_None ? true : PyObject_IsTrue( a2 );
 
  129          sipCpp = 
new QgsBox3D( *corner1, *corner2, n );
 
  131        sipReleaseType( corner2, sipType_QgsVector3D, state );
 
  133      sipReleaseType( corner1, sipType_QgsVector3D, state );
 
  136      ( a0 == Py_None || PyFloat_AsDouble( a0 ) != -1.0 || !PyErr_Occurred() ) &&
 
  137      ( a1 == Py_None || PyFloat_AsDouble( a1 ) != -1.0 || !PyErr_Occurred() ) &&
 
  138      ( a2 == Py_None || PyFloat_AsDouble( a2 ) != -1.0 || !PyErr_Occurred() ) &&
 
  139      ( a3 == Py_None || PyFloat_AsDouble( a3 ) != -1.0 || !PyErr_Occurred() ) &&
 
  140      ( a4 == Py_None || PyFloat_AsDouble( a3 ) != -1.0 || !PyErr_Occurred() ) &&
 
  141      ( a5 == Py_None || PyFloat_AsDouble( a3 ) != -1.0 || !PyErr_Occurred() ) &&
 
  142      ( a6 == Py_None || PyFloat_AsDouble( a3 ) != -1.0 || !PyErr_Occurred() ) )
 
  144      double x1 = a0 == Py_None ? std::numeric_limits<double>::quiet_NaN() : PyFloat_AsDouble( a0 );
 
  145      double y1 = a1 == Py_None ? std::numeric_limits<double>::quiet_NaN() : PyFloat_AsDouble( a1 );
 
  146      double z1 = a2 == Py_None ? std::numeric_limits<double>::quiet_NaN() : PyFloat_AsDouble( a2 );
 
  147      double x2 = a3 == Py_None ? std::numeric_limits<double>::quiet_NaN() : PyFloat_AsDouble( a3 );
 
  148      double y2 = a4 == Py_None ? std::numeric_limits<double>::quiet_NaN() : PyFloat_AsDouble( a4 );
 
  149      double z2 = a5 == Py_None ? std::numeric_limits<double>::quiet_NaN() : PyFloat_AsDouble( a5 );
 
  150      bool n = a6 == Py_None ? true : PyObject_IsTrue( a6 );
 
  151      sipCpp = 
new QgsBox3D( x1, y1, z1, x2, y2, z2, n );
 
  155      PyErr_SetString( PyExc_TypeError, QStringLiteral( 
"Invalid type in constructor arguments." ).toUtf8().constData() );
 
  166    void set( 
double xMin, 
double yMin, 
double zMin, 
double xMax, 
double yMax, 
double zMax, 
bool normalize = 
true )
 
  168      mBounds2d.set( xMin, yMin, xMax, yMax, 
false );
 
 
  360    bool contains( 
double x, 
double y, 
double z ) const 
SIP_HOLDGIL;
 
  374    void combineWith( 
double x, 
double y, 
double z ) 
SIP_HOLDGIL;
 
  414    void scale( 
double scaleFactor, 
double centerX, 
double centerY, 
double centerZ ) 
SIP_HOLDGIL;
 
  420    void grow( 
double delta );
 
  483    SIP_PYOBJECT __repr__();
 
  485    QString str = QStringLiteral( 
"<QgsBox3D(%1, %2, %3, %4, %5, %6)>" )
 
  486                  .arg( sipCpp->xMinimum() )
 
  487                  .arg( sipCpp->yMinimum() )
 
  488                  .arg( sipCpp->zMinimum() )
 
  489                  .arg( sipCpp->xMaximum() )
 
  490                  .arg( sipCpp->yMaximum() )
 
  491                  .arg( sipCpp->zMaximum() );
 
  492    sipRes = PyUnicode_FromString( str.toUtf8().constData() );
 
  499    double mZmin = std::numeric_limits<double>::quiet_NaN();
 
  500    double mZmax = std::numeric_limits<double>::quiet_NaN();