123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869 |
- /**********************************************************************
- *<
- FILE: box3.h
- DESCRIPTION: 3D Box class
- CREATED BY: Dan Silva
- HISTORY:
- *> Copyright (c) 1994, All Rights Reserved.
- **********************************************************************/
- #ifndef _BOX3_H
- #define _BOX3_H
- #include "point3.h"
- #include "matrix3.h"
- class Box3 {
- public:
- Point3 pmin,pmax;
- DllExport Box3();
- Box3(const Point3& p, const Point3& q) { pmin = p; pmax = q;}
- DllExport void Init();
- DllExport void MakeCube(const Point3& p, float side);
- // Access
- Point3 Min() const { return pmin; }
- Point3 Max() const { return pmax; }
- Point3 Center() const { return(pmin+pmax)/(float)2.0; }
- Point3 Width() const { return(pmax-pmin); }
- /* operator[] returns ith corner point: (i == (0..7) )
- Mapping:
- X Y Z
- [0] : (min,min,min)
- [1] : (max,min,min)
- [2] : (min,max,min)
- [3] : (max,max,min)
- [4] : (min,min,max)
- [5] : (max,min,max)
- [6] : (min,max,max)
- [7] : (max,max,max)
- */
- DllExport Point3 operator[](int i) const;
- // Modifiers
- DllExport Box3& operator+=(const Point3& p); // expand this box to include Point3
- DllExport Box3& operator+=(const Box3& b); // expand this box to include Box3
- DllExport void Scale(float s); // scale box about center
- DllExport void Translate(const Point3 &p); // translate box
- DllExport void EnlargeBy(float s); // enlarge by this amount on all sides
- // Returns a box that bounds the 8 transformed corners of the input box.
- DllExport Box3 operator*(const Matrix3& tm) const;
- // Tests
- DllExport int IsEmpty() const; // is this box empty?
- DllExport int Contains(const Point3& p) const; // is point in this box?
- DllExport int Contains(const Box3& b) const; // is box b totally in this box?
- };
- #endif
|