00001 00002 00003 00005 00006 00011 00016 00021 // GLTriangleFanSet.h // 00023 00024 #ifndef GLTRIANGLEFANSET_H 00025 #define GLTRIANGLEFANSET_H 00026 00027 #include "X3DGLComposedGeometryNode.h" 00028 00029 #include <vector> 00030 00031 namespace X3DTK { 00032 namespace GL { 00033 00036 00037 class TriangleFanSet : public X3DComposedGeometryNode 00038 { 00039 public: 00041 TriangleFanSet(); 00043 virtual SFNode clone() const; 00045 virtual ~TriangleFanSet(); 00046 00048 void setN3F_V3F_vertexArrayArray(const std::vector<std::vector<N3F_V3F> > &N3F_V3F_vertexArrayArray); 00050 void setC4F_N3F_V3F_vertexArrayArray(const std::vector<std::vector<C4F_N3F_V3F> > &C4F_N3F_V3F_vertexArrayArray); 00052 void setT2F_N3F_V3F_vertexArrayArray(const std::vector<std::vector<T2F_N3F_V3F> > &T2F_N3F_V3F_vertexArrayArray); 00054 void setT2F_C4F_N3F_V3F_vertexArrayArray(const std::vector<std::vector<T2F_C4F_N3F_V3F> > &T2F_C4F_N3F_V3F_vertexArrayArray); 00055 00057 inline std::vector<std::vector<N3F_V3F> > &N3F_V3F_vertexArrayArray() {return _N3F_V3F_vertexArrayArray;}; 00059 inline std::vector<std::vector<C4F_N3F_V3F> > &C4F_N3F_V3F_vertexArrayArray() {return _C4F_N3F_V3F_vertexArrayArray;}; 00061 inline std::vector<std::vector<T2F_N3F_V3F> > &T2F_N3F_V3F_vertexArrayArray() {return _T2F_N3F_V3F_vertexArrayArray;}; 00063 inline std::vector<std::vector<T2F_C4F_N3F_V3F> > &T2F_C4F_N3F_V3F_vertexArrayArray() {return _T2F_C4F_N3F_V3F_vertexArrayArray;}; 00064 00066 virtual void update(); 00068 virtual void render() const; 00069 00070 protected: 00072 TriangleFanSet(const TriangleFanSet &T); 00073 00074 private: 00076 std::vector<std::vector<N3F_V3F> > _N3F_V3F_vertexArrayArray; 00078 std::vector<std::vector<C4F_N3F_V3F> > _C4F_N3F_V3F_vertexArrayArray; 00080 std::vector<std::vector<T2F_N3F_V3F> > _T2F_N3F_V3F_vertexArrayArray; 00082 std::vector<std::vector<T2F_C4F_N3F_V3F> > _T2F_C4F_N3F_V3F_vertexArrayArray; 00083 00085 void computeNoColorNoTexCoord(const MFVec3f &vertexArray, const MFVec3f &normalArray); 00087 void computeColorNoTexCoord(const MFVec3f &vertexArray, const MFVec3f &normalArray); 00089 void computeNoColorTexCoord(const MFVec3f &vertexArray, const MFVec3f &normalArray); 00091 void computeColorTexCoord(const MFVec3f &vertexArray, const MFVec3f &normalArray); 00093 void computeArrays(const MFVec3f &vertexArray, MFVec3f &normalArray); 00094 }; 00095 00096 } 00097 } 00098 00099 #endif