A DistanceField implementation that uses a raster scanning type method by Felzenszwalb et. al. More...
#include <pf_distance_field.h>
Public Types | |
typedef std::vector< float > | FloatArray |
typedef std::vector< int > | IntArray |
Public Member Functions | |
virtual void | addPointsToField (const std::vector< btVector3 > points) |
Add (and expand) a set of points to the distance field. | |
PFDistanceField (double size_x, double size_y, double size_z, double resolution, double origin_x, double origin_y, double origin_z) | |
virtual void | reset () |
Resets the distance field to the max_distance. | |
virtual | ~PFDistanceField () |
Public Attributes | |
const float | DT_INF |
Private Member Functions | |
void | computeDT () |
void | dt (const FloatArray &f, size_t nn, FloatArray &ft, IntArray &v, FloatArray &z) |
virtual double | getDistance (const float &object) const |
float | sqr (float x) |
A DistanceField implementation that uses a raster scanning type method by Felzenszwalb et. al.
Implementation of "Distance Transforms of Sampled Functions", Pedro F. Felzenszwalb and Daniel P. Huttenlocher, Cornell Computing and Information Science TR2004-1963
Definition at line 49 of file pf_distance_field.h.
typedef std::vector<float> distance_field::PFDistanceField::FloatArray |
Definition at line 49 of file pf_distance_field.h.
typedef std::vector<int> distance_field::PFDistanceField::IntArray |
Definition at line 50 of file pf_distance_field.h.
distance_field::PFDistanceField::PFDistanceField | ( | double | size_x, | |
double | size_y, | |||
double | size_z, | |||
double | resolution, | |||
double | origin_x, | |||
double | origin_y, | |||
double | origin_z | |||
) |
Definition at line 40 of file pf_distance_field.cpp.
distance_field::PFDistanceField::~PFDistanceField | ( | ) | [virtual] |
Definition at line 48 of file pf_distance_field.cpp.
void distance_field::PFDistanceField::addPointsToField | ( | const std::vector< btVector3 > | points | ) | [virtual] |
Add (and expand) a set of points to the distance field.
This function will incrementally add the given points and update the distance field correspondingly. Use the reset() function if you need to remove all points and start afresh.
Implements distance_field::DistanceField< float >.
Definition at line 52 of file pf_distance_field.cpp.
void distance_field::PFDistanceField::computeDT | ( | ) | [private] |
Definition at line 66 of file pf_distance_field.cpp.
void distance_field::PFDistanceField::dt | ( | const FloatArray & | f, | |
size_t | nn, | |||
FloatArray & | ft, | |||
IntArray & | v, | |||
FloatArray & | z | |||
) | [private] |
Definition at line 119 of file pf_distance_field.cpp.
double distance_field::PFDistanceField::getDistance | ( | const float & | object | ) | const [inline, private, virtual] |
Implements distance_field::DistanceField< float >.
Definition at line 76 of file pf_distance_field.h.
void distance_field::PFDistanceField::reset | ( | ) | [virtual] |
Resets the distance field to the max_distance.
Implements distance_field::DistanceField< float >.
Definition at line 160 of file pf_distance_field.cpp.
float distance_field::PFDistanceField::sqr | ( | float | x | ) | [inline, private] |
Definition at line 58 of file pf_distance_field.h.
const float distance_field::PFDistanceField::DT_INF |
Definition at line 55 of file pf_distance_field.h.