Open CASCADE Technology
6.9.0
|
Detects collisions between shapes. More...
#include <Voxel_CollisionDetection.hxx>
Public Member Functions | |
Voxel_CollisionDetection () | |
An empty constructor. More... | |
Voxel_CollisionDetection (const Standard_Real deflection, const Standard_Integer nbx, const Standard_Integer nby, const Standard_Integer nbz) | |
A constructor. It defines deflection of triangulation for the shapes. As lower the deflection is, as proper the triangulation is generated. Also, it defines number of splits along X, Y and Z axes for generation of voxels. As greater the numbers are, as greater number of voxels is used for detection of collision. More... | |
Standard_Integer | AddShape (const TopoDS_Shape &shape) |
Adds a shape. Returns an index of the shape. More... | |
Standard_Boolean | ReplaceShape (const Standard_Integer ishape, const TopoDS_Shape &shape) |
Replaces a shape by another one. <ishape> is an index of the shape. This method is useful for moving shape, for example. More... | |
void | SetDeflection (const Standard_Real deflection) |
Defines the deflection of triangulation of shapes. More... | |
void | SetNbVoxels (const Standard_Integer nbx, const Standard_Integer nby, const Standard_Integer nbz) |
Defines the number of voxels along X, Y and Z axes. More... | |
void | SetBoundaryBox (const Bnd_Box &box) |
Defines a user-defined boundary box for generation of voxels. If this method is not called, the algorithm calculates the boundary box itself. More... | |
void | SetUsageOfVolume (const Standard_Boolean usage) |
Defines usage of volume of shapes in collision detection algorithm. Beware, usage of volume a little bit decreases the speed of algorithm. More... | |
void | KeepCollisions (const Standard_Boolean keep) |
Doesn't clean the collision points on new call to the method Compute(). It allows to see the collisions for a moving shape. More... | |
Standard_Boolean | Voxelize (const Standard_Integer ishape=-1) |
Prepares data for computation of collisions. It checks the inner parameters (number of voxels along X, Y and Z axes) and voxelizes the shapes. If the shape is not changed since the last call to this method, this method may be not called for this shape. <ishape> - is the index of the shape for processing by this method. If it is equal to -1, all shapes will be processed. More... | |
Standard_Boolean | Compute () |
Computes the collisions. This method may be called many times if, for example, the shapes are being moved. More... | |
Standard_Boolean | HasCollisions () const |
Returns true if a collision is detected. More... | |
const Voxel_BoolDS & | GetCollisions () const |
Returns the collided voxels. More... | |
void | Destroy () |
A destructor. More... | |
~Voxel_CollisionDetection () | |
Detects collisions between shapes.
Voxel_CollisionDetection::Voxel_CollisionDetection | ( | ) |
An empty constructor.
Voxel_CollisionDetection::Voxel_CollisionDetection | ( | const Standard_Real | deflection, |
const Standard_Integer | nbx, | ||
const Standard_Integer | nby, | ||
const Standard_Integer | nbz | ||
) |
A constructor. It defines deflection of triangulation for the shapes. As lower the deflection is, as proper the triangulation is generated. Also, it defines number of splits along X, Y and Z axes for generation of voxels. As greater the numbers are, as greater number of voxels is used for detection of collision.
|
inline |
Standard_Integer Voxel_CollisionDetection::AddShape | ( | const TopoDS_Shape & | shape | ) |
Adds a shape. Returns an index of the shape.
Standard_Boolean Voxel_CollisionDetection::Compute | ( | ) |
Computes the collisions. This method may be called many times if, for example, the shapes are being moved.
void Voxel_CollisionDetection::Destroy | ( | ) |
A destructor.
const Voxel_BoolDS& Voxel_CollisionDetection::GetCollisions | ( | ) | const |
Returns the collided voxels.
Standard_Boolean Voxel_CollisionDetection::HasCollisions | ( | ) | const |
Returns true if a collision is detected.
void Voxel_CollisionDetection::KeepCollisions | ( | const Standard_Boolean | keep | ) |
Doesn't clean the collision points on new call to the method Compute(). It allows to see the collisions for a moving shape.
Standard_Boolean Voxel_CollisionDetection::ReplaceShape | ( | const Standard_Integer | ishape, |
const TopoDS_Shape & | shape | ||
) |
Replaces a shape by another one. <ishape> is an index of the shape. This method is useful for moving shape, for example.
void Voxel_CollisionDetection::SetBoundaryBox | ( | const Bnd_Box & | box | ) |
Defines a user-defined boundary box for generation of voxels. If this method is not called, the algorithm calculates the boundary box itself.
void Voxel_CollisionDetection::SetDeflection | ( | const Standard_Real | deflection | ) |
Defines the deflection of triangulation of shapes.
void Voxel_CollisionDetection::SetNbVoxels | ( | const Standard_Integer | nbx, |
const Standard_Integer | nby, | ||
const Standard_Integer | nbz | ||
) |
Defines the number of voxels along X, Y and Z axes.
void Voxel_CollisionDetection::SetUsageOfVolume | ( | const Standard_Boolean | usage | ) |
Defines usage of volume of shapes in collision detection algorithm. Beware, usage of volume a little bit decreases the speed of algorithm.
Standard_Boolean Voxel_CollisionDetection::Voxelize | ( | const Standard_Integer | ishape = -1 | ) |
Prepares data for computation of collisions. It checks the inner parameters (number of voxels along X, Y and Z axes) and voxelizes the shapes. If the shape is not changed since the last call to this method, this method may be not called for this shape. <ishape> - is the index of the shape for processing by this method. If it is equal to -1, all shapes will be processed.