#include <DistanceGridCollisionModel.h>

Data Structures | |
| struct | DistanceGridParams |
Public Types | |
| typedef Vector3 | Coord |
| typedef defaulttype::ExtVector < SReal > | VecSReal |
| typedef defaulttype::ExtVector < Coord > | VecCoord |
Public Member Functions | |
| DistanceGrid (int nx, int ny, int nz, Coord pmin, Coord pmax) | |
| DistanceGrid (int nx, int ny, int nz, Coord pmin, Coord pmax, defaulttype::ExtVectorAllocator< SReal > *alloc) | |
| DistanceGrid * | addRef () |
| Add one reference to this grid. Note that loadShared already does this. | |
| bool | release () |
| Release one reference, deleting this grid if this is the last. | |
| bool | save (const std::string &filename) |
| Save current grid. | |
| void | calcDistance (sofa::helper::io::Mesh *mesh, double scale=1.0) |
| Compute distance field from given mesh. | |
| void | calcCubeDistance (SReal dim=1, int np=5) |
| Compute distance field for a cube of the given half-size. | |
| void | computeBBox () |
| Update bbox. | |
| int | getNx () const |
| int | getNy () const |
| int | getNz () const |
| const Coord & | getCellWidth () const |
| int | size () const |
| const Coord & | getBBMin () const |
| const Coord & | getBBMax () const |
| void | setBBMin (const Coord &val) |
| void | setBBMax (const Coord &val) |
| Coord | getBBCorner (int i) const |
| bool | inBBox (const Coord &p, SReal margin=0.0f) const |
| const Coord & | getPMin () const |
| const Coord & | getPMax () const |
| Coord | getCorner (int i) const |
| bool | isCube () const |
| SReal | getCubeDim () const |
| bool | inGrid (const Coord &p) const |
| Coord | clamp (Coord p) const |
| int | ix (const Coord &p) const |
| int | iy (const Coord &p) const |
| int | iz (const Coord &p) const |
| int | index (const Coord &p, Coord &coefs) const |
| int | index (const Coord &p) const |
| int | index (int x, int y, int z) |
| Coord | coord (int x, int y, int z) |
| SReal | operator[] (int index) const |
| SReal & | operator[] (int index) |
| SReal | interp (int index, const Coord &coefs) const |
| SReal | interp (const Coord &p) const |
| Coord | grad (int index, const Coord &coefs) const |
| Coord | grad (const Coord &p) const |
| SReal | eval (const Coord &x) const |
| SReal | quickeval (const Coord &x) const |
| SReal | eval2 (const Coord &x) const |
| SReal | quickeval2 (const Coord &x) const |
Static Public Member Functions | |
| static SReal | maxDist () |
| static DistanceGrid * | load (const std::string &filename, double scale=1.0, int nx=64, int ny=64, int nz=64, Coord pmin=Coord(), Coord pmax=Coord()) |
| Load a distance grid. | |
| static DistanceGrid * | loadShared (const std::string &filename, double scale=1.0, int nx=64, int ny=64, int nz=64, Coord pmin=Coord(), Coord pmax=Coord()) |
| Load or reuse a distance grid. | |
| static SReal | interp (SReal coef, SReal a, SReal b) |
Data Fields | |
| VecCoord | meshPts |
Protected Types | |
| enum | Status { FMM_FRONT0 = 0, FMM_FAR = -1, FMM_KNOWN_OUT = -2, FMM_KNOWN_IN = -3 } |
Protected Member Functions | |
| ~DistanceGrid () | |
| int | fmm_pop () |
| void | fmm_push (int index) |
| void | fmm_swap (int entry1, int entry2) |
Static Protected Member Functions | |
| static std::map < DistanceGridParams, DistanceGrid * > & | getShared () |
Protected Attributes | |
| int | nbRef |
| VecSReal | dists |
| const int | nx |
| const int | ny |
| const int | nz |
| const int | nxny |
| const int | nxnynz |
| const Coord | pmin |
| const Coord | pmax |
| const Coord | cellWidth |
| const Coord | invCellWidth |
| Coord | bbmin |
| Coord | bbmax |
| bounding box of the object, smaller than the grid | |
| SReal | cubeDim |
| Cube dimension (!=0 if this is actually a cube. | |
| helper::vector< int > | fmm_status |
| helper::vector< int > | fmm_heap |
| int | fmm_heap_size |
Definition at line 48 of file DistanceGridCollisionModel.h.
| typedef Vector3 sofa::component::collision::DistanceGrid::Coord |
Definition at line 52 of file DistanceGridCollisionModel.h.
Definition at line 54 of file DistanceGridCollisionModel.h.
Definition at line 53 of file DistanceGridCollisionModel.h.
enum sofa::component::collision::DistanceGrid::Status [protected] |
Definition at line 316 of file DistanceGridCollisionModel.h.
| sofa::component::collision::DistanceGrid::DistanceGrid | ( | int | nx, | |
| int | ny, | |||
| int | nz, | |||
| Coord | pmin, | |||
| Coord | pmax, | |||
| defaulttype::ExtVectorAllocator< SReal > * | alloc | |||
| ) |
Definition at line 703 of file DistanceGridCollisionModel.cpp.
| sofa::component::collision::DistanceGrid::~DistanceGrid | ( | ) | [protected] |
| DistanceGrid * sofa::component::collision::DistanceGrid::addRef | ( | ) |
Add one reference to this grid. Note that loadShared already does this.
Definition at line 722 of file DistanceGridCollisionModel.cpp.
References nbRef.
Referenced by sofa::component::collision::RigidDistanceGridCollisionModel::setGrid(), and sofa::component::collision::RigidDistanceGridCollisionModel::setNewState().
Compute distance field for a cube of the given half-size.
Also create a mesh of points using np points per axis
Also create a mesh of points using np points per axis
Definition at line 963 of file DistanceGridCollisionModel.cpp.
References bbmax, bbmin, coord(), cubeDim, dists, meshPts, norm(), nx, ny, nz, sofa::helper::rabs(), sofa::defaulttype::ExtVector< T >::resize(), and sofa::helper::rmax().
Referenced by load().
| void sofa::component::collision::DistanceGrid::calcDistance | ( | sofa::helper::io::Mesh * | mesh, | |
| double | scale = 1.0 | |||
| ) |
Compute distance field from given mesh.
Definition at line 1008 of file DistanceGridCollisionModel.cpp.
References bbmax, bbmin, sofa::defaulttype::ExtVector< T >::begin(), cellWidth, coord(), cross(), dists, sofa::defaulttype::ExtVector< T >::end(), FMM_FAR, fmm_heap, fmm_heap_size, FMM_KNOWN_IN, FMM_KNOWN_OUT, fmm_pop(), fmm_push(), fmm_status, sofa::helper::io::Mesh::getFacets(), sofa::helper::io::Mesh::getVertices(), index(), ix(), iy(), iz(), maxDist(), sofa::defaulttype::Vec< N, real >::normalize(), nx, nxny, nxnynz, ny, nz, sofa::helper::rabs(), and size().
Referenced by load().
Definition at line 123 of file DistanceGridCollisionModel.h.
Referenced by eval(), eval2(), quickeval(), and quickeval2().
| void sofa::component::collision::DistanceGrid::computeBBox | ( | ) |
Update bbox.
compute the SReal bbox from the grid content
Definition at line 939 of file DistanceGridCollisionModel.cpp.
References bbmax, bbmin, sofa::defaulttype::ExtVector< T >::empty(), meshPts, pmax, pmin, and sofa::defaulttype::ExtVector< T >::size().
Referenced by load().
Definition at line 174 of file DistanceGridCollisionModel.h.
References cellWidth, and pmin.
Referenced by calcCubeDistance(), calcDistance(), and sofa::component::collision::RigidDistanceGridCollisionModel::draw().
Definition at line 237 of file DistanceGridCollisionModel.h.
References clamp(), inGrid(), interp(), norm2(), and sofa::helper::rsqrt().
Referenced by sofa::component::collision::RigidDistanceGridCollisionModel::draw().
| int sofa::component::collision::DistanceGrid::fmm_pop | ( | ) | [protected] |
Definition at line 1404 of file DistanceGridCollisionModel.cpp.
References dists, fmm_heap, fmm_heap_size, fmm_swap(), nx, nxny, and ny.
Referenced by calcDistance().
| void sofa::component::collision::DistanceGrid::fmm_push | ( | int | index | ) | [protected] |
Definition at line 1460 of file DistanceGridCollisionModel.cpp.
References dists, FMM_FRONT0, fmm_heap, fmm_heap_size, fmm_status, fmm_swap(), nx, nxny, and ny.
Referenced by calcDistance().
| void sofa::component::collision::DistanceGrid::fmm_swap | ( | int | entry1, | |
| int | entry2 | |||
| ) | [inline, protected] |
Definition at line 1394 of file DistanceGridCollisionModel.cpp.
References FMM_FRONT0, fmm_heap, and fmm_status.
Referenced by fmm_pop(), and fmm_push().
Definition at line 100 of file DistanceGridCollisionModel.h.
Referenced by sofa::component::collision::RigidDistanceGridCollisionModel::draw().
| const Coord& sofa::component::collision::DistanceGrid::getBBMax | ( | ) | const [inline] |
Definition at line 97 of file DistanceGridCollisionModel.h.
References bbmax.
Referenced by sofa::component::collision::DiscreteIntersection::computeIntersection().
| const Coord& sofa::component::collision::DistanceGrid::getBBMin | ( | ) | const [inline] |
Definition at line 96 of file DistanceGridCollisionModel.h.
References bbmin.
Referenced by sofa::component::collision::DiscreteIntersection::computeIntersection().
| const Coord& sofa::component::collision::DistanceGrid::getCellWidth | ( | ) | const [inline] |
Definition at line 92 of file DistanceGridCollisionModel.h.
References cellWidth.
Referenced by sofa::component::collision::DiscreteIntersection::computeIntersection().
Definition at line 110 of file DistanceGridCollisionModel.h.
Referenced by sofa::component::collision::RigidDistanceGridCollisionModel::draw().
| SReal sofa::component::collision::DistanceGrid::getCubeDim | ( | ) | const [inline] |
Definition at line 113 of file DistanceGridCollisionModel.h.
References cubeDim.
Referenced by sofa::component::collision::DiscreteIntersection::computeIntersection().
| int sofa::component::collision::DistanceGrid::getNx | ( | ) | const [inline] |
Definition at line 89 of file DistanceGridCollisionModel.h.
References nx.
Referenced by sofa::component::collision::RigidDistanceGridCollisionModel::draw().
| int sofa::component::collision::DistanceGrid::getNy | ( | ) | const [inline] |
Definition at line 90 of file DistanceGridCollisionModel.h.
References ny.
Referenced by sofa::component::collision::RigidDistanceGridCollisionModel::draw().
| int sofa::component::collision::DistanceGrid::getNz | ( | ) | const [inline] |
Definition at line 91 of file DistanceGridCollisionModel.h.
References nz.
Referenced by sofa::component::collision::RigidDistanceGridCollisionModel::draw().
| const Coord& sofa::component::collision::DistanceGrid::getPMax | ( | ) | const [inline] |
Definition at line 109 of file DistanceGridCollisionModel.h.
References pmax.
Referenced by sofa::component::collision::RigidDistanceGridCollisionModel::draw().
| const Coord& sofa::component::collision::DistanceGrid::getPMin | ( | ) | const [inline] |
Definition at line 108 of file DistanceGridCollisionModel.h.
References pmin.
Referenced by sofa::component::collision::RigidDistanceGridCollisionModel::draw().
| std::map< DistanceGrid::DistanceGridParams, DistanceGrid * > & sofa::component::collision::DistanceGrid::getShared | ( | ) | [static, protected] |
Definition at line 1552 of file DistanceGridCollisionModel.cpp.
Referenced by loadShared(), and ~DistanceGrid().
| Coord sofa::component::collision::DistanceGrid::grad | ( | int | index, | |
| const Coord & | coefs | |||
| ) | const [inline] |
Definition at line 202 of file DistanceGridCollisionModel.h.
References dists, interp(), nx, and nxny.
Referenced by sofa::component::collision::ContactMapper< RigidDistanceGridCollisionModel, DataTypes >::addPoint(), sofa::component::collision::DiscreteIntersection::computeIntersection(), sofa::component::collision::RigidDistanceGridCollisionModel::draw(), and grad().
| bool sofa::component::collision::DistanceGrid::inBBox | ( | const Coord & | p, | |
| SReal | margin = 0.0f | |||
| ) | const [inline] |
Definition at line 101 of file DistanceGridCollisionModel.h.
Referenced by sofa::component::collision::DiscreteIntersection::computeIntersection().
| int sofa::component::collision::DistanceGrid::index | ( | const Coord & | p, | |
| Coord & | coefs | |||
| ) | const [inline] |
Definition at line 146 of file DistanceGridCollisionModel.h.
References invCellWidth, nx, ny, nz, pmin, and sofa::helper::rfloor().
Referenced by sofa::component::collision::ContactMapper< RigidDistanceGridCollisionModel, DataTypes >::addPoint(), calcDistance(), grad(), index(), interp(), quickeval(), and quickeval2().
Definition at line 115 of file DistanceGridCollisionModel.h.
References cellWidth, pmax, and pmin.
Referenced by sofa::component::collision::DiscreteIntersection::computeIntersection(), eval(), eval2(), quickeval(), and quickeval2().
| static SReal sofa::component::collision::DistanceGrid::interp | ( | SReal | coef, | |
| SReal | a, | |||
| SReal | b | |||
| ) | [inline, static] |
Definition at line 182 of file DistanceGridCollisionModel.h.
Referenced by sofa::component::collision::ContactMapper< RigidDistanceGridCollisionModel, DataTypes >::addPoint(), sofa::component::collision::DiscreteIntersection::computeIntersection(), eval(), eval2(), grad(), and interp().
| bool sofa::component::collision::DistanceGrid::isCube | ( | ) | const [inline] |
Definition at line 112 of file DistanceGridCollisionModel.h.
References cubeDim.
Referenced by sofa::component::collision::DiscreteIntersection::computeIntersection().
Definition at line 131 of file DistanceGridCollisionModel.h.
References invCellWidth, pmin, and sofa::helper::rfloor().
Referenced by calcDistance().
Definition at line 136 of file DistanceGridCollisionModel.h.
References invCellWidth, pmin, and sofa::helper::rfloor().
Referenced by calcDistance().
Definition at line 141 of file DistanceGridCollisionModel.h.
References invCellWidth, pmin, and sofa::helper::rfloor().
Referenced by calcDistance().
| DistanceGrid * sofa::component::collision::DistanceGrid::load | ( | const std::string & | filename, | |
| double | scale = 1.0, |
|||
| int | nx = 64, |
|||
| int | ny = 64, |
|||
| int | nz = 64, |
|||
| Coord | pmin = Coord(), |
|||
| Coord | pmax = Coord() | |||
| ) | [static] |
Load a distance grid.
Definition at line 737 of file DistanceGridCollisionModel.cpp.
References bbmax, bbmin, calcCubeDistance(), calcDistance(), computeBBox(), sofa::helper::io::Mesh::Create(), sofa::defaulttype::ExtVector< T >::data, DistanceGrid(), dists, sofa::helper::io::Mesh::getVertices(), meshPts, nxnynz, and sofa::defaulttype::ExtVector< T >::resize().
Referenced by loadShared().
| DistanceGrid * sofa::component::collision::DistanceGrid::loadShared | ( | const std::string & | filename, | |
| double | scale = 1.0, |
|||
| int | nx = 64, |
|||
| int | ny = 64, |
|||
| int | nz = 64, |
|||
| Coord | pmin = Coord(), |
|||
| Coord | pmax = Coord() | |||
| ) | [static] |
Load or reuse a distance grid.
Definition at line 1532 of file DistanceGridCollisionModel.cpp.
References sofa::component::collision::DistanceGrid::DistanceGridParams::filename, getShared(), load(), sofa::component::collision::DistanceGrid::DistanceGridParams::nx, sofa::component::collision::DistanceGrid::DistanceGridParams::ny, sofa::component::collision::DistanceGrid::DistanceGridParams::nz, sofa::component::collision::DistanceGrid::DistanceGridParams::pmax, sofa::component::collision::DistanceGrid::DistanceGridParams::pmin, and sofa::component::collision::DistanceGrid::DistanceGridParams::scale.
Referenced by sofa::component::collision::FFDDistanceGridCollisionModel::init(), and sofa::component::collision::RigidDistanceGridCollisionModel::init().
| static SReal sofa::component::collision::DistanceGrid::maxDist | ( | ) | [inline, static] |
Definition at line 253 of file DistanceGridCollisionModel.h.
References cellWidth, clamp(), dists, index(), inGrid(), norm2(), and sofa::helper::rsqrt().
| bool sofa::component::collision::DistanceGrid::release | ( | ) |
Release one reference, deleting this grid if this is the last.
Definition at line 729 of file DistanceGridCollisionModel.cpp.
References nbRef.
| bool sofa::component::collision::DistanceGrid::save | ( | const std::string & | filename | ) |
Save current grid.
!!!TODO!!! ///
Definition at line 897 of file DistanceGridCollisionModel.cpp.
Referenced by sofa::component::collision::FFDDistanceGridCollisionModel::init().
| void sofa::component::collision::DistanceGrid::setBBMax | ( | const Coord & | val | ) | [inline] |
| void sofa::component::collision::DistanceGrid::setBBMin | ( | const Coord & | val | ) | [inline] |
| int sofa::component::collision::DistanceGrid::size | ( | void | ) | const [inline] |
Definition at line 94 of file DistanceGridCollisionModel.h.
References nxnynz.
Referenced by calcDistance().
Coord sofa::component::collision::DistanceGrid::bbmax [protected] |
bounding box of the object, smaller than the grid
Definition at line 311 of file DistanceGridCollisionModel.h.
Referenced by calcCubeDistance(), calcDistance(), computeBBox(), getBBCorner(), getBBMax(), inBBox(), load(), and setBBMax().
Coord sofa::component::collision::DistanceGrid::bbmin [protected] |
Definition at line 311 of file DistanceGridCollisionModel.h.
Referenced by calcCubeDistance(), calcDistance(), computeBBox(), getBBCorner(), getBBMin(), inBBox(), load(), and setBBMin().
const Coord sofa::component::collision::DistanceGrid::cellWidth [protected] |
Definition at line 310 of file DistanceGridCollisionModel.h.
Referenced by calcDistance(), coord(), getCellWidth(), inGrid(), quickeval(), and quickeval2().
Cube dimension (!=0 if this is actually a cube.
Definition at line 313 of file DistanceGridCollisionModel.h.
Referenced by calcCubeDistance(), getCubeDim(), and isCube().
Definition at line 307 of file DistanceGridCollisionModel.h.
Referenced by calcCubeDistance(), calcDistance(), fmm_pop(), fmm_push(), grad(), interp(), load(), operator[](), quickeval(), quickeval2(), and save().
Definition at line 318 of file DistanceGridCollisionModel.h.
Referenced by calcDistance(), fmm_pop(), fmm_push(), and fmm_swap().
Definition at line 319 of file DistanceGridCollisionModel.h.
Referenced by calcDistance(), fmm_pop(), and fmm_push().
Definition at line 317 of file DistanceGridCollisionModel.h.
Referenced by calcDistance(), fmm_push(), and fmm_swap().
const Coord sofa::component::collision::DistanceGrid::invCellWidth [protected] |
Definition at line 303 of file DistanceGridCollisionModel.h.
Referenced by calcCubeDistance(), computeBBox(), sofa::component::collision::DiscreteIntersection::computeIntersection(), sofa::component::collision::RigidDistanceGridCollisionModel::draw(), sofa::component::collision::FFDDistanceGridCollisionModel::init(), and load().
int sofa::component::collision::DistanceGrid::nbRef [protected] |
const int sofa::component::collision::DistanceGrid::nx [protected] |
Definition at line 308 of file DistanceGridCollisionModel.h.
Referenced by calcCubeDistance(), calcDistance(), fmm_pop(), fmm_push(), getNx(), grad(), index(), and interp().
const int sofa::component::collision::DistanceGrid::nxny [protected] |
Definition at line 308 of file DistanceGridCollisionModel.h.
Referenced by calcDistance(), fmm_pop(), fmm_push(), grad(), and interp().
const int sofa::component::collision::DistanceGrid::nxnynz [protected] |
Definition at line 308 of file DistanceGridCollisionModel.h.
Referenced by calcDistance(), load(), save(), and size().
const int sofa::component::collision::DistanceGrid::ny [protected] |
Definition at line 308 of file DistanceGridCollisionModel.h.
Referenced by calcCubeDistance(), calcDistance(), fmm_pop(), fmm_push(), getNy(), and index().
const int sofa::component::collision::DistanceGrid::nz [protected] |
Definition at line 308 of file DistanceGridCollisionModel.h.
Referenced by calcCubeDistance(), calcDistance(), getNz(), and index().
const Coord sofa::component::collision::DistanceGrid::pmax [protected] |
Definition at line 309 of file DistanceGridCollisionModel.h.
Referenced by clamp(), computeBBox(), getCorner(), getPMax(), and inGrid().
const Coord sofa::component::collision::DistanceGrid::pmin [protected] |
Definition at line 309 of file DistanceGridCollisionModel.h.
Referenced by clamp(), computeBBox(), coord(), getCorner(), getPMin(), index(), inGrid(), ix(), iy(), and iz().
1.5.7.1