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