//============================================================================ // common.cpp : pt-list common object and object list class implementation //============================================================================ #include "common.hpp" //---------------------------------------------------------------------------- // OBJECT //---------------------------------------------------------------------------- // DEFAULT CONSTRUCTOR AND THE DESTRUCTOR PtSetObj::PtSetObj() { NumPts=0; } PtSetObj::~PtSetObj() { delete[] Pts; } // POINT-LIST OBJECT CONSTRUCTOR PtSetObj::PtSetObj(int numpts, int id) { ID = id; NumPtsAlloced = numpts; Pts = new Vect3d[NumPtsAlloced]; NumPts = 0; // NO POINTS ACTUALLY ADDED YET! } // POINT-LIST OBJECT CONSTRUCTOR (ID becomes ptr to Vect3d array - Vect3d*) PtSetObj::PtSetObj(int numpts) { NumPtsAlloced = numpts; Pts = new Vect3d[NumPtsAlloced]; NumPts = 0; // NO POINTS ACTUALLY ADDED YET! ID = (int)Pts; } // TRIANGLE OBJECT CONSTRUCTOR (COMMON) PtSetObj::PtSetObj(Vect3d A, Vect3d B, Vect3d C, int id) { ID = id; NumPts = 3; NumPtsAlloced = 3; Pts = new Vect3d[3]; Pts[0]=A; Pts[1]=B; Pts[2]=C; } // ADDS A POINT TO THE POINT-LIST void PtSetObj::AddPt(float x, float y, float z) { if (NumPts==NumPtsAlloced) { printf("ERROR: too many points added!\n"); } Pts[NumPts].Set(x,y,z); NumPts++; } // CALCULATE MEAN POINT OF THE POINT SET void PtSetObj::CalcMean() { MeanPt.Set(0,0,0); for (int i=0; iCalcMean(); Objs[NumObjs] = (int)NewPtSetObj; NumObjs++; } void PtSetObjList::AddTri(Vect3d A, Vect3d B, Vect3d C, int id) { PtSetObj* TriObj = new PtSetObj(A,B,C,id); // CREATE A TRIANGLE OBJECT (ptr to it) AddPtSetObj(TriObj); } void PtSetObjList::Print() { printf(" NumObjs: %d\n", NumObjs); printf("NumObjsAlloced: %d\n", NumObjsAlloced); printf("--------------------\n"); for (int i=0; iPrint(); }