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

A base two-dimensional array of integers. More...

#include <scalarfield.h>

Inheritance diagram for ArrayInteger2:
Array2 Box2

Public Member Functions

 ArrayInteger2 ()
 Empty.
 
 ArrayInteger2 (const Array2 &, int=0)
 Create the field structure. More...
 
 ArrayInteger2 (const Box2 &, int, int, int=0)
 Create the field structure. More...
 
 ArrayInteger2 (const Box2 &, int, int, const QVector< int > &)
 Create the field structure. More...
 
 ArrayInteger2 (const Box2 &, const QImage &, bool=true)
 Create a field structure from an image. More...
 
 ArrayInteger2 (const ScalarField2 &, int, int)
 Create a field structure from a scalar field. More...
 
 ~ArrayInteger2 ()
 Empty.
 
void GetRange (int &, int &) const
 Get the range of the field. More...
 
virtual int Value (int, int) const
 Return the field gradient at a given array vertex. More...
 
int at (int, int) const
 Return the field value at a given array vertex. More...
 
int at (const QPoint &) const
 Return the field value at a given array vertex. More...
 
int & operator() (int, int)
 Return the field value at a given array vertex. More...
 
int & operator() (const QPoint &)
 Return the field value at a given array vertex. More...
 
int at (int) const
 Return the data in the field. More...
 
int & operator[] (int)
 Return the data in the field. More...
 
void Fill (int)
 Sets the entire field with a constant value. More...
 
void Translate (const Vector2 &)
 Translate the domain of the scalar field. More...
 
void Scale (const Vector2 &)
 Scale the domain of the scalar field. More...
 
QImage CreateImage (bool=true) const
 Create an image from the field. More...
 
QImage CreateImage (int, int, bool=true) const
 Create an image from the field. More...
 
- Public Member Functions inherited from Array2
 Array2 ()
 Empty array, with empty box.
 
 Array2 (const Box2 &, int, int)
 Create the array structure. More...
 
 Array2 (const Box2 &, int)
 Create the array structure. More...
 
Array2 DownSample (int) const
 Downsample the array. More...
 
Array2 UpSample (int) const
 Upsample the array. More...
 
 ~Array2 ()
 Empty.
 
int VertexSize () const
 Return the size of the vertex array.
 
int GetSizeX () const
 Get the vertex size of the array for x axis.
 
int GetSizeY () const
 Get the vertex size of the array for y axis.
 
int VertexBorderSize () const
 Return the size of the vertex array.
 
int CellSize () const
 Return the size of the cell array.
 
int CellSizeX () const
 Get the cell size of the array for x axis.
 
int CellSizeY () const
 Get the cell size of the array for y axis.
 
QSize GetQtSize () const
 Return the Qt size of the vertex array.
 
Box2 Cell (int) const
 Return the geometry of the cell. More...
 
Box2 Cell (int, int) const
 Return the geometry of the cell. More...
 
void HalfCell (int, int, bool, Triangle2 &, Triangle2 &) const
 Return the geometry of the cell. More...
 
Vector2 CellCenter (int, int) const
 Return the center of the cell. More...
 
void Scale (const Vector2 &)
 Scales the array structure. More...
 
void Scale (const double &)
 Scales the array structure. More...
 
Box2 GetBox () const
 Get the box of the array.
 
Box2 UnitCell () const
 Return the geometry of a generic cell. More...
 
Vector2 CellDiagonal () const
 Return the cell diagonal vector.
 
double CellArea () const
 Return the area of a cell. More...
 
Vector2 ArrayVertex (int, int) const
 Compute the coordinates of a point on the grid. More...
 
Vector2 ArrayVertex (const QPoint &) const
 Compute the coordinates of a point on the grid. More...
 
QVector< Vector2ArrayVertexes (const QVector< QPoint > &) const
 Compute the coordinates of a set of points on the grid. More...
 
Vector2 Size () const
 Return the size of the array.
 
QRect AreaInteger () const
 Return the range of integer values for the domain.
 
QImage ImageGrid (const Box2 &, const double &) const
 Create a texture with a regular grid. More...
 
void Draw (QGraphicsScene &, const QPen &=QPen(), const QBrush &=QBrush()) const
 Draw the cells of the grid. More...
 
void Subdivide ()
 Change the resolution. More...
 
bool IsEmpty () const
 Detect if the array is empty, i.e., any dimension equal to zero.
 
QPoint VertexBorder (int) const
 Compute the k-th point on the boundary of the domain. More...
 
int VertexBorderIndex (int, int) const
 Compute the index of a point on the boundary of the domain. More...
 
void VertexInteger (const Vector2 &, int &, int &) const
 Compute the coordinates of a vertex inside a cell. More...
 
QPoint VertexInteger (const Vector2 &) const
 Compute the coordinates of a vertex inside a cell. More...
 
QPoint VertexInteger (const Vector2 &, double &, double &) const
 Compute the point on the grid given an input point. More...
 
QRect VertexIntegerArea (const Box2 &) const
 Compute the integer coordinates of the vertices embedding a box. More...
 
QRect VertexIntegerArea (const Circle2 &) const
 Compute the integer coordinates of the vertices embedding a circle. More...
 
QRect VertexIntegerArea (const QRect &) const
 Compute the integer coordinates span of the vertices embedding a rectangle. More...
 
void CellInteger (const Vector2 &, int &, int &) const
 Compute the coordinates of a vertex inside a cell. More...
 
void CellInteger (const Vector2 &, int &, int &, double &, double &) const
 Compute the point on the grid given an input point. More...
 
QPoint CellInteger (const Vector2 &) const
 Compute the coordinates of a vertex inside a cell. More...
 
QPoint CellInteger (const Vector2 &, double &, double &) const
 Compute the point on the grid given an input point. More...
 
QRect CellIntegerArea (const Box2 &) const
 Compute the integer coordinates of the cells of the array embedding an input box. More...
 
QRect CellIntegerArea (const Circle2 &) const
 Compute the integer coordinates of the cells of the array embedding an input circle. More...
 
void Translate (const Vector2 &)
 Translate the array. More...
 
Vector2 Center () const
 Return the center of the array.
 
constexpr bool InsideVertexIndex (int, int) const
 Check if the indexes are within range. More...
 
constexpr bool OutsideVertexIndex (int, int) const
 Check if the indexes are outside or on the border. More...
 
constexpr bool InsideVertexIndex (const QPoint &) const
 Check if the indexes are within range. More...
 
constexpr bool InsideVertexIndex (int, int, int) const
 Check if the indexes are within k-range. More...
 
bool Inside (const Vector2 &) const
 Check if a point is in the rectangular domain. More...
 
constexpr bool BorderVertexIndex (int, int) const
 Check if the indexes are on the border. More...
 
constexpr bool BorderVertexIndex (const QPoint &) const
 Check if the indexes are on the border. More...
 
constexpr int VertexIndex (int, int) const
 Compute the index of a given cell. More...
 
constexpr int VertexIndex (const QPoint &) const
 Compute the index of a given cell. More...
 
QPoint Next (const QPoint &, int) const
 Compute the point next to another one. More...
 
QImage CreateEmptyImage () const
 Create an image with the same size as the array. More...
 
QString Statistics () const
 Get statistics.
 
void ClampVertexIndex (int &, int &) const
 Clamp vertex indexes to the size of the array. More...
 

Protected Attributes

QVector< int > field
 Field samples.
 
- Protected Attributes inherited from Array2
int ny = 0
 Sizes.
 
Vector2 celldiagonal = Vector2::Null
 Cell diagonal.
 
Vector2 inversecelldiagonal = Vector2::Null
 Inverse cell diagonal.
 
- Protected Attributes inherited from Box2
Vector2 b
 Lower and upper vertices of the box.
 

Friends

std::ostream & operator<< (std::ostream &, const ArrayInteger2 &)
 Overloaded. More...
 

Additional Inherited Members

- Static Public Member Functions inherited from Array2
static int NeighborCode (int, int)
 Convert a direction to an 8 bit integer code. More...
 
static QPoint codeToDir (int)
 Convert an 8 bit integer code direction into a direction vector. More...
 
- Protected Member Functions inherited from Array2
constexpr void InverseVertexIndex (int, int &, int &) const
 Compute the coordinates of a given cell. More...
 
constexpr QPoint InverseVertexIndex (int) const
 Compute the coordinates of a given cell. More...
 
constexpr int CellIndex (int, int) const
 Compute the index of a given cell. More...
 
constexpr int CellIndex (const QPoint &) const
 Compute the index of a given cell. More...
 
constexpr bool InsideCellIndex (int, int) const
 Check if the indexes are within range. More...
 
constexpr bool InsideCellIndex (const QPoint &) const
 Check if the indexes are within range. More...
 
void InverseCellIndex (int, int &, int &) const
 Compute the coordinates of a given cell. More...
 
- Protected Member Functions inherited from Box2
 Box2 ()
 Empty.
 
 Box2 (const double &)
 Create a square box centered at the origin and of given half side length. More...
 
 Box2 (const double &, const double &)
 Create a box centered at the origin and of given dimensions. More...
 
 Box2 (const Vector2 &)
 Create a box from a single vertex. More...
 
 Box2 (const Vector2 &, const Vector2 &)
 Create a box. More...
 
 Box2 (const Vector2 &, const double &)
 Creates a box. More...
 
 Box2 (const Box &)
 Create a box in the plane given a box. More...
 
 Box2 (const Box2 &, const Box2 &)
 Create a box embedding two boxes. More...
 
 Box2 (const Box2 &, const Matrix2 &)
 Creates an axis aligned bounding box from a box and a transformation matrix. More...
 
 Box2 (const Box2 &, const Frame2 &)
 Creates an axis aligned bounding box from a box and a frame. More...
 
 Box2 (const QVector< Vector2 > &)
 Compute the bounding box of a set of points. More...
 
 Box2 (const QSize &)
 Create a box from a Qt size. More...
 
Vector2operator[] (int)
 Returns either end vertex of the box.
 
Vector2 operator[] (int) const
 Overloaded.
 
Vector2 Size () const
 Compute the size (width and height) of a box.
 
double Width () const
 Compute the width of a box. More...
 
double Height () const
 Compute the height of a box. More...
 
Vector2 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 Area () const
 Compute the surface area of a box.
 
double Perimeter () const
 Compute the perimeter of the box.
 
Vector2 Center () const
 Returns the center of the box.
 
Vector2 Vertex (int) const
 Returns the k-th vertex of the box. More...
 
Vector2 Vertex (int, int, int, int) const
 Compute the coordinates of a grid aligned point. More...
 
Box2 Sub (int) const
 Computes the sub-box in the n-th quadrant. More...
 
double R (const Vector2 &) const
 Compute the squared distance between the box and a point. More...
 
double Signed (const Vector2 &) const
 Computes the signed distance between the box and a point. More...
 
double R (const Box2 &) const
 Compute the squared Euclidean distance between two boxes. More...
 
void Translate (const Vector2 &)
 Translates a box. More...
 
void Scale (const Vector2 &)
 Scales a box. More...
 
void Scale (const double &)
 Scales a box. More...
 
Box2 Translated (const Vector2 &) const
 Translated box. More...
 
Box2 Scaled (const double &) const
 Scales a box and return the scaled box. More...
 
Box2 Scaled (const Vector2 &) const
 Scales a box and return the scaled box. More...
 
Box2 Scaled (const QSize &) const
 Scales a box according to a Qt size. More...
 
Box2 ScaledTo (const double &) const
 Scale the box so that the largest side should equal the argument value. More...
 
Box2 Rotated (const double &) const
 Compute the box embedding the rotated box. More...
 
Box2 Rotated (const Matrix2 &) const
 Compute the box embedding the rotated box. More...
 
Box2 Centered () const
 Compute the box translated to origin. More...
 
void SetCubic ()
 Creates the tightest embedding cube from an arbitrarilly shaped box. More...
 
void SetInscribedCubic ()
 Creates the biggest cube inscribed in the box. More...
 
Box2 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...
 
void Extend (const Vector2 &)
 Extend the limits of the box given a point. More...
 
Box2 Extended (const double &) const
 Extend the limits of the box by a given distance. More...
 
void SetParallelepipedic (int, int &, int &)
 Inflates a box so that its dimensions should be a fraction of its maximum side length. More...
 
void SetParallelepipedic (const double &, int &, int &)
 Creates a parallelepipedic box whose dimensions are integer multiples of a given input reference size. More...
 
bool Inside (const Vector2 &) const
 Test if a point is inside the box. More...
 
bool Inside (const Vector2 &, const double &) const
 Test if a point lies withing a given range of the box. More...
 
bool Intersect (const Box2 &) const
 Check if the box intersects another box. More...
 
double OverlapArea (const Box2 &) const
 Computes the overlapping area of two boxes. More...
 
Box2 Intersection (const Box2 &) const
 Computes the intersection between two boxes. More...
 
Box ToBox (const double &, const double &) const
 Convert a planar Box2 to a Box. More...
 
int Quadrant (const Vector2 &) const
 Computes quadrant index of a vertex with respect to the box center. More...
 
bool Intersect (const Ray2 &, double &, double &) const
 Computes the intersection between a box and a ray. More...
 
bool Intersect (const Ray2 &) const
 Computes the intersection between a box and a ray. More...
 
bool Intersect (const Line2 &, double &, double &) const
 Computes the intersection between a box and a line. More...
 
bool Intersect (const Segment2 &, double &, double &) const
 Compute the intersection between a box and a segment. More...
 
bool Intersect (const Line2 &) const
 Check the intersection between a box and a line. More...
 
bool Intersect (const Segment2 &) const
 Check the intersection between a box and a segment. More...
 
void Draw (QGraphicsScene &, const QPen &=QPen(), const QBrush &=QBrush()) const
 Draw a rectangle. More...
 
Vector2 RandomInside (Random &=Random::R239) const
 Generate a random vector inside the box. More...
 
Vector2 RandomOn (Random &=Random::R239) const
 Generate a random vector on the perimeter of the box. More...
 
QRectF GetQtRect () const
 Create the Qt rectangle.
 
QRect TileRange (const Box2 &) const
 Compute the range of index for tiling the argument box so that it covers the box. More...
 
Box2 Tile (int, int) const
 Return the tiled the box using integer coordinates. More...
 
Box2 Tile (const QRect &) const
 Return the tiled the box using integer coordinates. More...
 
QVector< Vector2Poisson (const double &, int, Random &=Random::R239) const
 Compute a Poisson disc distribution inside a box. More...
 
- Static Protected Member Functions inherited from Box2
static Box2 MinMax (const Vector2 &, const Vector2 &)
 Create a box from any two points. More...
 
- Static Protected Attributes inherited from Array2
static const QPoint next [8] = { QPoint(1, 0), QPoint(1, 1), QPoint(0, 1), QPoint(-1, 1), QPoint(-1, 0), QPoint(-1, -1), QPoint(0, -1), QPoint(1, -1) }
 Array of points in the 1-ring neighborhood.
 
static const double length [8] = { 1.0, sqrt(2.0), 1.0, sqrt(2.0), 1.0, sqrt(2.0), 1.0, sqrt(2.0) }
 Length to the i-th neighbor.
 
static const double inverselength [8] = { 1.0, 1.0 / sqrt(2.0), 1.0, 1.0 / sqrt(2.0), 1.0, 1.0 / sqrt(2.0), 1.0, 1.0 / sqrt(2.0) }
 Inverse length.
 
- Static Protected Attributes inherited from Box2
static const double epsilon = 1.0e-5
 Epsilon value used to check intersections and some round off errors.
 
static const Box2 Infinity
 Huge bounding box, which should enclose any other.
 
static const Box2 Null
 Null box, equivalent to. More...
 
static const Box2 Unit
 Unit box, defined as. More...
 

Detailed Description

A base two-dimensional array of integers.

Constructor & Destructor Documentation

◆ ArrayInteger2() [1/5]

ArrayInteger2::ArrayInteger2 ( const Array2 a,
int  v = 0 
)
explicit

Create the field structure.

Parameters
aThe array.
vDefault value of field.

◆ ArrayInteger2() [2/5]

ArrayInteger2::ArrayInteger2 ( const Box2 box,
int  x,
int  y,
int  v = 0 
)
explicit

Create the field structure.

Parameters
boxThe box.
x,ySize of the array.
vDefault value of field.

◆ ArrayInteger2() [3/5]

ArrayInteger2::ArrayInteger2 ( const Box2 box,
int  x,
int  y,
const QVector< int > &  v 
)
explicit

Create the field structure.

Parameters
boxThe box.
x,ySize of the array.
vArray of scalar values.

◆ ArrayInteger2() [4/5]

ArrayInteger2::ArrayInteger2 ( const Box2 box,
const QImage &  image,
bool  grayscale = true 
)
explicit

Create a field structure from an image.

Parameters
boxThe box.
imageThe image.
grayscaleRead image as grayscale if set to true, otherwize use color for a better accuracy.

◆ ArrayInteger2() [5/5]

ArrayInteger2::ArrayInteger2 ( const ScalarField2 s,
int  a,
int  b 
)
explicit

Create a field structure from a scalar field.

Parameters
sThe scalar field.
a,bInteger range, the scalar field will be normalized and scale to interval [a,b].

Member Function Documentation

◆ at() [1/3]

int ArrayInteger2::at ( const QPoint &  q) const
inline

Return the field value at a given array vertex.

Parameters
qPoint.

◆ at() [2/3]

int ArrayInteger2::at ( int  c) const
inline

Return the data in the field.

Parameters
cIndex.

◆ at() [3/3]

int ArrayInteger2::at ( int  i,
int  j 
) const
inline

Return the field value at a given array vertex.

Parameters
i,jInteger coordinates of the vertex.

◆ CreateImage() [1/2]

QImage ArrayInteger2::CreateImage ( bool  grayscale = true) const

Create an image from the field.

Parameters
grayscaleExport as grayscale if set to true, and to color otherwise (provides a better precision).

◆ CreateImage() [2/2]

QImage ArrayInteger2::CreateImage ( int  a,
int  b,
bool  grayscale = true 
) const

Create an image from the field.

Parameters
a,bRange of elevation that will be mapped to image scale.
grayscaleExport as grayscale if set to true, color otherwise.

◆ Fill()

void ArrayInteger2::Fill ( int  s)

Sets the entire field with a constant value.

Parameters
sScalar.

◆ GetRange()

void ArrayInteger2::GetRange ( int &  a,
int &  b 
) const

Get the range of the field.

Parameters
a,bReturned minimum and maximum.

◆ operator()() [1/2]

int & ArrayInteger2::operator() ( const QPoint &  q)
inline

Return the field value at a given array vertex.

Parameters
qPoint.

◆ operator()() [2/2]

int & ArrayInteger2::operator() ( int  i,
int  j 
)
inline

Return the field value at a given array vertex.

Parameters
i,jInteger coordinates of the vertex.

◆ operator[]()

int & ArrayInteger2::operator[] ( int  c)
inline

Return the data in the field.

Parameters
cIndex.

◆ Scale()

void ArrayInteger2::Scale ( const Vector2 s)

Scale the domain of the scalar field.

Parameters
sScaling factor.

◆ Translate()

void ArrayInteger2::Translate ( const Vector2 t)

Translate the domain of the scalar field.

Parameters
tTranslation vector.

◆ Value()

int ArrayInteger2::Value ( int  i,
int  j 
) const
virtual

Return the field gradient at a given array vertex.

Parameters
i,jInteger coordinates of the vertex.
See also
at(int,int)

Friends And Related Function Documentation

◆ operator<<

std::ostream & operator<< ( std::ostream &  s,
const ArrayInteger2 a 
)
friend

Overloaded.

Parameters
sStream.
aThe array.