00001 00002 // GLTriangleFanSet.h // 00004 00005 #ifndef GLTRIANGLEFANSET_H 00006 #define GLTRIANGLEFANSET_H 00007 00008 #include "X3DGLComposedGeometryNode.h" 00009 00010 #include <vector> 00011 00012 namespace X3DTK { 00013 namespace GL { 00014 00017 00018 class TriangleFanSet : public X3DComposedGeometryNode 00019 { 00020 public: 00022 TriangleFanSet(); 00024 virtual SFNode clone() const; 00026 virtual ~TriangleFanSet(); 00027 00029 void setN3F_V3F_vertexArrayArray(const std::vector<std::vector<N3F_V3F> > &N3F_V3F_vertexArrayArray); 00031 void setC4F_N3F_V3F_vertexArrayArray(const std::vector<std::vector<C4F_N3F_V3F> > &C4F_N3F_V3F_vertexArrayArray); 00033 void setT2F_N3F_V3F_vertexArrayArray(const std::vector<std::vector<T2F_N3F_V3F> > &T2F_N3F_V3F_vertexArrayArray); 00035 void setT2F_C4F_N3F_V3F_vertexArrayArray(const std::vector<std::vector<T2F_C4F_N3F_V3F> > &T2F_C4F_N3F_V3F_vertexArrayArray); 00036 00038 inline std::vector<std::vector<N3F_V3F> > &N3F_V3F_vertexArrayArray() {return _N3F_V3F_vertexArrayArray;}; 00040 inline std::vector<std::vector<C4F_N3F_V3F> > &C4F_N3F_V3F_vertexArrayArray() {return _C4F_N3F_V3F_vertexArrayArray;}; 00042 inline std::vector<std::vector<T2F_N3F_V3F> > &T2F_N3F_V3F_vertexArrayArray() {return _T2F_N3F_V3F_vertexArrayArray;}; 00044 inline std::vector<std::vector<T2F_C4F_N3F_V3F> > &T2F_C4F_N3F_V3F_vertexArrayArray() {return _T2F_C4F_N3F_V3F_vertexArrayArray;}; 00045 00047 virtual void update(); 00049 virtual void render() const; 00050 00051 protected: 00053 TriangleFanSet(const TriangleFanSet &T); 00054 00055 private: 00057 std::vector<std::vector<N3F_V3F> > _N3F_V3F_vertexArrayArray; 00059 std::vector<std::vector<C4F_N3F_V3F> > _C4F_N3F_V3F_vertexArrayArray; 00061 std::vector<std::vector<T2F_N3F_V3F> > _T2F_N3F_V3F_vertexArrayArray; 00063 std::vector<std::vector<T2F_C4F_N3F_V3F> > _T2F_C4F_N3F_V3F_vertexArrayArray; 00064 00066 void computeNoColorNoTexCoord(const MFVec3f &vertexArray, const MFVec3f &normalArray); 00068 void computeColorNoTexCoord(const MFVec3f &vertexArray, const MFVec3f &normalArray); 00070 void computeNoColorTexCoord(const MFVec3f &vertexArray, const MFVec3f &normalArray); 00072 void computeColorTexCoord(const MFVec3f &vertexArray, const MFVec3f &normalArray); 00074 void computeArrays(const MFVec3f &vertexArray, MFVec3f &normalArray); 00075 }; 00076 00077 } 00078 } 00079 00080 #endif