#ifndef __PLANAR_H__ #define __PLANAR_H__ #include "geometry.h" class CVertex; ////////////////////////////////////////////////////////////////////////////// // Planar Class // class CPlanarIter; class CPlanar : public CGeometry { ////////////////////////////////////////////////// // Friends // public: friend class CPlanarIter; ////////////////////////////////////////////////// // Enumerated Types // ////////////////////////////////////////////////// // Initialization // public: CPlanar(); virtual ~CPlanar(); virtual VOID Init(); virtual VOID Uninit(); virtual BOOL Valid(); ////////////////////////////////////////////////// // Iteration Functions // public: virtual CGeometryIter *AllocateIter() = 0; virtual VOID FreeIter(CGeometryIter *pCPlanarIter) = 0; ////////////////////////////////////////////////// // Geometric Computations // public: virtual VOID CalculateBound(CBound *pCBound); virtual VOID CalculateTexCoords(); virtual BOOL CheckTopology(); protected: virtual BOOL CalculateNormal(Vector &vNormal); virtual VOID CalculateCentroid(Point &ptCentroid); virtual BOOL CheckPlanar(); virtual BOOL CheckValidConvex(); virtual BOOL CheckValidConcave(); ////////////////////////////////////////////////// // Rendering // public: virtual VOID Render(BOOL bFacetted, BOOL bTexture) = 0; virtual VOID RenderNormals(FLOAT fMag) = 0; ////////////////////////////////////////////////// // Output Functions // public: virtual VOID WriteSTL(FILE *fpOutputFile) = 0; ////////////////////////////////////////////////// // Accessor Functions // public: virtual UINT_32 GetVertexCount() = 0; virtual Vector GetNormal(); virtual Point GetCentroid(); ////////////////////////////////////////////////// // Class Variables // protected: ////////////////////////////////////////////////// // Member Variables // protected: }; ////////////////////////////////////////////////////////////////////////////// // Inlined Functions // ////////////////////////////////////////////////////////////////////////////// // CPlanarIter Class // class CPlanarIter : public CGeometryIter { ////////////////////////////////////////////////// // Initialization // public: CPlanarIter(); virtual ~CPlanarIter(); virtual VOID Init(CPlanar *pCPlanar); virtual VOID Uninit(); ////////////////////////////////////////////////// // Iteration Functions // public: // Iteration Functions virtual CVertex *PeekFirstCVertex() = 0; virtual CVertex *PeekNextCVertex() = 0; virtual CVertex *PeekLastCVertex() = 0; virtual CVertex *PeekPrevCVertex() = 0; //virtual CEdge *PeekFirstCEdge() = 0; //virtual CEdge *PeekNextCEdge() = 0; ////////////////////////////////////////////////// // Member Variables // protected: }; ////////////////////////////////////////////////////////////////////// // Inlined Functions // #endif // __PLANAR_H__