Core 1.0
Public Member Functions | Protected Attributes | List of all members
DynamicArrayIndex Class Reference

A three dimensional grid structure with an index set for every cell. More...

#include <arrayindex.h>

Inheritance diagram for DynamicArrayIndex:
Array Box

Public Member Functions

 DynamicArrayIndex ()
 Create a voxel subdivision of space.
 
 DynamicArrayIndex (const Box &, int)
 Create a voxel subdivision of space. More...
 
 ~DynamicArrayIndex ()
 Empty.
 
void Insert (int, const Vector &)
 Insert an entry. More...
 
void Insert (int, int, int, int)
 Insert an entry. More...
 
QVector< int > At (int) const
 Access to the i-th entry. More...
 
void CellFromIndex (int, int &, int &, int &) const
 Get the cell of an input entry. More...
 
void Delete (int)
 Removes an entry. More...
 
void Switch (int, int)
 Replace the identifier of an entry. More...
 
void Update (int, const Vector &)
 Update the position of an entry. More...
 
- 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...
 

Protected Attributes

QVector< QVector< int > > table
 Array containing a list of integers.
 
- 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.
 

Additional Inherited Members

- Static Public Member Functions inherited from Array
static Array CubicCells (Box, int)
 Create an array with enforced cubic cells. More...
 
- 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.
 
Vectoroperator[] (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< VectorPoisson (const double &, int, Random &=Random::R239) const
 Compute a Poisson sphere distribution inside a box. More...
 
- 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.
 

Detailed Description

A three dimensional grid structure with an index set for every cell.

Constructor & Destructor Documentation

◆ DynamicArrayIndex()

DynamicArrayIndex::DynamicArrayIndex ( const Box box,
int  n 
)

Create a voxel subdivision of space.

Parameters
boxThe box, should be cubic.
nSubdivison.

Member Function Documentation

◆ At()

QVector< int > DynamicArrayIndex::At ( int  id) const
inline

Access to the i-th entry.

Parameters
idThe index.

◆ CellFromIndex()

void DynamicArrayIndex::CellFromIndex ( int  id,
int &  x,
int &  y,
int &  z 
) const

Get the cell of an input entry.

Parameters
idThe index.
x,y,zReturned integer coordinates.

◆ Delete()

void DynamicArrayIndex::Delete ( int  id)

Removes an entry.

Parameters
idThe index.

◆ Insert() [1/2]

void DynamicArrayIndex::Insert ( int  id,
const Vector v 
)

Insert an entry.

Parameters
idThe index.
vPoint.

◆ Insert() [2/2]

void DynamicArrayIndex::Insert ( int  id,
int  x,
int  y,
int  z 
)

Insert an entry.

Parameters
idThe index.
x,y,zInteger coordinates.

◆ Switch()

void DynamicArrayIndex::Switch ( int  oaid,
int  naid 
)

Replace the identifier of an entry.

Parameters
oaidOld index.
naidNew index.

◆ Update()

void DynamicArrayIndex::Update ( int  id,
const Vector p 
)

Update the position of an entry.

Parameters
idThe index.
pNew position.