00001 /* 00002 File: MRFaceCluster.h 00003 00004 Function: 00005 00006 Author: Andrew Willmott 00007 00008 Copyright: (c) 2000, Andrew Willmott 00009 */ 00010 00011 #ifndef __MRFaceCluster__ 00012 #define __MRFaceCluster__ 00013 00014 #include "gcl/Renderer.h" 00015 #include "gcl/Quaternion.h" 00016 #include "cl/NArray.h" 00017 00018 class FaceCluster 00019 { 00020 public: 00021 FaceCluster(); 00022 00023 Bool IsLeaf() 00024 { return(child[0] < 0); } 00025 00026 Int child[2]; 00027 00028 Quaternion axesQuat; 00033 Point min; 00034 Point max; 00035 00036 Vector areaNormal; 00037 GCLReal totArea; 00038 Byte sideArea[6]; 00039 00040 Void GetAxes(VecTrans &axes) const 00041 { axes.MakeRot(axesQuat); } 00042 Void SetAxes(const VecTrans &axes) 00043 { axesQuat = MakeQuat(axes); }; 00044 00045 Void Draw(Renderer &r); 00046 Void DrawSideAreas(Renderer &r); 00047 Void DrawPlane(Renderer &r); 00048 Void DrawBox(Renderer &r, Bool solid); 00049 }; 00050 00051 typedef NArray<FaceCluster> FaceClusList; 00052 00053 #endif