Visualization Library v1.0.3A lightweight C++ OpenGL middleware for 2D/3D graphics |
[Download] [Tutorials] [All Classes] [Grouped Classes] |
Defines the volume data to be used with a MarchingCube object. More...
#include <MarchingCubes.hpp>
Classes | |
struct | Cube |
A Volume cell. | |
Public Member Functions | |
Volume () | |
void | setup (float *data, bool use_directly, bool copy_data, const fvec3 &bottom_left, const fvec3 &top_right, const ivec3 &slices) |
Setup the volume data with the specified memory management. | |
void | setup (const Volume &) |
ref< Volume > | downsample () const |
Returns a new volume which is half of the size of the original volume in each direction (thus requires up to 1/8th of the memory). | |
const float * | values () const |
float * | values () |
const float & | value (int i) const |
float & | value (int i) |
const float & | value (int x, int y, int z) const |
float & | value (int x, int y, int z) |
void | normalHQ (fvec3 &normal, const fvec3 &v, float dx, float dy, float dz) |
Computes a high quality normal (best rendering quality) | |
void | normalLQ (fvec3 &normal, const fvec3 &v, float dx, float dy, float dz) |
Computes a low quality normal (best performances) | |
float | sampleSmooth (float x, float y, float z) const |
Samples the volume using tri-linear interpolation sampling. | |
float | sampleNearest (float x, float y, float z) const |
Samples the volume using nearest point sampling. | |
fvec3 | coordinate (int x, int y, int z) const |
const fvec3 & | bottomLeft () const |
const fvec3 & | topRight () const |
const ivec3 & | slices () const |
fvec3 | size () const |
float | computeMinimum () const |
float | computeMaximum () const |
float | computeAverage () const |
float | minimum () const |
float | maximum () const |
float | average () const |
const Volume::Cube & | cube (int x, int y, int z) const |
const fvec3 & | cellSize () const |
Returns the x/y/z size of a cell. | |
bool | dataIsDirty () const |
Returns true if the internal data hasn't been updated since the last call to setDataDirty() or setup() | |
void | setDataDirty () |
Notifies that the data of a Volume has changed and that the internal acceleration structures should be recomputed. | |
void | setupInternalData () |
Protected Attributes | |
std::vector< float > | mInternalValues |
float * | mValues |
fvec3 | mBottomLeft |
fvec3 | mTopRight |
fvec3 | mSize |
ivec3 | mSlices |
fvec3 | mCellSize |
float | mMinimum |
float | mMaximum |
float | mAverage |
bool | mDataIsDirty |
std::vector< Cube > | mCubes |
Defines the volume data to be used with a MarchingCube object.
Definition at line 46 of file MarchingCubes.hpp.
Volume::Volume | ( | ) |
Definition at line 458 of file MarchingCubes.cpp.
References NULL, setup(), and VL_DEBUG_SET_OBJECT_NAME.
Referenced by downsample().
void Volume::setup | ( | float * | data, |
bool | use_directly, | ||
bool | copy_data, | ||
const fvec3 & | bottom_left, | ||
const fvec3 & | top_right, | ||
const ivec3 & | slices | ||
) |
Setup the volume data with the specified memory management.
data | The buffer containing the volume data. Can be NULL only if use_directly == false and copy_data == false . |
use_directly | If true the buffer will be used directly and no internal copy will be done. |
copy_data | If true the buffer pointed by data will be copied in the internal buffer used to store the volume data. The copy_data parameter is ignored if use_directly is set to true . |
Definition at line 541 of file MarchingCubes.cpp.
References bottomLeft(), mAverage, mBottomLeft, mCellSize, mDataIsDirty, mInternalValues, mMaximum, mMinimum, mSize, mSlices, mTopRight, mValues, size(), slices(), topRight(), VL_CHECK, vl::Vector3< T_Scalar >::x(), vl::Vector3< T_Scalar >::y(), and vl::Vector3< T_Scalar >::z().
Referenced by Volume().
void Volume::setup | ( | const Volume & | volume ) |
Definition at line 575 of file MarchingCubes.cpp.
References mAverage, mDataIsDirty, mMaximum, and mMinimum.
Returns a new volume which is half of the size of the original volume in each direction (thus requires up to 1/8th of the memory).
Use this function when the volume data to be processed is too big or produces too many polygons.
Definition at line 464 of file MarchingCubes.cpp.
References bottomLeft(), mSlices, NULL, topRight(), value(), Volume(), vl::Vector3< T_Scalar >::x(), vl::Vector3< T_Scalar >::y(), and vl::Vector3< T_Scalar >::z().
const float* vl::Volume::values | ( | ) | const [inline] |
Definition at line 76 of file MarchingCubes.hpp.
float* vl::Volume::values | ( | ) | [inline] |
Definition at line 78 of file MarchingCubes.hpp.
const float& vl::Volume::value | ( | int | i ) | const [inline] |
Definition at line 80 of file MarchingCubes.hpp.
Referenced by vl::MarchingCubes::computeEdges(), downsample(), vl::MarchingCubes::processCube(), sampleNearest(), sampleSmooth(), and setupInternalData().
float& vl::Volume::value | ( | int | i ) | [inline] |
Definition at line 82 of file MarchingCubes.hpp.
const float& vl::Volume::value | ( | int | x, |
int | y, | ||
int | z | ||
) | const [inline] |
Definition at line 84 of file MarchingCubes.hpp.
float& vl::Volume::value | ( | int | x, |
int | y, | ||
int | z | ||
) | [inline] |
Definition at line 86 of file MarchingCubes.hpp.
Computes a high quality normal (best rendering quality)
Definition at line 639 of file MarchingCubes.cpp.
References vl::Vector3< T_Scalar >::normalize(), sampleSmooth(), vl::Vector3< T_Scalar >::x(), vl::Vector3< T_Scalar >::y(), and vl::Vector3< T_Scalar >::z().
Referenced by vl::MarchingCubes::computeEdges().
Computes a low quality normal (best performances)
Definition at line 650 of file MarchingCubes.cpp.
References vl::Vector3< T_Scalar >::normalize(), sampleSmooth(), vl::Vector3< T_Scalar >::x(), vl::Vector3< T_Scalar >::y(), and vl::Vector3< T_Scalar >::z().
float Volume::sampleSmooth | ( | float | x, |
float | y, | ||
float | z | ||
) | const |
Samples the volume using tri-linear interpolation sampling.
Definition at line 603 of file MarchingCubes.cpp.
References mBottomLeft, mSize, mSlices, value(), vl::Vector3< T_Scalar >::x(), vl::Vector3< T_Scalar >::y(), and vl::Vector3< T_Scalar >::z().
Referenced by normalHQ(), and normalLQ().
float Volume::sampleNearest | ( | float | x, |
float | y, | ||
float | z | ||
) | const |
Samples the volume using nearest point sampling.
Definition at line 584 of file MarchingCubes.cpp.
References mBottomLeft, mSize, mSlices, value(), vl::Vector3< T_Scalar >::x(), vl::Vector3< T_Scalar >::y(), and vl::Vector3< T_Scalar >::z().
fvec3 vl::Volume::coordinate | ( | int | x, |
int | y, | ||
int | z | ||
) | const [inline] |
Definition at line 100 of file MarchingCubes.hpp.
Referenced by vl::MarchingCubes::computeEdges().
const fvec3& vl::Volume::bottomLeft | ( | ) | const [inline] |
Definition at line 102 of file MarchingCubes.hpp.
Referenced by downsample(), and setup().
const fvec3& vl::Volume::topRight | ( | ) | const [inline] |
Definition at line 104 of file MarchingCubes.hpp.
Referenced by downsample(), and setup().
const ivec3& vl::Volume::slices | ( | ) | const [inline] |
Definition at line 106 of file MarchingCubes.hpp.
Referenced by vl::MarchingCubes::computeEdges(), vl::MarchingCubes::processCube(), setup(), and setupInternalData().
fvec3 vl::Volume::size | ( | ) | const [inline] |
Definition at line 108 of file MarchingCubes.hpp.
Referenced by setup().
float Volume::computeMinimum | ( | ) | const |
Definition at line 661 of file MarchingCubes.cpp.
References mSlices, mValues, vl::Vector3< T_Scalar >::x(), vl::Vector3< T_Scalar >::y(), and vl::Vector3< T_Scalar >::z().
float Volume::computeMaximum | ( | ) | const |
Definition at line 673 of file MarchingCubes.cpp.
References mSlices, mValues, vl::Vector3< T_Scalar >::x(), vl::Vector3< T_Scalar >::y(), and vl::Vector3< T_Scalar >::z().
float Volume::computeAverage | ( | ) | const |
Definition at line 685 of file MarchingCubes.cpp.
References average(), mSlices, mValues, vl::Vector3< T_Scalar >::x(), vl::Vector3< T_Scalar >::y(), and vl::Vector3< T_Scalar >::z().
float vl::Volume::minimum | ( | ) | const [inline] |
Definition at line 116 of file MarchingCubes.hpp.
float vl::Volume::maximum | ( | ) | const [inline] |
Definition at line 118 of file MarchingCubes.hpp.
float vl::Volume::average | ( | ) | const [inline] |
Definition at line 120 of file MarchingCubes.hpp.
Referenced by computeAverage().
const Volume::Cube& vl::Volume::cube | ( | int | x, |
int | y, | ||
int | z | ||
) | const [inline] |
Definition at line 122 of file MarchingCubes.hpp.
References VL_CHECK, vl::Vector3< T_Scalar >::x(), and vl::Vector3< T_Scalar >::y().
Referenced by vl::MarchingCubes::computeEdges().
const fvec3& vl::Volume::cellSize | ( | ) | const [inline] |
Returns the x/y/z size of a cell.
Definition at line 131 of file MarchingCubes.hpp.
Referenced by vl::MarchingCubes::computeEdges().
bool vl::Volume::dataIsDirty | ( | ) | const [inline] |
Returns true if the internal data hasn't been updated since the last call to setDataDirty() or setup()
Definition at line 134 of file MarchingCubes.hpp.
Referenced by vl::MarchingCubes::run().
void vl::Volume::setDataDirty | ( | ) | [inline] |
Notifies that the data of a Volume has changed and that the internal acceleration structures should be recomputed.
Definition at line 137 of file MarchingCubes.hpp.
void Volume::setupInternalData | ( | ) |
Definition at line 504 of file MarchingCubes.cpp.
References mCubes, mDataIsDirty, slices(), value(), vl::Vector3< T_Scalar >::x(), vl::Vector3< T_Scalar >::y(), and vl::Vector3< T_Scalar >::z().
Referenced by vl::MarchingCubes::run().
std::vector<float> vl::Volume::mInternalValues [protected] |
Definition at line 142 of file MarchingCubes.hpp.
Referenced by setup().
float* vl::Volume::mValues [protected] |
Definition at line 143 of file MarchingCubes.hpp.
Referenced by computeAverage(), computeMaximum(), computeMinimum(), and setup().
fvec3 vl::Volume::mBottomLeft [protected] |
Definition at line 144 of file MarchingCubes.hpp.
Referenced by sampleNearest(), sampleSmooth(), and setup().
fvec3 vl::Volume::mTopRight [protected] |
Definition at line 145 of file MarchingCubes.hpp.
Referenced by setup().
fvec3 vl::Volume::mSize [protected] |
Definition at line 146 of file MarchingCubes.hpp.
Referenced by sampleNearest(), sampleSmooth(), and setup().
ivec3 vl::Volume::mSlices [protected] |
Definition at line 147 of file MarchingCubes.hpp.
Referenced by computeAverage(), computeMaximum(), computeMinimum(), downsample(), sampleNearest(), sampleSmooth(), and setup().
fvec3 vl::Volume::mCellSize [protected] |
Definition at line 148 of file MarchingCubes.hpp.
Referenced by setup().
float vl::Volume::mMinimum [protected] |
Definition at line 149 of file MarchingCubes.hpp.
Referenced by setup().
float vl::Volume::mMaximum [protected] |
Definition at line 150 of file MarchingCubes.hpp.
Referenced by setup().
float vl::Volume::mAverage [protected] |
Definition at line 151 of file MarchingCubes.hpp.
Referenced by setup().
bool vl::Volume::mDataIsDirty [protected] |
Definition at line 152 of file MarchingCubes.hpp.
Referenced by setup(), and setupInternalData().
std::vector<Cube> vl::Volume::mCubes [protected] |
Definition at line 154 of file MarchingCubes.hpp.
Referenced by setupInternalData().