ivutils
Loading...
Searching...
No Matches
Box_N< N > Class Template Reference

Regular n-dimensional parallelepiped with edges parallel to coordinate axis. More...

#include <region_2.h>

Inheritance diagram for Box_N< N >:
Collaboration diagram for Box_N< N >:

Classes

class  point_it
 iterator at 6 vertices of the box More...
 

Public Member Functions

virtual int GetFlags () const override
 Returns a set of bit flags specifying which functions are implemented for this region (see RegFlags).
 
virtual vec_type Volume () const override
 Returns volume of the region. '-1' means that function is not implemented.
 
void shift (const vector_t &shiftv)
 Shift by a specified vector.
 
void init (const vector_t &sp1, const vector_t &sp2)
 sp1, sp2 are opposite vertices of the box
 
point_it points_begin () const
 returns begin iterator point_it at vertex of the box with minimal x, y and z coordinates
 
point_it points_end () const
 returns end iterator point_it at vertex of the box
 
Box_Noperator&= (const Box_N &other)
 this box becomes an intersection of itself with other box
 
bool valid () const
 
bool TestBox (const Box_N &other) const
 
bool TestPoint (const vector_t &p) const override
 Returns true if the point is in the region.
 
virtual vector_t GetBoundingBox (vector_t *v1, vector_t *v2) const override
 Returns opposite corners of the box which contains the region inside itself.
 
virtual Region< N > * Clone (const vector_t &shift=vector_t()) const override
 
virtual vec_type SurfProject (const vector_t &p, vector_t *surfp=nullptr, vector_t *surfn=nullptr) const override
 finds the point on the region surface closest to the given one p returns distance to this point (positive is P outside and negative is P inside region), surfp – projection, surfn – norm vector at surfp

 
- Public Member Functions inherited from Region< N >
virtual int TestLine (const vector_t &p, const vector_t &dir, vec_type *frac, vector_t *surfp=nullptr, vector_t *surfn=nullptr, vec_type epsilon=0) const
 Records the fractions frac1 and frac2 of the line (p,dir) corresponding to the intersections surfpi=p+fraci*dir, surfni - coords of intersection and corresponding outer normal.
 
template<class contour_t >
vec_type TestContour (const contour_t &cnt, VecContour< N > *subcont=nullptr, vector_t *subcenter=nullptr) const
 Returns the area fraction of the contour part that is inside the region, subcontour which is inside the region (if pointer is not nullptr) and the center of the subcontour (if pointer is not nullptr)
 
virtual vec_type TestPtrContour (const PtrContour< N > &cnt, VecContour< N > *subcont=nullptr, vector_t *subcenter=nullptr) const
 virtual version of TestContour for particular PtrContour
 
virtual vector_t GetCenter () const
 Returns the center of the region.
 
virtual RegDumper< N > * CreateDumper () const
 return pointer on object RegDumper, which has function Dump drawing the region
 
virtual vec_type GetInsideEdgePart (const vector_t &p1, const vector_t &p2) const
 Returns a fraction of the edge [0-1] that belongs to the region.
 
virtual vec_type TestEdge (const vector_t &p1, const vector_t &p2, vector_t *surfp=nullptr, vector_t *surfn=nullptr) const
 Returns a fraction of the edge from the first point till the intersection with the surface of the region.
 
virtual vec_type TestRay (const vector_t &p1, const vector_t &dir, vector_t *surfp=nullptr, vector_t *surfn=nullptr, vec_type epsilon=0) const
 Returns the fraction of the ray corresponding to the nearest intersection in positive direction frac<0 means no intersection in positive direction intersections with frac<=epsilon are ignored.
 
virtual size_t GetElementarySubRegions (std::vector< int > *flags=nullptr, std::vector< Region * > *regs=nullptr) const
 For composite regions returns the number of elementary subregions, otherwise returns 0.
 

Additional Inherited Members

- Public Types inherited from Region< N >
typedef unknown_cat category
 Category of the region to determine the correct template behaviour for various algorithms (see Body categories categories).
 

Detailed Description

template<int N>
class Box_N< N >

Regular n-dimensional parallelepiped with edges parallel to coordinate axis.

Member Function Documentation

◆ Clone()

template<int N>
virtual Region< N > * Box_N< N >::Clone ( const vector_t shift = vector_t()) const
inlineoverridevirtual
Returns
a copy of itself optionally shifted in space with the shift vector

Reimplemented from Region< N >.

Reimplemented in Box.

◆ GetFlags()

template<int N>
virtual int Box_N< N >::GetFlags ( ) const
inlineoverridevirtual

Returns a set of bit flags specifying which functions are implemented for this region (see RegFlags).

Returns
HAS_TESTPOINT|HAS_CLONE|HAS_VOLUME

Reimplemented from Region< N >.

Reimplemented in Box.

◆ TestBox()

template<int N>
bool Box_N< N >::TestBox ( const Box_N< N > &  other) const
inline
Returns
true of the other box is inside this box

◆ valid()

template<int N>
bool Box_N< N >::valid ( ) const
inline
Returns
true if the box defines non-void region

The documentation for this class was generated from the following files: