A DistanceField implementation that uses a vector propagation method. More...
#include <propagation_distance_field.h>
Public Member Functions | |
virtual void | addPointsToField (const std::vector< btVector3 > points) |
Add (and expand) a set of points to the distance field. | |
PropagationDistanceField (double size_x, double size_y, double size_z, double resolution, double origin_x, double origin_y, double origin_z, double max_distance) | |
Constructor for the DistanceField. | |
virtual void | reset () |
Resets the distance field to the max_distance. | |
virtual | ~PropagationDistanceField () |
Private Member Functions | |
int | getDirectionNumber (int dx, int dy, int dz) const |
virtual double | getDistance (const PropDistanceFieldVoxel &object) const |
void | initNeighborhoods () |
Static Private Member Functions | |
static int | eucDistSq (int *point1, int *point2) |
Private Attributes | |
std::vector< std::vector < PropDistanceFieldVoxel * > > | bucket_queue_ |
std::vector< std::vector< int > > | direction_number_to_direction_ |
double | max_distance_ |
int | max_distance_sq_ |
std::vector< std::vector < std::vector< std::vector < int > > > > | neighborhoods_ |
std::vector< double > | sqrt_table_ |
A DistanceField implementation that uses a vector propagation method.
It computes the distance transform of the input points, and stores the distance to the closest obstacle in each voxel. Also available is the location of the closest point, and the gradient of the field at a point. Expansion of obstacles is performed upto a given radius.
Definition at line 74 of file propagation_distance_field.h.
distance_field::PropagationDistanceField::PropagationDistanceField | ( | double | size_x, | |
double | size_y, | |||
double | size_z, | |||
double | resolution, | |||
double | origin_x, | |||
double | origin_y, | |||
double | origin_z, | |||
double | max_distance | |||
) |
Constructor for the DistanceField.
Definition at line 44 of file propagation_distance_field.cpp.
distance_field::PropagationDistanceField::~PropagationDistanceField | ( | ) | [virtual] |
Definition at line 40 of file propagation_distance_field.cpp.
void distance_field::PropagationDistanceField::addPointsToField | ( | const std::vector< btVector3 > | points | ) | [virtual] |
Add (and expand) a set of points to the distance field.
Implements distance_field::DistanceField< PropDistanceFieldVoxel >.
Definition at line 67 of file propagation_distance_field.cpp.
int distance_field::PropagationDistanceField::eucDistSq | ( | int * | point1, | |
int * | point2 | |||
) | [static, private] |
Definition at line 59 of file propagation_distance_field.cpp.
int distance_field::PropagationDistanceField::getDirectionNumber | ( | int | dx, | |
int | dy, | |||
int | dz | |||
) | const [private] |
Definition at line 234 of file propagation_distance_field.cpp.
double distance_field::PropagationDistanceField::getDistance | ( | const PropDistanceFieldVoxel & | object | ) | const [inline, private, virtual] |
Implements distance_field::DistanceField< PropDistanceFieldVoxel >.
Definition at line 131 of file propagation_distance_field.h.
void distance_field::PropagationDistanceField::initNeighborhoods | ( | ) | [private] |
Definition at line 170 of file propagation_distance_field.cpp.
void distance_field::PropagationDistanceField::reset | ( | ) | [virtual] |
Resets the distance field to the max_distance.
Implements distance_field::DistanceField< PropDistanceFieldVoxel >.
Definition at line 165 of file propagation_distance_field.cpp.
std::vector<std::vector<PropDistanceFieldVoxel*> > distance_field::PropagationDistanceField::bucket_queue_ [private] |
Definition at line 97 of file propagation_distance_field.h.
std::vector<std::vector<int> > distance_field::PropagationDistanceField::direction_number_to_direction_ [private] |
Definition at line 110 of file propagation_distance_field.h.
double distance_field::PropagationDistanceField::max_distance_ [private] |
Definition at line 98 of file propagation_distance_field.h.
Definition at line 99 of file propagation_distance_field.h.
std::vector<std::vector<std::vector<std::vector<int> > > > distance_field::PropagationDistanceField::neighborhoods_ [private] |
Definition at line 108 of file propagation_distance_field.h.
std::vector<double> distance_field::PropagationDistanceField::sqrt_table_ [private] |
Definition at line 101 of file propagation_distance_field.h.