A volume representation used by the standard Marching Cubes implementation. More...
#include <FastBox.hpp>
Public Member Functions | |
FastBox (BaseVecT center) | |
Constructs a new box at the given center point defined by the used m_voxelsize}. More... | |
BaseVecT | getCenter () |
FastBox< BaseVecT > * | getNeighbor (int index) |
virtual void | getSurface (BaseMesh< BaseVecT > &mesh, vector< QueryPoint< BaseVecT >> &query_points, uint &globalIndex) |
Performs a local reconstruction according to the standard Marching Cubes table from Paul Bourke. More... | |
virtual void | getSurface (BaseMesh< BaseVecT > &mesh, vector< QueryPoint< BaseVecT >> &query_points, uint &globalIndex, BoundingBox< BaseVecT > &bb, vector< unsigned int > &duplicates, float comparePrecision) |
uint | getVertex (int index) |
Gets the vertex index of the queried cell corner. More... | |
void | setNeighbor (int index, FastBox< BaseVecT > *cell) |
Adjacent cells in the grid should use common vertices. This functions assigns the value of corner[index] to the corresponding corner of the give neighbor cell. More... | |
void | setVertex (int index, uint value) |
Each cell vertex (0 to 7) as associated with a vertex in the reconstruction grid. This methods assigns the index value} to the index}th cell corner. More... | |
virtual | ~FastBox () |
Destructor.NormalT. More... | |
Public Attributes | |
BaseVecT | m_center |
The box center. More... | |
bool | m_duplicate |
bool | m_extruded |
OptionalVertexHandle | m_intersections [12] |
The twelve intersection between box and surface. More... | |
FastBox< BaseVecT > * | m_neighbors [27] |
Pointer to all adjacent cells. More... | |
Static Public Attributes | |
static uint | INVALID_INDEX |
An index value that is used to reference vertices that are not in the grid. More... | |
static float | m_voxelsize |
The voxelsize of the reconstruction grid. More... | |
Protected Types | |
typedef FastBox< BaseVecT > | BoxType |
Protected Member Functions | |
float | calcIntersection (float x1, float x2, float d1, float d2) |
bool | compareFloat (double num1, double num2) |
float | distanceToBB (const BaseVecT &v, const BoundingBox< BaseVecT > &bb) const |
void | getCorners (BaseVecT corners[], vector< QueryPoint< BaseVecT >> &query_points) |
Calculates the position of the eight cell corners. More... | |
void | getDistances (float distances[], vector< QueryPoint< BaseVecT >> &query_points) |
Calculates the distance value for the eight cell corners. More... | |
int | getIndex (vector< QueryPoint< BaseVecT >> &query_points) |
Calculated the index for the MC table. More... | |
void | getIntersections (BaseVecT *corners, float *distance, BaseVecT *positions) |
Calculated the 12 possible intersections between the cell and the surface to interpolate. More... | |
Protected Attributes | |
uint | m_vertices [8] |
The eight box corners. More... | |
Friends | |
template<typename T > | |
class | BilinearFastBox |
A volume representation used by the standard Marching Cubes implementation.
Definition at line 65 of file FastBox.hpp.
|
protected |
Definition at line 218 of file FastBox.hpp.
lvr2::FastBox< BaseVecT >::FastBox | ( | BaseVecT | center | ) |
Constructs a new box at the given center point defined by the used m_voxelsize}.
|
inlinevirtual |
Destructor.NormalT.
Definition at line 78 of file FastBox.hpp.
|
protected |
|
inlineprotected |
Definition at line 160 of file FastBox.hpp.
|
protected |
|
inline |
Definition at line 111 of file FastBox.hpp.
|
protected |
Calculates the position of the eight cell corners.
corners | The cell corners |
query_points | The query points of the grid |
|
protected |
Calculates the distance value for the eight cell corners.
distances | The distance values |
query_points | The query points of the grid |
|
protected |
Calculated the index for the MC table.
|
protected |
Calculated the 12 possible intersections between the cell and the surface to interpolate.
corners | The eight corners of the current cell |
distance | The corresponding distance value |
positions | The interpolated intersections. |
FastBox<BaseVecT>* lvr2::FastBox< BaseVecT >::getNeighbor | ( | int | index | ) |
|
virtual |
Performs a local reconstruction according to the standard Marching Cubes table from Paul Bourke.
mesh | The reconstructed mesh |
query_points | A vector containing the query points of the reconstruction grid |
globalIndex | The index of the newest vertex in the mesh, i.e. a newly generated vertex shout have the index globalIndex + 1. |
Reimplemented in lvr2::TetraederBox< BaseVecT >, and lvr2::BilinearFastBox< BaseVecT >.
|
virtual |
Reimplemented in lvr2::BilinearFastBox< BaseVecT >.
uint lvr2::FastBox< BaseVecT >::getVertex | ( | int | index | ) |
Gets the vertex index of the queried cell corner.
index | One of the eight cell corners |
void lvr2::FastBox< BaseVecT >::setNeighbor | ( | int | index, |
FastBox< BaseVecT > * | cell | ||
) |
Adjacent cells in the grid should use common vertices. This functions assigns the value of corner[index] to the corresponding corner of the give neighbor cell.
index | One of the eight cell corners. |
cell | A neighbor cell. |
void lvr2::FastBox< BaseVecT >::setVertex | ( | int | index, |
uint | value | ||
) |
Each cell vertex (0 to 7) as associated with a vertex in the reconstruction grid. This methods assigns the index value} to the index}th cell corner.
index | One of the eight cell corners. |
value | An index in the reconstruction grid. |
Definition at line 216 of file FastBox.hpp.
|
static |
An index value that is used to reference vertices that are not in the grid.
Definition at line 144 of file FastBox.hpp.
BaseVecT lvr2::FastBox< BaseVecT >::m_center |
The box center.
Definition at line 152 of file FastBox.hpp.
bool lvr2::FastBox< BaseVecT >::m_duplicate |
Definition at line 149 of file FastBox.hpp.
bool lvr2::FastBox< BaseVecT >::m_extruded |
Definition at line 148 of file FastBox.hpp.
OptionalVertexHandle lvr2::FastBox< BaseVecT >::m_intersections[12] |
The twelve intersection between box and surface.
Definition at line 147 of file FastBox.hpp.
FastBox<BaseVecT>* lvr2::FastBox< BaseVecT >::m_neighbors[27] |
Pointer to all adjacent cells.
Definition at line 155 of file FastBox.hpp.
|
protected |
The eight box corners.
Definition at line 214 of file FastBox.hpp.
|
static |
The voxelsize of the reconstruction grid.
Definition at line 141 of file FastBox.hpp.