Defines a voxel cell of a volume mesh. More...
#include <MeshViz/3Ddata/PbVoxelCell.h>
Public Member Functions | |
PbVoxelCell (const PbMesh *owner_mesh) | |
PbVoxelCell (const PbVoxelCell &cell) | |
~PbVoxelCell () | |
PbVoxelCell & | operator= (const PbVoxelCell &cell) |
virtual float | getLongestEdgeLength () const |
virtual SbBox3f | getBoundingBox () const |
void | getBounds (float &xmin, float &ymin, float &zmin, float &xmax, float &ymax, float &zmax) const |
virtual SbVec3f | getCenter () const |
virtual float | getVolume () const |
virtual float | getArea () const |
virtual void | getNodesIndexOfEdge (int edge, PbArrayOfInt &nodes_index) const |
virtual void | getNodesIndexOfFacet (int facet, PbArrayOfInt &nodes_index) const |
virtual void | getNodesLocalIndexOfEdge (int edge, PbArrayOfInt &nodes_index) const |
virtual void | getNodesLocalIndexOfFacet (int facet, PbArrayOfInt &nodes_index) const |
virtual int | locatePoint (const SbVec3f &coord, float tolerance, SbVec3f &pcoord) const |
virtual void | getWeight (const SbVec3f &pcoord, float *weight) const |
virtual float | getValue (const SbVec3f &pcoord, const float *s) const |
virtual SbVec3f | getValue (const SbVec3f &pcoord, const SbVec3f *v) const |
A voxel is a parallelepipede of which faces are orthogonal to X, Y, Z axes. Each facet is a rectangle not necessarily a square. The 4 first indices defines a facet oriented towards the interior of the cell.
Facets, nodes and edges are numbered as following :
4-----------7 facet 0 = 0374 edge 0 = 01 /| /| k facet 1 = 1562 edge 1 = 12 / | / | | facet 2 = 0451 edge 2 = 23 / | / | | facet 3 = 3267 edge 3 = 30 5----------6 | | facet 4 = 0123 edge 4 = 45 | | | | ....... j facet 5 = 4765 edge 5 = 56 | 0----|------3 . edge 6 = 67 | / | / . edge 7 = 74 | / | / . edge 8 = 04 |/ | / i edge 9 = 15 1----------2 edge10 = 26 edge11 = 37
This numerotation must be respected to have the right result returned by getVolume().(i.e. edge 01 on Xaxis, edge 12 on Yaxis, edge 26 on Zaxis)
PbVoxelCell::PbVoxelCell | ( | const PbMesh * | owner_mesh | ) |
Constructor of a default simple cell.
PbVoxelCell::PbVoxelCell | ( | const PbVoxelCell & | cell | ) |
Copy constructor.
PbVoxelCell::~PbVoxelCell | ( | ) |
Destructor.
virtual float PbVoxelCell::getArea | ( | ) | const [inline, virtual] |
Returns always 0.
Implements PbCell.
virtual SbBox3f PbVoxelCell::getBoundingBox | ( | ) | const [virtual] |
Gets the cell's bounding box.
Reimplemented from PbCell.
void PbVoxelCell::getBounds | ( | float & | xmin, | |
float & | ymin, | |||
float & | zmin, | |||
float & | xmax, | |||
float & | ymax, | |||
float & | zmax | |||
) | const [virtual] |
Gets the cell's bounds.
Similar to getBoundingBox() but it does not use any SbBox object.
Reimplemented from PbCell.
virtual SbVec3f PbVoxelCell::getCenter | ( | ) | const [virtual] |
Gets the cell's geometric center.
Reimplemented from PbCell.
virtual float PbVoxelCell::getLongestEdgeLength | ( | ) | const [virtual] |
Gets the length of the longest edge of the cell.
Implements PbCell.
virtual void PbVoxelCell::getNodesIndexOfEdge | ( | int | edge, | |
PbArrayOfInt & | nodes_index | |||
) | const [virtual] |
Gets the array of 2 index mesh's nodes that belongs to a given edge of this cell.
(edge must be >=0 and < 12)
Implements PbCell.
virtual void PbVoxelCell::getNodesIndexOfFacet | ( | int | facet, | |
PbArrayOfInt & | nodes_index | |||
) | const [virtual] |
Gets the array of index mesh's nodes that belongs to a given facet of this cell.
(facet must be >=0 and < 6)
Implements PbCell.
virtual void PbVoxelCell::getNodesLocalIndexOfEdge | ( | int | edge, | |
PbArrayOfInt & | nodes_index | |||
) | const [virtual] |
Gets the array of 2 nodes index that belongs to a given edge of this cell.
edge must be >=0 and < 12. Each index in nodes_index is >=0 and < 8.
Implements PbCell.
virtual void PbVoxelCell::getNodesLocalIndexOfFacet | ( | int | facet, | |
PbArrayOfInt & | nodes_index | |||
) | const [virtual] |
Gets the array of node index that belongs to a given facet of this cell.
facet must be >=0 and < 6. Each index is >=0 and < 8.
Implements PbCell.
Get the vector value of a point in the cell.
pcoord | [in] Parametric [0..1] coordinate of the point inside the cell. | |
v | [in] The vector dataset to interpolate |
Reimplemented from PbCell.
virtual float PbVoxelCell::getValue | ( | const SbVec3f & | pcoord, | |
const float * | s | |||
) | const [virtual] |
Get the scalar value of a point in the cell.
pcoord | [in] Parametric [0..1] coordinate of the point inside the cell. | |
s | [in] The scalar dataset to interpolate |
Reimplemented from PbCell.
virtual float PbVoxelCell::getVolume | ( | ) | const [inline, virtual] |
Gets the volume of the cell.
Implements PbCell.
virtual void PbVoxelCell::getWeight | ( | const SbVec3f & | pcoord, | |
float * | weight | |||
) | const [virtual] |
Gets the 8 weights of a point defined by its parametric coordinates.
Implements PbCell.
virtual int PbVoxelCell::locatePoint | ( | const SbVec3f & | coord, | |
float | tolerance, | |||
SbVec3f & | pcoord | |||
) | const [virtual] |
Returns 1 if the point is inside the cell, 0 otherwise.
Gets also the parametric coordinate of the point .
Implements PbCell.
PbVoxelCell& PbVoxelCell::operator= | ( | const PbVoxelCell & | cell | ) |
Assignment operator.
Reimplemented from PbCell.