00001
00006 #ifndef MESH_H
00007 #define MESH_H
00008
00009
00010
00011
00012
00013
00014 #include "Polygon.h"
00015
00016
00017
00018
00019
00020
00022
00029 class Mesh : Polygon {
00030
00031 public:
00033 Mesh (int n);
00034
00036 Mesh(const Mesh &mesh);
00037
00039 virtual ~Mesh();
00040
00042 int length() const;
00044 int elements_n_vertices() const;
00046 PolygonArray *elements() const;
00047
00049 virtual insert(Polygon *p);
00051 virtual void transform(const AffineTransform &t);
00053 virtual void homoxform(const PerspectiveTransform &t);
00054
00055 private :
00056
00058 int elements_n_vertices;
00059
00061 PolygonArray *polylist;
00062
00063 };
00064
00065 inline
00066 Mesh::Mesh (int n)
00067 : elements_n_vertices(n)
00068 {
00069 polylist = new PolygonArray();
00070 }
00071
00072 inline
00073 Mesh::Mesh(const Mesh &mesh)
00074 : elements_n_vertices(mesh.elements_n_vertices())
00075 {
00076 polylist = mesh.elements();
00077 }
00078
00079 inline
00080 Mesh::~Mesh()
00081 {
00082 polylist->clearAll();
00083 delete polylist;
00084 }
00085
00086 inline int
00087 Mesh::length() const
00088 {
00089 return polylist->size();
00090 }
00091
00092 inline int
00093 Mesh::elements_n_vertices()
00094 {
00095 return elements_n_vertices;
00096 }
00097
00098 inline PolyArray*
00099 Mesh::elements() const
00100 {
00101 return polylist;
00102 }
00103
00104
00106
00111 class TriMesh : Mesh {
00112
00113 public:
00114
00116 TriMesh();
00117
00119 static Val parse(int pass, Pval *plist);
00120
00121 };
00122
00123 inline
00124 TriMesh::TriMesh()
00125 : Mesh(3)
00126 {
00127 }
00128
00129 ofstream &operator<<(ofstream &out,const TriMesh &mesh);
00130
00131 #endif //MESH_H