#include <CudaDistanceGridCollisionModel.h>

Data Structures | |
| struct | CudaDistanceGridParams |
Public Types | |
| typedef float | Real |
| typedef Vec3f | Coord |
| typedef CudaVector< Real > | VecReal |
| typedef CudaVector< Coord > | VecCoord |
Public Member Functions | |
| CudaDistanceGrid (int nx, int ny, int nz, Coord pmin, Coord pmax) | |
| CudaDistanceGrid * | 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 () |
| Compute distance field from stored mesh. | |
| void | calcCubeDistance (Real 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 |
| const Coord & | getInvCellWidth () const |
| const VecReal & | getDists () const |
| VecReal & | getDists () |
| 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, Real margin=0.0f) const |
| const Coord & | getPMin () const |
| const Coord & | getPMax () const |
| Coord | getCorner (int i) const |
| bool | isCube () const |
| Real | 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) |
| Real | operator[] (int index) const |
| Real & | operator[] (int index) |
| Real | interp (int index, const Coord &coefs) const |
| Real | interp (const Coord &p) const |
| Coord | grad (int index, const Coord &coefs) const |
| Coord | grad (const Coord &p) const |
| Real | eval (const Coord &x) const |
| Real | quickeval (const Coord &x) const |
| Real | eval2 (const Coord &x) const |
| Real | quickeval2 (const Coord &x) const |
Static Public Member Functions | |
| static Real | maxDist () |
| static CudaDistanceGrid * | 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 CudaDistanceGrid * | 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 Real | interp (Real coef, Real a, Real b) |
Data Fields | |
| CudaVector< Coord > | meshPts |
| sofa::core::componentmodel::topology::BaseMeshTopology::SeqTriangles | meshTriangles |
| sofa::core::componentmodel::topology::BaseMeshTopology::SeqQuads | meshQuads |
Protected Member Functions | |
| ~CudaDistanceGrid () | |
Static Protected Member Functions | |
| static std::map < CudaDistanceGridParams, CudaDistanceGrid * > & | getShared () |
Protected Attributes | |
| int | nbRef |
| VecReal | 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 | |
| Real | cubeDim |
| Cube dimension (!=0 if this is actually a cube. | |
Definition at line 49 of file CudaDistanceGridCollisionModel.h.
Definition at line 54 of file CudaDistanceGridCollisionModel.h.
| typedef float sofa::gpu::cuda::CudaDistanceGrid::Real |
Definition at line 52 of file CudaDistanceGridCollisionModel.h.
Definition at line 57 of file CudaDistanceGridCollisionModel.h.
Definition at line 56 of file CudaDistanceGridCollisionModel.h.
| sofa::gpu::cuda::CudaDistanceGrid::~CudaDistanceGrid | ( | ) | [protected] |
| CudaDistanceGrid * sofa::gpu::cuda::CudaDistanceGrid::addRef | ( | ) |
Add one reference to this grid. Note that loadShared already does this.
Definition at line 81 of file CudaDistanceGridCollisionModel.cpp.
References nbRef.
Referenced by sofa::gpu::cuda::CudaRigidDistanceGridCollisionModel::setGrid(), and sofa::gpu::cuda::CudaRigidDistanceGridCollisionModel::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 321 of file CudaDistanceGridCollisionModel.cpp.
References bbmax, bbmin, coord(), cubeDim, dists, meshPts, norm(), nx, ny, nz, sofa::helper::rabs(), and sofa::helper::rmax().
Referenced by load().
| void sofa::gpu::cuda::CudaDistanceGrid::calcDistance | ( | ) |
Compute distance field from stored mesh.
Compute distance field from given mesh.
Definition at line 366 of file CudaDistanceGridCollisionModel.cpp.
Referenced by load().
Definition at line 128 of file CudaDistanceGridCollisionModel.h.
Referenced by eval(), eval2(), quickeval(), and quickeval2().
| void sofa::gpu::cuda::CudaDistanceGrid::computeBBox | ( | ) |
Definition at line 179 of file CudaDistanceGridCollisionModel.h.
References cellWidth, and pmin.
Referenced by calcCubeDistance(), and sofa::gpu::cuda::CudaRigidDistanceGridCollisionModel::draw().
Definition at line 242 of file CudaDistanceGridCollisionModel.h.
References clamp(), inGrid(), interp(), norm2(), and sofa::helper::rsqrt().
Referenced by sofa::gpu::cuda::CudaRigidDistanceGridCollisionModel::draw().
Definition at line 105 of file CudaDistanceGridCollisionModel.h.
Referenced by sofa::gpu::cuda::CudaRigidDistanceGridCollisionModel::draw().
| const Coord& sofa::gpu::cuda::CudaDistanceGrid::getBBMax | ( | ) | const [inline] |
Definition at line 102 of file CudaDistanceGridCollisionModel.h.
References bbmax.
Referenced by sofa::gpu::cuda::CudaCollisionDetection::PointRigidTest::fillInfo(), sofa::gpu::cuda::CudaCollisionDetection::SphereRigidTest::fillInfo(), and sofa::gpu::cuda::CudaCollisionDetection::RigidRigidTest::fillInfo().
| const Coord& sofa::gpu::cuda::CudaDistanceGrid::getBBMin | ( | ) | const [inline] |
Definition at line 101 of file CudaDistanceGridCollisionModel.h.
References bbmin.
Referenced by sofa::gpu::cuda::CudaCollisionDetection::PointRigidTest::fillInfo(), sofa::gpu::cuda::CudaCollisionDetection::SphereRigidTest::fillInfo(), and sofa::gpu::cuda::CudaCollisionDetection::RigidRigidTest::fillInfo().
| const Coord& sofa::gpu::cuda::CudaDistanceGrid::getCellWidth | ( | ) | const [inline] |
Definition at line 115 of file CudaDistanceGridCollisionModel.h.
Referenced by sofa::gpu::cuda::CudaRigidDistanceGridCollisionModel::draw().
| Real sofa::gpu::cuda::CudaDistanceGrid::getCubeDim | ( | ) | const [inline] |
| VecReal& sofa::gpu::cuda::CudaDistanceGrid::getDists | ( | ) | [inline] |
| const VecReal& sofa::gpu::cuda::CudaDistanceGrid::getDists | ( | ) | const [inline] |
Definition at line 96 of file CudaDistanceGridCollisionModel.h.
References dists.
Referenced by sofa::gpu::cuda::CudaCollisionDetection::PointRigidTest::fillInfo(), sofa::gpu::cuda::CudaCollisionDetection::SphereRigidTest::fillInfo(), and sofa::gpu::cuda::CudaCollisionDetection::RigidRigidTest::fillInfo().
| const Coord& sofa::gpu::cuda::CudaDistanceGrid::getInvCellWidth | ( | ) | const [inline] |
Definition at line 95 of file CudaDistanceGridCollisionModel.h.
References invCellWidth.
Referenced by sofa::gpu::cuda::CudaCollisionDetection::PointRigidTest::fillInfo(), sofa::gpu::cuda::CudaCollisionDetection::SphereRigidTest::fillInfo(), and sofa::gpu::cuda::CudaCollisionDetection::RigidRigidTest::fillInfo().
| int sofa::gpu::cuda::CudaDistanceGrid::getNx | ( | ) | const [inline] |
Definition at line 91 of file CudaDistanceGridCollisionModel.h.
References nx.
Referenced by sofa::gpu::cuda::CudaRigidDistanceGridCollisionModel::draw(), sofa::gpu::cuda::CudaCollisionDetection::PointRigidTest::fillInfo(), sofa::gpu::cuda::CudaCollisionDetection::SphereRigidTest::fillInfo(), and sofa::gpu::cuda::CudaCollisionDetection::RigidRigidTest::fillInfo().
| int sofa::gpu::cuda::CudaDistanceGrid::getNy | ( | ) | const [inline] |
Definition at line 92 of file CudaDistanceGridCollisionModel.h.
References ny.
Referenced by sofa::gpu::cuda::CudaRigidDistanceGridCollisionModel::draw(), sofa::gpu::cuda::CudaCollisionDetection::PointRigidTest::fillInfo(), sofa::gpu::cuda::CudaCollisionDetection::SphereRigidTest::fillInfo(), and sofa::gpu::cuda::CudaCollisionDetection::RigidRigidTest::fillInfo().
| int sofa::gpu::cuda::CudaDistanceGrid::getNz | ( | ) | const [inline] |
Definition at line 93 of file CudaDistanceGridCollisionModel.h.
References nz.
Referenced by sofa::gpu::cuda::CudaRigidDistanceGridCollisionModel::draw(), sofa::gpu::cuda::CudaCollisionDetection::PointRigidTest::fillInfo(), sofa::gpu::cuda::CudaCollisionDetection::SphereRigidTest::fillInfo(), and sofa::gpu::cuda::CudaCollisionDetection::RigidRigidTest::fillInfo().
| const Coord& sofa::gpu::cuda::CudaDistanceGrid::getPMax | ( | ) | const [inline] |
Definition at line 114 of file CudaDistanceGridCollisionModel.h.
References pmax.
Referenced by sofa::gpu::cuda::CudaRigidDistanceGridCollisionModel::draw().
| const Coord& sofa::gpu::cuda::CudaDistanceGrid::getPMin | ( | ) | const [inline] |
Definition at line 113 of file CudaDistanceGridCollisionModel.h.
References pmin.
Referenced by sofa::gpu::cuda::CudaRigidDistanceGridCollisionModel::draw(), sofa::gpu::cuda::CudaCollisionDetection::PointRigidTest::fillInfo(), sofa::gpu::cuda::CudaCollisionDetection::SphereRigidTest::fillInfo(), and sofa::gpu::cuda::CudaCollisionDetection::RigidRigidTest::fillInfo().
| std::map< CudaDistanceGrid::CudaDistanceGridParams, CudaDistanceGrid * > & sofa::gpu::cuda::CudaDistanceGrid::getShared | ( | ) | [static, protected] |
Definition at line 438 of file CudaDistanceGridCollisionModel.cpp.
Referenced by loadShared(), and ~CudaDistanceGrid().
Definition at line 207 of file CudaDistanceGridCollisionModel.h.
References dists, interp(), nx, and nxny.
Referenced by sofa::gpu::cuda::CudaRigidDistanceGridCollisionModel::draw(), and grad().
Definition at line 151 of file CudaDistanceGridCollisionModel.h.
References invCellWidth, nx, ny, nz, pmin, and sofa::helper::rfloor().
Referenced by grad(), index(), interp(), quickeval(), and quickeval2().
Definition at line 120 of file CudaDistanceGridCollisionModel.h.
References cellWidth, pmax, and pmin.
Referenced by eval(), eval2(), quickeval(), and quickeval2().
| bool sofa::gpu::cuda::CudaDistanceGrid::isCube | ( | ) | const [inline] |
Definition at line 136 of file CudaDistanceGridCollisionModel.h.
References invCellWidth, pmin, and sofa::helper::rfloor().
Definition at line 141 of file CudaDistanceGridCollisionModel.h.
References invCellWidth, pmin, and sofa::helper::rfloor().
Definition at line 146 of file CudaDistanceGridCollisionModel.h.
References invCellWidth, pmin, and sofa::helper::rfloor().
| CudaDistanceGrid * sofa::gpu::cuda::CudaDistanceGrid::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 96 of file CudaDistanceGridCollisionModel.cpp.
References bbmax, bbmin, calcCubeDistance(), calcDistance(), computeBBox(), sofa::helper::io::Mesh::Create(), CudaDistanceGrid(), dists, sofa::helper::io::Mesh::getFacets(), sofa::helper::io::Mesh::getVertices(), meshPts, meshQuads, meshTriangles, and nxnynz.
Referenced by loadShared().
| CudaDistanceGrid * sofa::gpu::cuda::CudaDistanceGrid::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 418 of file CudaDistanceGridCollisionModel.cpp.
References sofa::gpu::cuda::CudaDistanceGrid::CudaDistanceGridParams::filename, getShared(), load(), sofa::gpu::cuda::CudaDistanceGrid::CudaDistanceGridParams::nx, sofa::gpu::cuda::CudaDistanceGrid::CudaDistanceGridParams::ny, sofa::gpu::cuda::CudaDistanceGrid::CudaDistanceGridParams::nz, sofa::gpu::cuda::CudaDistanceGrid::CudaDistanceGridParams::pmax, sofa::gpu::cuda::CudaDistanceGrid::CudaDistanceGridParams::pmin, and sofa::gpu::cuda::CudaDistanceGrid::CudaDistanceGridParams::scale.
Referenced by sofa::gpu::cuda::CudaRigidDistanceGridCollisionModel::init().
| static Real sofa::gpu::cuda::CudaDistanceGrid::maxDist | ( | ) | [inline, static] |
Definition at line 53 of file CudaDistanceGridCollisionModel.h.
Definition at line 258 of file CudaDistanceGridCollisionModel.h.
References cellWidth, clamp(), dists, index(), inGrid(), norm2(), and sofa::helper::rsqrt().
| bool sofa::gpu::cuda::CudaDistanceGrid::release | ( | ) |
Release one reference, deleting this grid if this is the last.
Definition at line 88 of file CudaDistanceGridCollisionModel.cpp.
References nbRef.
| bool sofa::gpu::cuda::CudaDistanceGrid::save | ( | const std::string & | filename | ) |
Save current grid.
!!!TODO!!! ///
Definition at line 280 of file CudaDistanceGridCollisionModel.cpp.
| void sofa::gpu::cuda::CudaDistanceGrid::setBBMax | ( | const Coord & | val | ) | [inline] |
| void sofa::gpu::cuda::CudaDistanceGrid::setBBMin | ( | const Coord & | val | ) | [inline] |
| int sofa::gpu::cuda::CudaDistanceGrid::size | ( | void | ) | const [inline] |
Coord sofa::gpu::cuda::CudaDistanceGrid::bbmax [protected] |
bounding box of the object, smaller than the grid
Definition at line 319 of file CudaDistanceGridCollisionModel.h.
Referenced by calcCubeDistance(), computeBBox(), getBBCorner(), getBBMax(), inBBox(), load(), and setBBMax().
Coord sofa::gpu::cuda::CudaDistanceGrid::bbmin [protected] |
Definition at line 319 of file CudaDistanceGridCollisionModel.h.
Referenced by calcCubeDistance(), computeBBox(), getBBCorner(), getBBMin(), inBBox(), load(), and setBBMin().
const Coord sofa::gpu::cuda::CudaDistanceGrid::cellWidth [protected] |
Definition at line 318 of file CudaDistanceGridCollisionModel.h.
Referenced by coord(), getCellWidth(), inGrid(), quickeval(), and quickeval2().
Real sofa::gpu::cuda::CudaDistanceGrid::cubeDim [protected] |
Cube dimension (!=0 if this is actually a cube.
Definition at line 321 of file CudaDistanceGridCollisionModel.h.
Referenced by calcCubeDistance(), getCubeDim(), and isCube().
VecReal sofa::gpu::cuda::CudaDistanceGrid::dists [protected] |
Definition at line 315 of file CudaDistanceGridCollisionModel.h.
Referenced by calcCubeDistance(), getDists(), grad(), interp(), load(), operator[](), quickeval(), quickeval2(), and save().
const Coord sofa::gpu::cuda::CudaDistanceGrid::invCellWidth [protected] |
Definition at line 318 of file CudaDistanceGridCollisionModel.h.
Referenced by getInvCellWidth(), index(), ix(), iy(), and iz().
Definition at line 309 of file CudaDistanceGridCollisionModel.h.
Referenced by calcCubeDistance(), computeBBox(), sofa::gpu::cuda::CudaRigidDistanceGridCollisionModel::draw(), sofa::gpu::cuda::CudaCollisionDetection::RigidRigidTest::fillInfo(), sofa::gpu::cuda::CudaCollisionDetection::RigidRigidTest::init(), and load().
int sofa::gpu::cuda::CudaDistanceGrid::nbRef [protected] |
Definition at line 314 of file CudaDistanceGridCollisionModel.h.
const int sofa::gpu::cuda::CudaDistanceGrid::nx [protected] |
Definition at line 316 of file CudaDistanceGridCollisionModel.h.
Referenced by calcCubeDistance(), getNx(), grad(), index(), and interp().
const int sofa::gpu::cuda::CudaDistanceGrid::nxny [protected] |
Definition at line 316 of file CudaDistanceGridCollisionModel.h.
const int sofa::gpu::cuda::CudaDistanceGrid::nxnynz [protected] |
Definition at line 316 of file CudaDistanceGridCollisionModel.h.
const int sofa::gpu::cuda::CudaDistanceGrid::ny [protected] |
Definition at line 316 of file CudaDistanceGridCollisionModel.h.
Referenced by calcCubeDistance(), getNy(), and index().
const int sofa::gpu::cuda::CudaDistanceGrid::nz [protected] |
Definition at line 316 of file CudaDistanceGridCollisionModel.h.
Referenced by calcCubeDistance(), getNz(), and index().
const Coord sofa::gpu::cuda::CudaDistanceGrid::pmax [protected] |
Definition at line 317 of file CudaDistanceGridCollisionModel.h.
Referenced by clamp(), computeBBox(), getCorner(), getPMax(), and inGrid().
const Coord sofa::gpu::cuda::CudaDistanceGrid::pmin [protected] |
Definition at line 317 of file CudaDistanceGridCollisionModel.h.
Referenced by clamp(), computeBBox(), coord(), getCorner(), getPMin(), index(), inGrid(), ix(), iy(), and iz().
1.5.7.1