21 Extent3() { tx1_ = tx2_ = ty1_ = ty2_ = tz1_ = tz2_ = initVal<T>(); }
27 :tx1_(
x1), tx2_(
x2), ty1_(
y1), ty2_(
y2), tz1_(
z1), tz2_(
z2) { }
30 :tx1_(v111.x()), tx2_(v222.x()), ty1_(v111.y()), ty2_(v222.y()), tz1_(v111.z()), tz2_(v222.z()) { }
32 Extent3(
const Extent3<T> &r) : tx1_(r.tx1_), tx2_(r.tx2_), ty1_(r.ty1_), ty2_(r.ty2_), tz1_(r.tz1_), tz2_(r.tz2_) { }
33 constexpr const Extent3 &operator=(
const Extent3 &e) { tx1_=e.tx1_; tx2_=e.tx2_; ty1_=e.ty1_; ty2_=e.ty2_; tz1_=e.tz1_; tz2_=e.tz2_;
return *
this; }
42 const T &
x1()
const {
return tx1_; }
44 const T &
x2()
const {
return tx2_; }
46 const T &
y1()
const {
return ty1_; }
48 const T &
y2()
const {
return ty2_; }
50 const T &
z1()
const {
return tz1_; }
52 const T &
z2()
const {
return tz2_; }
54 const T &
dof1(uint32 u)
const {
63 const T &
dof2(uint32 u)
const {
72 T
width()
const {
return (tx2_-tx1_); }
74 T
height()
const {
return (ty2_-ty1_); }
76 T
depth()
const {
return (tz2_-tz1_); }
87 if (y) {
if (z)
return c222();
else return c221(); }
88 else {
if (z)
return c212();
else return c211(); }
90 if (y) {
if (z)
return c122();
else return c121(); }
91 else {
if (z)
return c112();
else return c111(); }
121 bool isEmpty()
const {
return ( (tx1_>=tx2_) || (ty1_>=ty2_) || (tz1_>=tz2_) ); }
126 return( (tx1_==c.tx1_)&&(tx2_==c.tx2_)&&(ty1_==c.ty1_)&&(ty2_==c.ty2_)&&(tz1_==c.tz1_)&&(tz2_==c.tz2_) );
136 if ( (v.
x()>=tx1_) && (v.
x()<=tx2_) && (v.
y()>=ty1_) && (v.
y()<=ty2_) && (v.
z()>=tz1_) && (v.
z()<=tz2_) )
return true;
141 if ( (c.
x1()>=tx1_) && (c.
x2()<=tx2_) && (c.
y1()>=ty1_) && (c.
y2()<=ty2_) && (c.
z1()>=tz1_) && (c.
z2()<=tz2_) )
return true;
146 if ( (v.
x()>=tx1_-tol) && (v.
x()<=tx2_+tol) && (v.
y()>=ty1_-tol) && (v.
y()<=ty2_+tol) && (v.
z()>=tz1_-tol) && (v.
z()<=tz2_+tol) )
return true;
151 if ( (c.
x1()>=tx1_-tol) && (c.
x2()<=tx2_+tol) && (c.
y1()>=ty1_-tol) && (c.
y2()<=ty2_+tol) && (c.
z1()>=tz1_-tol) && (c.
z2()<=tz2_+tol) )
return true;
156 if ((c.tx2_<tx1_) || (c.tx1_>tx2_) ||
157 (c.ty2_<ty1_) || (c.ty1_>ty2_) ||
158 (c.tz2_<tz1_) || (c.tz1_>tz2_))
return false;
163 if ((c.tx2_<tx1_-tol) || (c.tx1_>tx2_+tol) ||
164 (c.ty2_<ty1_-tol) || (c.ty1_>ty2_+tol) ||
165 (c.tz2_<tz1_-tol) || (c.tz1_>tz2_+tol))
return false;
196 void width(
const T &t) { tx2_ = tx1_ + t; }
198 void height(
const T &t) { ty2_ = ty1_ + t; }
200 void depth(
const T &t) { tz2_ = tz1_ + t; }
240 Extent3<T> out(std::max<T>(tx1_,r.tx1_),std::min<T>(tx2_,r.tx2_),
241 std::max<T>(ty1_,r.ty1_),std::min<T>(ty2_,r.ty2_),
242 std::max<T>(tz1_,r.tz1_),std::min<T>(tz2_,r.tz2_));
247 tx1_ = std::min<T>(tx1_,r.tx1_);
248 ty1_ = std::min<T>(ty1_,r.ty1_);
249 tz1_ = std::min<T>(tz1_,r.tz1_);
250 tx2_ = std::max<T>(tx2_,r.tx2_);
251 ty2_ = std::max<T>(ty2_,r.ty2_);
252 tz2_ = std::max<T>(tz2_,r.tz2_);
257 tx1_ = std::min<T>(tx1_,v.
x());
258 ty1_ = std::min<T>(ty1_,v.
y());
259 tz1_ = std::min<T>(tz1_,v.
z());
260 tx2_ = std::max<T>(tx2_,v.
x());
261 ty2_ = std::max<T>(ty2_,v.
y());
262 tz2_ = std::max<T>(tz2_,v.
z());
288 const Extent3<T> &
expand(
const T &tol) { tx1_ -= tol; tx2_ += tol; ty1_ -= tol; ty2_ += tol; tz1_ -= tol; tz2_ += tol;
return *
this; }
321 T pBound(
const T &min,
const T &v,
const T &max)
const {
return std::min(std::max(v,min),max); }
2D cartesian region in space.
Definition extent2.h:12
const T & y1() const
Returns the lower y-bound.
Definition extent2.h:37
const T & y2() const
Returns the upper y-bound.
Definition extent2.h:39
const T & x2() const
Returns the upper x-bound.
Definition extent2.h:35
const T & x1() const
Returns the lower x-bound.
Definition extent2.h:33
A Class representing a cartesian extent in 3D.
Definition extent3.h:16
const T & dof1(uint32 u) const
Returns the lower bound of degree-of-freedom dof.
Definition extent3.h:54
Extent3< T > center(const Vector3< T > &v) const
Returns a Extent2 centered about point v.
Definition extent3.h:314
T & rdof2(uint32 u)
Reference access to lower bound of degree-of-freedom dof.
Definition extent3.h:186
T volume() const
Returns the volume of the extent ( width() * height() * depth() ).
Definition extent3.h:80
Vector3< T > centroid() const
Returns the geometric center of the extent as a Vector3.
Definition extent3.h:78
void c212(const Vector3< T > &v)
Sets one of the eight characteristic corners of the extent, keeping the other three extents constant.
Definition extent3.h:214
Vector3< T > c211() const
Returns one of the eith corners that characterize the extent.
Definition extent3.h:101
const T & z1() const
Returns the lower bound of the extent in the y-direction.
Definition extent3.h:50
Extent3< T > operator+(const Vector3< T > &v) const
Returns the extent created ty translating this one v units.
Definition extent3.h:235
Extent3< T > expandedToInclude(const Extent3< T > &r) const
Returns an extent large enough to contain this one and r.
Definition extent3.h:270
bool intersects(const Extent3< T > &c) const
Returns true if the Extent3 C intersects (inclusive) this extent in any way.
Definition extent3.h:155
bool operator==(const Extent3< T > &c) const
Comparison operator.
Definition extent3.h:125
Vector3< T > c222() const
Returns one of the eith corners that characterize the extent.
Definition extent3.h:111
T diagonal() const
Returns the diagonal length of the extent, or the distance from the lower bound corner to the upper b...
Definition extent3.h:82
void height(const T &t)
Sets the height of the extent by moving the maximum y extent, keeping the minimum constant.
Definition extent3.h:198
Vector3< T > c121() const
Returns one of the eith corners that characterize the extent.
Definition extent3.h:99
void c211(const Vector3< T > &v)
Sets one of the eight characteristic corners of the extent, keeping the other three extents constant.
Definition extent3.h:206
Extent3(const Extent3< T > &r)
Copy constructor.
Definition extent3.h:32
void c111(const Vector3< T > &v)
Sets one of the eight characteristic corners of the extent, keeping the other three extents constant.
Definition extent3.h:202
Extent3(const Vector3< T > &v111, const Vector3< T > &v222)
Explicit constructor, by providing the lower-bound and upper-bound as two Vector3.
Definition extent3.h:29
T height() const
Returns the size of the extent in the y-direction.
Definition extent3.h:74
Extent3()
Default constructor, no data initialization.
Definition extent3.h:23
T depth() const
Returns the size of the extent in the z-direction.
Definition extent3.h:76
const Extent3< T > & expandToInclude(const Vector3< T > &v)
Enlarges the extent to contain v.
Definition extent3.h:256
bool tolIsIn(const Extent3< T > &c, const T &tol) const
Returns true if the Extent3 c falls completely inside (inclusive) the extent with an added tolerance ...
Definition extent3.h:150
bool tolIntersects(const Extent3< T > &c, const T &tol) const
Returns true if the Extent3 C intersects (inclusive) this extent in any way with an added tolerance f...
Definition extent3.h:162
bool operator<(const Extent3< T > &c) const
Comparison operator, based on volume.
Definition extent3.h:131
const T & x1() const
Returns the lower bound of the extent in the x-direction.
Definition extent3.h:42
Extent3< T > expandedToInclude(const T &x, const T &y, const T &z) const
This is an overloaded member function, provided for convenience. It differs from the above function o...
Definition extent3.h:282
bool isIn(const Vector3< T > &v) const
Returns true if Vector3 v is "inside" the extent, inclusive.
Definition extent3.h:135
void lowerBound(const Vector3< T > &v)
Sets the lower bound of the exetnt, keeping the upper bound constant. Synonym to c111().
Definition extent3.h:218
Vector3< T > upperBound() const
Returns the upper bounding corner of the extent, maximum value of x,y, and z.
Definition extent3.h:115
const Extent3< T > & center(const Vector3< T > &v)
Centers this Extent2 about point v.
Definition extent3.h:303
Vector3< T > c112() const
Returns one of the eith corners that characterize the extent.
Definition extent3.h:105
const T & y2() const
Returns the upper bound of the extent in the y-direction.
Definition extent3.h:48
T & rz1()
Reference access to the minimum z extent.
Definition extent3.h:174
const T & dof2(uint32 u) const
Returns the upper bound of degree-of-freedom dof.
Definition extent3.h:63
T & ry1()
Reference access to the minimum y extent.
Definition extent3.h:172
bool isIn(const Extent3< T > &c) const
Returns true if the Extent3 c falls completely inside (inclusive) the extent.
Definition extent3.h:140
Vector3< T > size() const
Returns the size of the extent as a Vector3(width(),height(),depth()).
Definition extent3.h:117
bool operator>(const Extent3< T > &c) const
Comparison operator, based on volume.
Definition extent3.h:133
void c221(const Vector3< T > &v)
Sets one of the eight characteristic corners of the extent, keeping the other three extents constant.
Definition extent3.h:208
Extent3< T > operator-(const Vector3< T > &v) const
Returns the extent created ty translating this one -v units.
Definition extent3.h:237
void c112(const Vector3< T > &v)
Sets one of the eight characteristic corners of the extent, keeping the other three extents constant.
Definition extent3.h:210
T & ry2()
Reference access to the maximum y extent.
Definition extent3.h:173
const Extent3< T > & operator+=(const Vector3< T > &v)
Adds v to all extent boundaries, effectively translating it.
Definition extent3.h:229
T & rdof1(uint32 u)
Reference access to lower bound of degree-of-freedom dof.
Definition extent3.h:177
const Extent3< T > & operator-=(const Vector3< T > &v)
Subtracts v from all extent boundaries, effectively translating it.
Definition extent3.h:231
Vector3< T > corner(uint32 x, uint32 y, uint32 z) const
Definition extent3.h:85
void width(const T &t)
Sets the width of the extent by moving the maximum x extent, keeping the minimum constant.
Definition extent3.h:196
T & rx2()
Reference access to the maximum x extent.
Definition extent3.h:171
Vector3< T > c212() const
Returns one of the eith corners that characterize the extent.
Definition extent3.h:109
Extent3< T > intersectedWith(const Extent3< T > &r) const
Returns the extent formed by the intersections of the two extents. May end up empty.
Definition extent3.h:239
Vector3< T > c122() const
Returns one of the eith corners that characterize the extent.
Definition extent3.h:107
void c122(const Vector3< T > &v)
Sets one of the eight characteristic corners of the extent, keeping the other three extents constant.
Definition extent3.h:212
T width() const
Returns the size of the extent in the x-direction.
Definition extent3.h:72
Extent3(const Extent2< T > &r)
Explicit contructor, from a Extent2. The z extent is set to (0,1).
Definition extent3.h:35
T & rz2()
Definition extent3.h:175
Extent3(const T &x1, const T &x2, const T &y1, const T &y2, const T &z1, const T &z2)
Explicit constructor, by providing all six cartesian extents.
Definition extent3.h:26
T & rx1()
Reference access to the minimum x extent.
Definition extent3.h:170
Extent3< T > expanded(const T &tol) const
Definition extent3.h:292
Extent3< T > biggerBy(const T &fact) const
Definition extent3.h:295
void depth(const T &t)
Sets the depth of the extent by moving the maximum z extent, keeping the minimum constant.
Definition extent3.h:200
void upperBound(const Vector3< T > &v)
Sets the upper bound of the exetnt, keeping the lower bound constant. Synonym to c222().
Definition extent3.h:220
bool isEmpty() const
Returns true if the region is "inside out" in any of its three coordinates.
Definition extent3.h:121
const T & z2() const
Returns the upper bound of the extent in the y-direction.
Definition extent3.h:52
void c222(const Vector3< T > &v)
Sets one of the eight characteristic corners of the extent, keeping the other three extents constant.
Definition extent3.h:216
Vector3< T > c111() const
Returns one of the eith corners that characterize the extent.
Definition extent3.h:97
const Extent3< T > & expandToInclude(const T &x, const T &y, const T &z)
This is an overloaded member function, provided for convenience. It differs from the above function o...
Definition extent3.h:266
void c121(const Vector3< T > &v)
Sets one of the eight characteristic corners of the extent, keeping the other three extents constant.
Definition extent3.h:204
bool operator!=(const Extent3< T > &r) const
Comparison operator.
Definition extent3.h:129
Vector3< T > lowerBound() const
Returns the lower bounding corner of the extent, minimum value of x,y, and z.
Definition extent3.h:113
const Extent3< T > & expandToInclude(const Extent3< T > &r)
Enlarges the extent to include both its original extent and r.
Definition extent3.h:246
static constexpr Extent3< T > nothing()
Returns an Extent3 with maximum negative size. Useful for calculating bounds.
Definition extent3.h:37
Extent3< T > expandedToInclude(const Vector3< T > &v) const
Returns an extent large enough to contain this one and the point v.
Definition extent3.h:276
const Extent3< T > & expand(const T &tol)
Definition extent3.h:288
bool tolIsEmpty(const double &tol=limits< double >::epsilon() *100) const
Returns true if the region is "inside out" with a tolerance in any of its three coordinates.
Definition extent3.h:123
const T & y1() const
Returns the lower bound of the extent in the y-direction.
Definition extent3.h:46
const T & x2() const
Returns the upper bound of the extent in the x-direction.
Definition extent3.h:44
Vector3< T > bound(const Vector3< T > &v) const
Definition extent3.h:225
bool tolIsIn(const Vector3< T > &v, const T &tol) const
Returns true if Vector3 v is "inside" the extent, inclusive with an added tolerance factor.
Definition extent3.h:145
void size(const Vector3< T > &v)
Specifies the size of the extent by moving the upper bound, keeping the lower bound constant.
Definition extent3.h:222
Vector3< T > c221() const
Returns one of the eith corners that characterize the extent.
Definition extent3.h:103
3D vector utility class.
Definition vect.h:163
constexpr const T & y() const
The y-component of the vector.
Definition vect.h:186
constexpr const T & x() const
The x-component of the vector.
Definition vect.h:184
constexpr const T & z() const
The z-component of the vector.
Definition vect.h:188
debug checked shorthand for std::numeric_limits<T>::
Definition limit.h:25
const Extent3< T > & toExtent3(const Extent3< T > &t)
Returns a Extent3.
Definition extent3.h:340