mirror of https://github.com/CGAL/cgal
144 lines
2.3 KiB
C++
144 lines
2.3 KiB
C++
|
|
namespace CGAL {
|
|
|
|
/*!
|
|
\ingroup kernel_classes3
|
|
|
|
An object `b` of the class `Bbox_3` is a bounding
|
|
box in the three-dimensional Euclidean space \f$ \E^3\f$.
|
|
|
|
\sa `CGAL::Bbox_2`
|
|
|
|
*/
|
|
|
|
class Bbox_3 {
|
|
public:
|
|
|
|
/// \name Creation
|
|
/// @{
|
|
|
|
/*!
|
|
introduces a bounding box `b` with lexicographically
|
|
smallest corner point at `(xmin, ymin, zmin)`
|
|
lexicographically largest corner point at
|
|
`(xmax, ymax, zmax)`.
|
|
*/
|
|
Bbox_3(double x_min, double y_min, double z_min,
|
|
double x_max, double y_max, double z_max);
|
|
|
|
/// @}
|
|
|
|
/// \name Operations
|
|
/// @{
|
|
|
|
/*!
|
|
Test for equality.
|
|
*/
|
|
bool operator==(const Bbox_3 &c) const;
|
|
|
|
/*!
|
|
Test for inequality.
|
|
*/
|
|
bool operator!=(const Bbox_3 &q) const;
|
|
|
|
/*!
|
|
Returns 3.
|
|
*/
|
|
int dimension() const;
|
|
|
|
/*!
|
|
|
|
*/
|
|
double xmin() const;
|
|
|
|
/*!
|
|
|
|
*/
|
|
double ymin() const;
|
|
|
|
/*!
|
|
|
|
*/
|
|
double zmin() const;
|
|
|
|
/*!
|
|
|
|
*/
|
|
double xmax() const;
|
|
|
|
/*!
|
|
|
|
*/
|
|
double ymax() const;
|
|
|
|
/*!
|
|
|
|
*/
|
|
double zmax() const;
|
|
|
|
/*!
|
|
Returns `xmin()` if `i==0` or `ymin()` if `i==1`
|
|
or `zmin()` if `i==2`.
|
|
\pre i>=0 and i<=2
|
|
*/
|
|
double min(int i) const;
|
|
|
|
/*!
|
|
Returns `xmax()` if `i==0` or `ymax()` if `i==1`
|
|
or `zmax()` if `i==2`.
|
|
\pre i>=0 and i<=2
|
|
*/
|
|
double max(int i) const;
|
|
|
|
/*!
|
|
returns a bounding box of `b` and `c`.
|
|
*/
|
|
Bbox_3 operator+(const Bbox_3 &c) const;
|
|
|
|
/*!
|
|
updates `b` to be the bounding box of `b` and `c` and returns itself.
|
|
*/
|
|
Bbox_3& operator+=(const Bbox_3 &c);
|
|
|
|
/// @}
|
|
|
|
}; /* end Bbox_3 */
|
|
|
|
/// \ingroup do_overlap_grp
|
|
/// @{
|
|
|
|
/*!
|
|
returns `true` iff `bb1` and `bb2` overlap, i.e., iff their
|
|
intersection is non-empty.
|
|
|
|
\relates Bbox_3
|
|
*/
|
|
bool do_overlap(const Bbox_3 &bb1, const Bbox_3 &bb2);
|
|
|
|
/// @}
|
|
|
|
/*!
|
|
returns the bounding box of the objects in the range `[first,past_end[`.
|
|
Each object in the range must have a member function `BBox_3 bbox()`
|
|
returning its bounding box.
|
|
|
|
\relates Bbox_3
|
|
*/
|
|
template<class InputIterator>
|
|
Bbox_3 bbox_3(InputIterator begin, InputIterator past_end);
|
|
|
|
/*!
|
|
returns the bounding box of the objects in the range `[first,past_end[`.
|
|
`Traits` must provide a functor `Traits::Construct_bbox_3` having an
|
|
operator returning the bounding box of each object in the range.
|
|
`Traits` must also have a member function
|
|
`Traits::Construct_bbox_3 construct_bbox_3_object() const`.
|
|
|
|
\relates Bbox_3
|
|
*/
|
|
template<class InputIterator, class Traits>
|
|
Bbox_3 bbox_3(InputIterator begin, InputIterator past_end, const Traits& traits);
|
|
|
|
|
|
} /* end namespace CGAL */
|