00001 #ifndef __PROBLEM3_H__ 00002 #define __PROBLEM3_H__ 00003 00004 #include "cglib/vector3.h" 00005 #include "cglib/point3.h" 00006 #include "cglib/uv.h" 00007 #include "cglib/object.h" 00008 00010 class Mesh : public Object 00011 { 00012 public: 00014 Mesh(); 00015 00017 virtual ~Mesh(); 00018 00020 virtual int get_position_count() const; 00021 00023 virtual Point3 get_position(int position_index) const; 00024 00026 virtual int get_normal_count() const; 00027 00029 virtual Vector3 get_normal(int normal_index) const; 00030 00032 virtual int get_tex_coord_count() const; 00033 00035 virtual Uv get_tex_coord(int tex_coord_index) const; 00036 00038 virtual int get_face_count() const; 00039 00041 virtual int get_face_vertex_count(int face_index) const; 00042 00044 virtual int get_face_vertex_position_index(int face_index, int vertex_index) const; 00045 00047 virtual int get_face_vertex_normal_index(int face_index, int vertex_index) const; 00048 00050 virtual int get_face_vertex_tex_coord_index(int face_index, int vertex_index) const; 00051 00053 virtual Point3 get_face_vertex_position(int face_index, int vertex_index) const; 00054 00056 virtual Vector3 get_face_vertex_normal(int face_index, int vertex_index) const; 00057 00059 virtual Uv get_face_vertex_tex_coord(int face_index, int vertex_index) const; 00060 00062 virtual void append_position(const Point3 &position); 00063 00065 virtual void append_normal(const Vector3 &normal); 00066 00068 virtual void append_tex_coord(const Uv &tex_coord); 00069 00071 virtual void append_new_face(); 00072 00074 virtual void append_vertex_to_last_face(int position_index, int normal_index, int tex_coord_index); 00075 00077 virtual void accept(Visitor *visitor); 00078 00079 private: 00081 // YOUR CODE HERE // 00083 }; 00084 00085 #endif