Core 1.0
|
A base three-dimensional voxel. More...
#include <array.h>
Public Member Functions | |
Voxel (const Box &, int) | |
Create the voxel structure. More... | |
Voxel (const Box &, int, int, int) | |
Create the voxel structure. More... | |
Voxel (const Box &, int, int, int, const QVector< int > &) | |
Create and initialize the voxel structure. More... | |
int | at (int, int, int) const |
Return the data in the cell of the voxel. More... | |
int | at (int) const |
Return the data in the cell of the voxel. More... | |
int & | operator() (int, int, int) |
Return the data in the cell of the voxel. More... | |
int & | operator() (int) |
Return the data in the cell of the voxel. More... | |
int & | operator[] (int) |
Return the data in the cell of the voxel. More... | |
bool | Inside (const Vector &) const |
Check if a point is inside a non-empty cell. More... | |
bool | Inside (int, int, int) const |
Test if a cell is inside or outside of the voxel. More... | |
double | Signed (const Vector &) const |
Compute the approximate signed distance to the voxel. More... | |
int | OctantCells (const Vector &, int[24], int &, Vector &) const |
Compute the integer coordinates of the (at most) eight octant cells closest to p. More... | |
QVector< Vector > | GetCubes (Box &, bool=false) const |
Create a set of cubes representing a voxel. More... | |
int | Accessibility (int, int, int) const |
Compute the integer accessibility of a voxel. More... | |
unsigned int | Memory () const |
Compute the amount of memory used by the voxel structure. | |
Public Member Functions inherited from Array | |
Array () | |
Empty. More... | |
Array (const Box &, int, int, int) | |
Create the array structure. More... | |
~Array () | |
Empty. | |
Array | Extract (int, int, int, int, int, int) const |
Extract an sub-array. More... | |
int | VertexSize () const |
Return the size of the array. | |
int | VertexSize (int) const |
Get the size of the array for every axis. More... | |
Box | Cell (int) const |
Return the geometry of the cell. More... | |
Box | Cell (int, int, int) const |
Return the geometry of the cell. More... | |
Vector | CellCenter (int, int, int) const |
Return the center of the cell. More... | |
void | Scale (const Vector &) |
Scales the array structure. More... | |
void | Scale (const double &) |
Scales the array structure. More... | |
Box | GetBox () const |
Get the box of the array. | |
Vector | CellDiagonal () const |
Return the cell diagonal. | |
Vector | Vertex (int, int, int) const |
Compute the coordinates of a point on the grid. More... | |
int | GetSizeX () const |
Get the size of the array for x axis. | |
int | GetSizeY () const |
Get the size of the array for y axis. | |
int | GetSizeZ () const |
Get the size of the array for z axis. | |
int | CellSize () const |
Return the size of the voxel. | |
int | CellSizeX () const |
Get the size of the voxel for x axis. | |
int | CellSizeY () const |
Get the size of the voxel for y axis. | |
int | CellSizeZ () const |
Get the size of the voxel for z axis. | |
bool | IsEmpty () const |
Detect if the array is empty. | |
Box | UnitCell () const |
Return the geometry of a generic cell. More... | |
void | Resize (const Box &, int, int, int) |
Resize the voxel with the given parameters. More... | |
void | VertexInteger (const Vector &, int &, int &, int &) const |
Compute the coordinates of a vertex inside a cell. More... | |
void | VertexIntegerVolume (const Box &, int &, int &, int &, int &, int &, int &) const |
Compute the integer coordinates of the vertices of a box embedding an input box. More... | |
void | CellInteger (const Vector &, int &, int &, int &) const |
Compute the coordinates of a vertex inside a cell. More... | |
void | CellInteger (const Vector &, int &, int &, int &, double &, double &, double &) const |
Compute the point on the grid given an input point. More... | |
void | CellIntegerVolume (const Box &, int &, int &, int &, int &, int &, int &) const |
Compute the integer coordinates of the cells of the array embedding an input box. More... | |
int | Memory () const |
Compute the size of the array. | |
constexpr int | VertexIndex (int, int, int) const |
Compute the index of a given vertex. More... | |
constexpr bool | InsideVertexIndex (int, int, int) const |
Check if the indexes are within range. More... | |
constexpr bool | InsideCellIndex (int, int, int) const |
Check if the indexes are within range. More... | |
void | InverseVertexIndex (int, int &, int &, int &) const |
Compute the coordinates of a given vertex. More... | |
constexpr int | CellIndex (int, int, int) const |
Compute the index of a given cell. More... | |
void | InverseCellIndex (int, int &, int &, int &) const |
Compute the coordinates of a given cell. More... | |
Static Public Member Functions | |
static double | OctantSigned (const Vector &, const Vector &, int) |
Computes the distance between a point a eight octant volumes. More... | |
Static Public Member Functions inherited from Array | |
static Array | CubicCells (Box, int) |
Create an array with enforced cubic cells. More... | |
Protected Attributes | |
QVector< int > | voxel |
Array of integer storing the data. | |
Protected Attributes inherited from Array | |
int | nz |
Sizes. | |
Vector | celldiagonal |
Cell diagonal. | |
Vector | inversecelldiagonal |
Inverse cell diagonal. | |
Protected Attributes inherited from Box | |
Vector | a |
Lower vertex. | |
Vector | b |
Upper vertex. | |
Static Protected Attributes | |
static const int | octantcellindex [8][24] |
Static Protected Attributes inherited from Box | |
static constexpr const double | epsilon = 1.0e-5 |
Epsilon value used to check intersections and some round off errors and for ray intersection tests. | |
static const Box | Infinity |
Largest box. More... | |
static const Box | Null |
Null box, equivalent to: More... | |
static const Box | Unit |
Unit box. | |
static const int | edge [24] |
Edge vertex indexes. | |
static const Vector | normal [6] |
Face normals. | |
Additional Inherited Members | |
Protected Member Functions inherited from Box | |
Box () | |
Empty. | |
Box (const double &) | |
Create a cube centered at the origin and of given half side length. More... | |
Box (const Vector &) | |
Create an empty box given one vertex. More... | |
Box (const Vector &, const Vector &) | |
Create a box given two opposite corners. More... | |
Box (const Vector &, const double &) | |
Create a box given a center point and the half side length. More... | |
Box (const Vector &, const double &, const double &, const double &) | |
Create a box given a center point and its width, length, and height. More... | |
Box (const double &, const double &, const double &) | |
Create a box given its sizes. More... | |
Box (const Vector *, int) | |
Creates the bounding box of a set of points. More... | |
Box (const QVector< Vector > &) | |
Creates the bounding box of a set of points. More... | |
Box (const Box &, const Box &) | |
Create a box embedding two boxes. More... | |
Box (const Box &, const Frame &) | |
Creates an axis aligned bounding box from a box and a frame. More... | |
Box (const Box &, const FrameScaled &) | |
Creates an axis aligned bounding box from a box and a frame. More... | |
Box (const Box &, const Matrix &) | |
Creates an axis aligned bounding box from a box and a transformation matrix. More... | |
~Box () | |
Empty. | |
Vector & | operator[] (int) |
Returns either end vertex of the box. | |
Vector | operator[] (int) const |
Overloaded. | |
Vector | Center () const |
Returns the center of the box. | |
Vector | Vertex (int) const |
Returns the k-th vertex of the box. More... | |
Vector | Vertex (int, int, int, int, int, int) const |
Compute the coordinates of a grid aligned point. More... | |
Segment | Edge (int) const |
Compute the k-th edge segment of the box. More... | |
Plane | Face (int) const |
Compute the k-th plane of the box. More... | |
Vector | Size () const |
Compute the size (width, length and height) of a box. More... | |
Vector | Diagonal () const |
Returns the diagonal of the box. | |
double | Radius () const |
Returns the radius of the box, i.e. the length of the half diagonal of the box. | |
double | R (const Vector &) const |
Computes the squared Euclidean distance between the box and a point. More... | |
double | Signed (const Vector &) const |
Computes the signed distance between the box and a point. More... | |
Vector | Normal (const Vector &) const |
Computes the normal vector between a point and a box. More... | |
double | R (const Box &) const |
Compute the squared Euclidean distance between two boxes. More... | |
double | RInfinity (const Box &) const |
Compute the maximum distance between two boxes. More... | |
int | Intersect (const Ray &) const |
Check the intersection between a box and a ray. More... | |
int | Intersect (const Ray &, double &, double &) const |
Computes the intersection between a box and a ray. More... | |
int | Intersect (const Ray &, double &) const |
Compute the first positive intersection between the box and a ray. More... | |
int | Intersect (const Ray &, double &, double &, Vector &, Vector &) const |
Compute the intersection between an axis aligned box and a ray. More... | |
int | Intersect (const Ray &, double &, Vector &) const |
Compute the first positive intersection between the box and a ray. More... | |
int | Intersect (const Vector &, const Vector &) const |
Check if a segment intersects an axis aligned box. More... | |
bool | Intersect (const Box &) const |
Check if the box intersects another box. More... | |
bool | Inside (const Box &) const |
Check if an argument box is inside the box. More... | |
bool | Inside (const Vector &) const |
Check if a point is inside the box. More... | |
Box | Intersection (const Box &) const |
Computes the intersection between two boxes. More... | |
int | Difference (const Box &, Box *) const |
Computes the difference between two boxes. More... | |
bool | Empty () const |
Check if a box is empty. More... | |
double | Volume () const |
Compute the volume of a box. | |
double | Area () const |
Compute the surface area of a box. | |
void | SetCubic () |
Creates the tightest embedding cube from an arbitrarilly shaped box. More... | |
void | SetInscribedCubic () |
Creates the biggest cube iscribed in the box. More... | |
Box | Cube () const |
Return the tightest embedding cube from an arbitrarilly shaped box. More... | |
void | Extend (const double &) |
Extend the limits of the box by a given distance. More... | |
Box | Extended (const double &) const |
Extend the limits of the box by a given distance. More... | |
void | Extend (const Vector &) |
Extend the limits of the box given a point. More... | |
void | SetParallelepipedic (const double &, int &, int &, int &) |
Creates a parallelepipedic box whose dimensions are integer multiples of a given input reference size. More... | |
void | SetParallelepipedic (int, int &, int &, int &) |
Inflates a box so that its dimensions should be a fraction of its maximum side length. More... | |
Box | Sub (int) const |
Computes the sub-box in the n-th octant. More... | |
int | Octant (const Vector &) const |
Compute the octant index of a vertex with respect to the box center. More... | |
void | Translate (const Vector &) |
Translates a box. More... | |
Box | Translated (const Vector &) const |
Translated box. More... | |
void | Scale (const double &) |
Scales a box. More... | |
void | Scale (const Vector &) |
Scales a box. More... | |
Box | Scaled (const Vector &) const |
Scales a box and return the scaled box. More... | |
Box | Offsetted (const Vector &) const |
Offets a box. More... | |
Box | Centered () const |
Compute the box translated to origin. More... | |
Box | Cut (const Vector &, const Vector &) const |
Compute the minimal box embedding the box cut by half space. More... | |
int | IntegerAxis () const |
Compute the axis which has the greater length. | |
Vector | RandomInside (Random &=Random::R239) const |
Generate a random vector inside the box. More... | |
Vector | RandomSurface (Random &=Random::R239) const |
Generate a random vector on the surface of the box. More... | |
QVector< Vector > | Poisson (const double &, int, Random &=Random::R239) const |
Compute a Poisson sphere distribution inside a box. More... | |
A base three-dimensional voxel.
|
explicit |
Create the voxel structure.
box | The cubic box. |
n | Discretization. |
|
explicit |
Create the voxel structure.
box | The box. |
x,y,z | Discretization, i.e. number of cells. |
|
explicit |
Create and initialize the voxel structure.
box | The box. |
x,y,z | Size of the array, i.e. number of cells. |
v | Voxel data. |
int Voxel::Accessibility | ( | int | x, |
int | y, | ||
int | z | ||
) | const |
Compute the integer accessibility of a voxel.
Uses a 1-neighborhood, thus checking 333-1=26 cells.
x,y,z | Integer coordinates of the cell. |
|
inline |
Return the data in the cell of the voxel.
c | Cell index. |
|
inline |
Return the data in the cell of the voxel.
i,j,k | Integer coordinates of the cell. |
Create a set of cubes representing a voxel.
u | Unit reference box of the voxel. |
bool | surface Only produce cubes that participate to the visible surface. |
bool Voxel::Inside | ( | const Vector & | p | ) | const |
Check if a point is inside a non-empty cell.
Note that if the point is not inside the box, then it is defined as outside.
p | Point. |
bool Voxel::Inside | ( | int | x, |
int | y, | ||
int | z | ||
) | const |
Test if a cell is inside or outside of the voxel.
x,y,z | Integer coordinates of the cell. |
Compute the integer coordinates of the (at most) eight octant cells closest to p.
p | Point. |
cells | Returned array of integer coordinates. |
configuration | Returned configuration. |
q | Returned center of the octant that can be used for computing the distance. |
Computes the distance between a point a eight octant volumes.
The octant configuration is provided as an integer whose bits are set to 0 if octants are empty, 1 otherwise.
p | Point. |
q | Origin of the eight octant volumes. |
c | Octant configuration. |
|
inline |
Return the data in the cell of the voxel.
c | Cell index. |
|
inline |
Return the data in the cell of the voxel.
i,j,k | Integer coordinates of the cell. |
|
inline |
Return the data in the cell of the voxel.
c | Integer cell index. |
double Voxel::Signed | ( | const Vector & | p | ) | const |
Compute the approximate signed distance to the voxel.
p | Point. |
|
staticprotected |
< Set of eight cells, sorted.