90 std::fabs( mHalfAxes[0] ) + std::fabs( mHalfAxes[3] ) + std::fabs( mHalfAxes[6] ),
91 std::fabs( mHalfAxes[1] ) + std::fabs( mHalfAxes[4] ) + std::fabs( mHalfAxes[7] ),
92 std::fabs( mHalfAxes[2] ) + std::fabs( mHalfAxes[5] ) + std::fabs( mHalfAxes[8] ),
95 const double minX = mCenter[0] -
extent[0];
96 const double maxX = mCenter[0] +
extent[0];
97 const double minY = mCenter[1] -
extent[1];
98 const double maxY = mCenter[1] +
extent[1];
99 const double minZ = mCenter[2] -
extent[2];
100 const double maxZ = mCenter[2] +
extent[2];
102 return QgsBox3D( minX, minY, minZ, maxX, maxY, maxZ );
108 const QgsVector3D a1( mHalfAxes[0], mHalfAxes[1], mHalfAxes[2] ), a0( -mHalfAxes[0], -mHalfAxes[1], -mHalfAxes[2] );
109 const QgsVector3D b1( mHalfAxes[3], mHalfAxes[4], mHalfAxes[5] ), b0( -mHalfAxes[3], -mHalfAxes[4], -mHalfAxes[5] );
110 const QgsVector3D c1( mHalfAxes[6], mHalfAxes[7], mHalfAxes[8] ), c0( -mHalfAxes[6], -mHalfAxes[7], -mHalfAxes[8] );
112 QVector<QgsVector3D> cor( 8 );
114 for (
int i = 0; i < 8; ++i, ++corData )
117 const QgsVector3D bb = ( ( i / 2 ) % 2 == 0 ? b1 : b0 );
159 const double *ptr = transform.
constData();
161 ptr[1], ptr[5], ptr[9], 0,
162 ptr[2], ptr[6], ptr[10], 0,
172 QList<double>() << col1.
x() << col1.
y() << col1.
z()
173 << col2.
x() << col2.
y() << col2.
z()
174 << col3.
x() << col3.
y() << col3.
z() );
185 { mHalfAxes[0], mHalfAxes[1], mHalfAxes[2] },
186 { mHalfAxes[3], mHalfAxes[4], mHalfAxes[5] },
187 { mHalfAxes[6], mHalfAxes[7], mHalfAxes[8] }
192 { other.mHalfAxes[0], other.mHalfAxes[1], other.mHalfAxes[2] },
193 { other.mHalfAxes[3], other.mHalfAxes[4], other.mHalfAxes[5] },
194 { other.mHalfAxes[6], other.mHalfAxes[7], other.mHalfAxes[8] }
197 for (
int a = 0; a < 3; ++a )
200 for (
int b = 0; b < 3; ++b )
212 const double penetration = ( ra + rb ) - tl;
213 if ( penetration <= 0 )
218 for (
int a = 0; a < 3; ++a )
226 const double penetration = ( ra + rb ) - tl;
227 if ( penetration <= 0 )
231 for (
int b = 0; b < 3; ++b )
239 const double penetration = ( ra + rb ) - tl;
240 if ( penetration <= 0 )