00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011 #ifndef __mitkICTriangleMesh_h
00012 #define __mitkICTriangleMesh_h
00013
00014 #include "mitkTriangleMesh.h"
00015
00022 class MITK_COMMON_API mitkICTriangleMesh : public mitkTriangleMesh
00023 {
00024 public:
00025 MITK_TYPE(mitkICTriangleMesh, mitkTriangleMesh)
00026
00027 virtual void PrintSelf(ostream& os);
00028
00032 mitkICTriangleMesh();
00033
00038 virtual int GetDataObjectType() const { return MITK_IC_TRIANGLE_MESH; }
00039
00043 virtual void Initialize();
00044
00049 virtual unsigned long long GetActualMemorySize() const;
00050
00055 virtual void ShallowCopy(mitkDataObject *src);
00056
00061 virtual void DeepCopy(mitkDataObject *src);
00062
00067 virtual void SetVertexNumber(size_type number);
00068
00073 virtual void SetFaceNumber(size_type number);
00074
00079 virtual float* GetVertexData() { return ((float *)m_VertexData); }
00080
00085 virtual index_type* GetFaceData() { return ((index_type *)m_FaceData); }
00086
00090 virtual void ReverseNormals();
00091
00097 virtual bool TestClockwise();
00098
00099
00100 protected:
00101 virtual ~mitkICTriangleMesh();
00102
00103 virtual index_type _addVertex(Vertex3f &vert);
00104 virtual index_type _addFace(unsigned int num, index_type *verts);
00105 virtual Vertex3f const* _getVertex(index_type vertIdx);
00106 virtual index_type const* _getFace(index_type faceIdx);
00107 virtual Vertex3f* _getVertexForWrite(index_type vertIdx);
00108 virtual index_type* _getFaceForWrite(index_type faceIdx);
00109
00110
00111 Orientation _testOrientation(index_type faceIdx) const;
00112
00113 Vertex3f *m_VertexData;
00114 TriangleFace *m_FaceData;
00115
00116 private:
00117 mitkICTriangleMesh(const mitkICTriangleMesh&);
00118 void operator=(const mitkICTriangleMesh&);
00119
00120 };
00121
00122 #endif
00123