00001 // @(#)root/gl:$Id: CsgOps.h 20882 2007-11-19 11:31:26Z rdm $ 00002 // Author: Timur Pocheptsov 01/04/2005 00003 00004 #ifndef ROOT_CsgOps 00005 #define ROOT_CsgOps 00006 00007 #ifndef ROOT_Rtype 00008 #include "Rtypes.h" 00009 #endif 00010 00011 class TBuffer3D; 00012 00013 namespace RootCsg { 00014 00015 // I need TBaseMesh to have an opaque pointer 00016 // to hidden representation of resulting mesh. 00017 00018 class TBaseMesh { 00019 public: 00020 00021 virtual ~TBaseMesh(){} 00022 virtual UInt_t NumberOfPolys()const = 0; 00023 virtual UInt_t NumberOfVertices()const = 0; 00024 virtual UInt_t SizeOfPoly(UInt_t polyIndex)const = 0; 00025 virtual const Double_t *GetVertex(UInt_t vertNum)const = 0; 00026 virtual Int_t GetVertexIndex(UInt_t polyNum, UInt_t vertNum)const = 0; }; 00027 00028 TBaseMesh *ConvertToMesh(const TBuffer3D &buff); 00029 TBaseMesh *BuildUnion(const TBaseMesh *leftOperand, const TBaseMesh *rightOperand); 00030 TBaseMesh *BuildIntersection(const TBaseMesh *leftOperand, const TBaseMesh *rightOperand); 00031 TBaseMesh *BuildDifference(const TBaseMesh *leftOperand, const TBaseMesh *rightOperand); 00032 } 00033 00034 #endif