sofa::gpu::cuda::CudaDistanceGrid Class Reference

#include <CudaDistanceGridCollisionModel.h>

Collaboration diagram for sofa::gpu::cuda::CudaDistanceGrid:

Collaboration graph
[legend]

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.

Detailed Description

Definition at line 49 of file CudaDistanceGridCollisionModel.h.


Member Typedef Documentation

Definition at line 54 of file CudaDistanceGridCollisionModel.h.

Definition at line 52 of file CudaDistanceGridCollisionModel.h.

Definition at line 57 of file CudaDistanceGridCollisionModel.h.

Definition at line 56 of file CudaDistanceGridCollisionModel.h.


Constructor & Destructor Documentation

sofa::gpu::cuda::CudaDistanceGrid::CudaDistanceGrid ( int  nx,
int  ny,
int  nz,
Coord  pmin,
Coord  pmax 
)

Definition at line 61 of file CudaDistanceGridCollisionModel.cpp.

Referenced by load().

sofa::gpu::cuda::CudaDistanceGrid::~CudaDistanceGrid (  )  [protected]

Definition at line 71 of file CudaDistanceGridCollisionModel.cpp.

References getShared().


Member Function Documentation

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().

void sofa::gpu::cuda::CudaDistanceGrid::calcCubeDistance ( Real  dim = 1,
int  np = 5 
)

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().

Coord sofa::gpu::cuda::CudaDistanceGrid::clamp ( Coord  p  )  const [inline]

Definition at line 128 of file CudaDistanceGridCollisionModel.h.

References pmax, and pmin.

Referenced by eval(), eval2(), quickeval(), and quickeval2().

void sofa::gpu::cuda::CudaDistanceGrid::computeBBox (  ) 

Update bbox.

compute the real bbox from the grid content

Definition at line 297 of file CudaDistanceGridCollisionModel.cpp.

References bbmax, bbmin, meshPts, pmax, and pmin.

Referenced by load().

Coord sofa::gpu::cuda::CudaDistanceGrid::coord ( int  x,
int  y,
int  z 
) [inline]

Real sofa::gpu::cuda::CudaDistanceGrid::eval ( const Coord &  x  )  const [inline]

Real sofa::gpu::cuda::CudaDistanceGrid::eval2 ( const Coord &  x  )  const [inline]

Definition at line 274 of file CudaDistanceGridCollisionModel.h.

References clamp(), inGrid(), interp(), and norm2().

Coord sofa::gpu::cuda::CudaDistanceGrid::getBBCorner ( int  i  )  const [inline]

const Coord& sofa::gpu::cuda::CudaDistanceGrid::getBBMax (  )  const [inline]

const Coord& sofa::gpu::cuda::CudaDistanceGrid::getBBMin (  )  const [inline]

const Coord& sofa::gpu::cuda::CudaDistanceGrid::getCellWidth (  )  const [inline]

Definition at line 94 of file CudaDistanceGridCollisionModel.h.

References cellWidth.

Coord sofa::gpu::cuda::CudaDistanceGrid::getCorner ( int  i  )  const [inline]

Real sofa::gpu::cuda::CudaDistanceGrid::getCubeDim (  )  const [inline]

Definition at line 118 of file CudaDistanceGridCollisionModel.h.

References cubeDim.

VecReal& sofa::gpu::cuda::CudaDistanceGrid::getDists (  )  [inline]

Definition at line 97 of file CudaDistanceGridCollisionModel.h.

References dists.

const VecReal& sofa::gpu::cuda::CudaDistanceGrid::getDists (  )  const [inline]

const Coord& sofa::gpu::cuda::CudaDistanceGrid::getInvCellWidth (  )  const [inline]

int sofa::gpu::cuda::CudaDistanceGrid::getNx (  )  const [inline]

int sofa::gpu::cuda::CudaDistanceGrid::getNy (  )  const [inline]

int sofa::gpu::cuda::CudaDistanceGrid::getNz (  )  const [inline]

const Coord& sofa::gpu::cuda::CudaDistanceGrid::getPMax (  )  const [inline]

const Coord& sofa::gpu::cuda::CudaDistanceGrid::getPMin (  )  const [inline]

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().

Coord sofa::gpu::cuda::CudaDistanceGrid::grad ( const Coord &  p  )  const [inline]

Definition at line 235 of file CudaDistanceGridCollisionModel.h.

References grad(), and index().

Coord sofa::gpu::cuda::CudaDistanceGrid::grad ( int  index,
const Coord &  coefs 
) const [inline]

bool sofa::gpu::cuda::CudaDistanceGrid::inBBox ( const Coord &  p,
Real  margin = 0.0f 
) const [inline]

Definition at line 106 of file CudaDistanceGridCollisionModel.h.

References bbmax, and bbmin.

int sofa::gpu::cuda::CudaDistanceGrid::index ( int  x,
int  y,
int  z 
) [inline]

Definition at line 174 of file CudaDistanceGridCollisionModel.h.

References nx, and ny.

int sofa::gpu::cuda::CudaDistanceGrid::index ( const Coord &  p  )  const [inline]

Definition at line 168 of file CudaDistanceGridCollisionModel.h.

References index().

int sofa::gpu::cuda::CudaDistanceGrid::index ( const Coord &  p,
Coord &  coefs 
) const [inline]

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().

bool sofa::gpu::cuda::CudaDistanceGrid::inGrid ( const Coord &  p  )  const [inline]

Definition at line 120 of file CudaDistanceGridCollisionModel.h.

References cellWidth, pmax, and pmin.

Referenced by eval(), eval2(), quickeval(), and quickeval2().

Real sofa::gpu::cuda::CudaDistanceGrid::interp ( const Coord &  p  )  const [inline]

Definition at line 200 of file CudaDistanceGridCollisionModel.h.

References index(), and interp().

Real sofa::gpu::cuda::CudaDistanceGrid::interp ( int  index,
const Coord &  coefs 
) const [inline]

Definition at line 192 of file CudaDistanceGridCollisionModel.h.

References dists, interp(), nx, and nxny.

static Real sofa::gpu::cuda::CudaDistanceGrid::interp ( Real  coef,
Real  a,
Real  b 
) [inline, static]

Definition at line 187 of file CudaDistanceGridCollisionModel.h.

Referenced by eval(), eval2(), grad(), and interp().

bool sofa::gpu::cuda::CudaDistanceGrid::isCube (  )  const [inline]

Definition at line 117 of file CudaDistanceGridCollisionModel.h.

References cubeDim.

int sofa::gpu::cuda::CudaDistanceGrid::ix ( const Coord &  p  )  const [inline]

Definition at line 136 of file CudaDistanceGridCollisionModel.h.

References invCellWidth, pmin, and sofa::helper::rfloor().

int sofa::gpu::cuda::CudaDistanceGrid::iy ( const Coord &  p  )  const [inline]

Definition at line 141 of file CudaDistanceGridCollisionModel.h.

References invCellWidth, pmin, and sofa::helper::rfloor().

int sofa::gpu::cuda::CudaDistanceGrid::iz ( const Coord &  p  )  const [inline]

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]

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]

static Real sofa::gpu::cuda::CudaDistanceGrid::maxDist (  )  [inline, static]

Definition at line 53 of file CudaDistanceGridCollisionModel.h.

Real& sofa::gpu::cuda::CudaDistanceGrid::operator[] ( int  index  )  [inline]

Definition at line 185 of file CudaDistanceGridCollisionModel.h.

References dists.

Real sofa::gpu::cuda::CudaDistanceGrid::operator[] ( int  index  )  const [inline]

Definition at line 184 of file CudaDistanceGridCollisionModel.h.

References dists.

Real sofa::gpu::cuda::CudaDistanceGrid::quickeval ( const Coord &  x  )  const [inline]

Real sofa::gpu::cuda::CudaDistanceGrid::quickeval2 ( const Coord &  x  )  const [inline]

Definition at line 291 of file CudaDistanceGridCollisionModel.h.

References cellWidth, clamp(), dists, index(), inGrid(), and norm2().

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.

References dists, and nxnynz.

void sofa::gpu::cuda::CudaDistanceGrid::setBBMax ( const Coord &  val  )  [inline]

Definition at line 104 of file CudaDistanceGridCollisionModel.h.

References bbmax.

void sofa::gpu::cuda::CudaDistanceGrid::setBBMin ( const Coord &  val  )  [inline]

Definition at line 103 of file CudaDistanceGridCollisionModel.h.

References bbmin.

int sofa::gpu::cuda::CudaDistanceGrid::size ( void   )  const [inline]

Definition at line 99 of file CudaDistanceGridCollisionModel.h.

References nxnynz.


Field Documentation

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().

Definition at line 318 of file CudaDistanceGridCollisionModel.h.

Referenced by coord(), getCellWidth(), inGrid(), quickeval(), and quickeval2().

Cube dimension (!=0 if this is actually a cube.

Definition at line 321 of file CudaDistanceGridCollisionModel.h.

Referenced by calcCubeDistance(), getCubeDim(), and isCube().

Definition at line 318 of file CudaDistanceGridCollisionModel.h.

Referenced by getInvCellWidth(), index(), ix(), iy(), and iz().

Definition at line 311 of file CudaDistanceGridCollisionModel.h.

Referenced by load().

Definition at line 310 of file CudaDistanceGridCollisionModel.h.

Referenced by load().

Definition at line 314 of file CudaDistanceGridCollisionModel.h.

Referenced by addRef(), and release().

Definition at line 316 of file CudaDistanceGridCollisionModel.h.

Referenced by calcCubeDistance(), getNx(), grad(), index(), and interp().

Definition at line 316 of file CudaDistanceGridCollisionModel.h.

Referenced by grad(), and interp().

Definition at line 316 of file CudaDistanceGridCollisionModel.h.

Referenced by load(), save(), and size().

Definition at line 316 of file CudaDistanceGridCollisionModel.h.

Referenced by calcCubeDistance(), getNy(), and index().

Definition at line 316 of file CudaDistanceGridCollisionModel.h.

Referenced by calcCubeDistance(), getNz(), and index().

Definition at line 317 of file CudaDistanceGridCollisionModel.h.

Referenced by clamp(), computeBBox(), getCorner(), getPMax(), and inGrid().


The documentation for this class was generated from the following files:

Generated on Sun Nov 23 04:24:03 2008 for Sofa by  doxygen 1.5.7.1