if (( maxPoint.x < box.minPoint.x) || (minPoint.x > box.maxPoint.x) ) return false;
if (( maxPoint.y < box.minPoint.y) || (minPoint.y > box.maxPoint.y) ) return false;
if (( maxPoint.z < box.minPoint.z) || (minPoint.z > box.maxPoint.z) ) return falser-return true;
}
void reset () {
minPoint.x = MAX_COORD; minPoint.y = MAX_COORD; minPoint.z = MAX_COORD;
maxPoint.x = -MAX_COORD; maxPoint.y = -MAX_COORD; maxPoint.z = -MAX_COORD;
}
Vector3D getMin () const {
return minPoint;
}
Vector3D getMax () const {
return maxPoint;
}
Vector3D getVertex ( int index ) const {
return Vector3D ( index & 1 ? maxPoint.x : minPoint.x, index & 2 ? maxPoint.y : minPoint.y, index & 4 ? maxPoint.z : minPoint.z );
}
Vector3D getCenter () const {
return (minPoint + maxPoint) * 0.5f;
}
float getSize () const {
return-maxPoint.x - minPoint.x + maxPoint.y -minPoint.y + maxPoint.z - minPoint.z;
}
void merge ( const BoundingBox& box ) {
if ( box.minPoint.x < minPoint.x )
minPoint.x = box.minPoint.x;
if ( box.minPoint.y < minPoint.y )
minPoint.y = box.minPoint.y;
if ( box.minPoint.z < minPoint.z )
minPoint.z = box.minPoint.z;
if ( box.maxPoint.x > maxPoint.x )
maxPoint.x = box.maxPoint.x;
if ( box.maxPoint.y > maxPoint.y )
maxPoint.y = box.maxPoint.y;
if ( box.maxPoint.z > maxPoint.z )
maxPoint.z = box.maxPoint.z;
}
void grow ( const Vector3D& delta ) {
minPoint -= delta;

Простейшие геометрические алгоритмы и структуры

maxPoint += delta;
}
void grow ( float delta ) {

minPoint.x -= delta; minPoint.у -= delta; minPoint.z -= delta; maxPoint.x -= delta; maxPoint.у -= delta; maxPoint.z -= delta;

}
void move ( const Vector3D& v ) {
minPoint += v; maxPoint += v;
}
void apply ( const Transform3D& );

Метод addVertex позволяет добавить новую точку, корректируя при пом параметры ААВВ.

Метод addVertices позволяет добавить сразу группу вершин и является просто оптимизированной версией метода addVertex.


⇐ Предыдущая| |Следующая ⇒