//============================================================================ // common.hpp : This class provides the common data structure used for the // tree-building code. This class defines an object list where each object // is an "indivisible" point set. A point set is an array of points and each // point is a 3-element array of floats. The PtSetObjList is given to the // tree building code. //============================================================================ #ifndef _COMMON_ #define _COMMON_ #include "vect3d.hpp" //---------------------------------------------------------------------------- // OBJECT CLASS (AN INDIVISIBLE OBJECT COMPOSED OF A POINT-LIST: tris, polys, etc.) //---------------------------------------------------------------------------- class PtSetObj { public: Vect3d* Pts; // THE ARRAY OF POINTS MAKING UP THE OBJECT int NumPts; // NUMBER OF POINTS IN THE ARRAY (ACTUALLY ADDED int NumPtsAlloced; // NUMBER OF POINTS ALLOCATED int ID; // OBJECT ID (THIS WILL BE PASSED TO THE USER-CALLBACKS) Vect3d MeanPt; // THE MEAN PT OR "CENTROID" OF THE POINT LIST PtSetObj(); // DEFAULT CONSTRUCTOR AND THE DESTRUCTOR ~PtSetObj(); PtSetObj(int numpts, int id); // POINT-LIST OBJECT CONSTRUCTOR PtSetObj(int numpts); // ID BECOMES PTR TO Vect3d ARRAY PtSetObj(Vect3d A, Vect3d B, Vect3d C, int id); // TRIANGLE OBJECT CONSTRUCTOR (COMMON) void AddPt(float x, float y, float z); // ADDS A POINT TO THE POINT-LIST void CalcMean(); // CALCULATE MEAN POINT OF THE POINT SET void Print(); }; //---------------------------------------------------------------------------- // OBJECT LIST CLASS (LIST OF OBJECTS (i.e. triangles, polygons, surfaces, etc.) //---------------------------------------------------------------------------- class PtSetObjList { public: int* Objs; // THE ARRAY OF OBJECT PTRS (REMOVED AFTER TREE IS BUILT) int NumObjs; // NUMBER OF OBJECTS IN THE OBJECT LIST (ACTUALLY ADDED) int NumObjsAlloced; // NUMBER OF OBJECTS ALLOCATED PtSetObjList(int numobjs); PtSetObjList(char* FileName); // CONSTRUCTOR FOR READING MODEL DIRECTLY FROM TRI FILE ~PtSetObjList(); void AddPtSetObj(PtSetObj* NewPtSetObj); void AddTri(Vect3d A, Vect3d B, Vect3d C, int id); void Print(); }; #endif