#ifndef __VMERGE_H__ #define __VMERGE_H__ #define MAX_VERTS 8 #define INSERT 1 #define NO_INSERT 0 /* When using this structure: * If vert!=NULL, then deeper is unused. * Otherwise, deeper points to the octants of "this" section of space. */ ////////////////////////////////////////////////////////////////////////////// // COctTree Class // class COctTree { ////////////////////////////////////////////////// // Initialization // public: COctTree(); ~COctTree(); ////////////////////////////////////////////////// // Member Variables // public: COctTree *m_ppppoctDeeper[2][2][2]; CLEDSliteVertex *m_ppVerts[MAX_VERTS]; UINT_32 m_uiNumVerts; }; ////////////////////////////////////////////////////////////////////////////// // CEpsilonVtxMerger Class // class CEpsilonVtxMerger { ////////////////////////////////////////////////// // Initialization // public: CEpsilonVtxMerger(); ~CEpsilonVtxMerger(); VOID Init(float fEpsilon, float lx, float ly, float lz, float hx, float hy, float hz); VOID Uninit(); CLEDSliteVertex *ExistingVertex(CLEDSliteVertex *pVtx); CLEDSliteVertex *StoreVertex(CLEDSliteVertex *); private: UINT_32 ClosePoints(const Point& p1, const Point& p2); CLEDSliteVertex *StorePoint(CLEDSliteVertex *, COctTree **, float, float, float, float, float, float, UINT_32); ////////////////////////////////////////////////// // Member Variables // private: COctTree *m_poctTree; float m_fLowx, m_fHighx, m_fLowy, m_fHighy, m_fLowz, m_fHighz; float m_fEpsilon; }; #endif // __VMERGE_H__