31 #ifndef CORE_GEOMETRY_BBOX_H
32 #define CORE_GEOMETRY_BBOX_H 1
50 BBox() : is_valid_(false) {}
53 : cmin_(copy.cmin_), cmax_(copy.cmax_), is_valid_(copy.is_valid_) {}
57 is_valid_ = copy.is_valid_;
64 : cmin_(b1.cmin_), cmax_(b1.cmax_), is_valid_(true)
72 : cmin_(p1), cmax_(p1), is_valid_(true)
78 : cmin_(p1), cmax_(p1), is_valid_(true)
84 explicit BBox(
const std::vector<Point>& points) :
87 for (
size_t j=0; j<points.size(); j++)
93 inline bool valid()
const {
return is_valid_; }
95 inline void reset() { is_valid_ =
false; }
121 cmin_.
x(cmin_.
x()-val);
122 cmin_.
y(cmin_.
y()-val);
123 cmin_.
z(cmin_.
z()-val);
124 cmax_.
x(cmax_.
x()+val);
125 cmax_.
y(cmax_.
y()+val);
126 cmax_.
z(cmax_.
z()+val);
134 Vector r(radius,radius,radius);
137 cmin_=
Min(p-r, cmin_);
138 cmax_=
Max(p+r, cmax_);
166 return cmin_ + (d * 0.5);
173 return Max(diagonal.
x(), diagonal.
y(), diagonal.
z());
180 return Min(diagonal.
x(), diagonal.
y(), diagonal.
z());
207 return (is_valid_ && p.
x() >= cmin_.
x() &&
208 p.
y() >= cmin_.
y() && p.
z() >= cmin_.
z() &&
209 p.
x() <= cmax_.
x() && p.
y() <= cmax_.
y() &&
215 if ((cmax_.
x() < b.cmin_.
x()) || (cmin_.
x() > b.cmax_.
x()) ||
216 (cmax_.
y() < b.cmin_.
y()) || (cmin_.
y() > b.cmax_.
y()) ||
217 (cmax_.
z() < b.cmin_.
z()) || (cmin_.
z() > b.cmax_.
z()))
222 if ((cmin_.
x() <= b.cmin_.
x()) && (cmax_.
x() >= b.cmax_.
x()) &&
223 (cmin_.
y() <= b.cmin_.
y()) && (cmax_.
y() >= b.cmax_.
y()) &&
224 (cmin_.
z() <= b.cmin_.
z()) && (cmax_.
z() >= b.cmax_.
z()))
245 friend std::ostream&
operator<<(std::ostream& out,
const BBox& b);
Point Min(const Point &p1, const Point &p2)
Definition: Point.h:194
BBox(const Point &p1, const Point &p2, const Point &p3)
Definition: BBox.h:77
int intersect(const BBox &b) const
Definition: BBox.h:213
void extend(const Point &p, double radius)
Definition: BBox.h:132
Point max() const
Definition: BBox.h:195
friend std::ostream & operator<<(std::ostream &out, const BBox &b)
Definition: Persistent.h:89
BBox(const std::vector< Point > &points)
Definition: BBox.h:84
void extend(double val)
Definition: BBox.h:117
void y(const double)
Definition: Point.h:135
BBox & extend(const Point &p)
Expand the bounding box to include point p.
Definition: BBox.h:98
#define SCISHARE
Definition: share.h:39
Utility for specifying data invariants (Assertions)
BBox(const Point &p1, const Point &p2)
Definition: BBox.h:71
SCISHARE bool is_similar_to(const BBox &b, double diff=0.5) const
Check whether two BBoxes are similar.
Definition: BBox.cc:52
#define ASSERT(condition)
Definition: Assert.h:110
void extend(const BBox &b)
Expand the bounding box to include bounding box b.
Definition: BBox.h:149
double y_length()
Definition: BBox.h:233
void z(const double)
Definition: Point.h:145
bool valid() const
Definition: BBox.h:93
void x(const double)
Definition: Point.h:125
Vector diagonal() const
Definition: BBox.h:198
BBox(const BBox ©)
Definition: BBox.h:52
Point min() const
Definition: BBox.h:192
SCISHARE bool overlaps(const BBox &bb) const
bbox's that share a face overlap
Definition: BBox.cc:88
Point center() const
Definition: BBox.h:162
void x(double)
Definition: Vector.h:175
SCISHARE void extend_disk(const Point &cen, const Vector &normal, double r)
Definition: BBox.cc:37
bool inside(const Point &p) const
Definition: BBox.h:205
v
Definition: readAllFields.py:42
void y(double)
Definition: Vector.h:185
Point Max(const Point &p1, const Point &p2)
Definition: Point.h:202
BBox & operator=(const BBox ©)
Definition: BBox.h:55
SCISHARE void translate(const Vector &v)
Move the bounding box.
Definition: BBox.cc:70
SCISHARE void scale(double s, const Vector &o)
Scale the bounding box by s, centered around o.
Definition: BBox.cc:77
double z_length()
Definition: BBox.h:234
void reset()
Definition: BBox.h:95
double x_length()
Definition: BBox.h:232
double shortest_edge() const
Definition: BBox.h:176
void set_valid(bool v)
Definition: BBox.h:94
double longest_edge() const
Definition: BBox.h:169
BBox(const BBox &b1, const BBox &b2)
Definition: BBox.h:63
void z(double)
Definition: Vector.h:195
BBox()
Definition: BBox.h:50
SCISHARE void Pio(Piostream &, BBox &)
Definition: BBox.cc:134
SCISHARE bool overlaps_inside(const BBox &bb) const
bbox's that share a face do not overlap_inside
Definition: BBox.cc:101