JurassicParkTrespasser/jp2_pc/Inc/maxsdk/box3.h

69 lines
1.8 KiB
C++

/**********************************************************************
*<
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