Files Classes Functions Hierarchy
00001 #ifndef D3TESSDRAW_H 00002 #define D3TESSDRAW_H 00003 00004 #include <d3marchdisp.h> 00005 #include <d3tess.h> 00006 #include <gobj.h> 00007 #include <graphicsImmediateDeferred.h> 00008 00009 00030 class d3tessdraw : public gobj 00031 { 00032 public: 00033 00034 /* Moving over the mesh changes the mesh. */ 00035 d3tess & tess; 00036 /* Mesh geometry */ 00037 gobjContainer gdynamic; 00038 00039 enum 00040 { 00042 points=0, // Number the points. 00043 simplexes=1, // Number the triangles. 00044 multicolor=2, // Randomly color the tessellation. 00045 voronoi=3, // Voronoi Diagram. 00047 winding=0, // Draw each simplices winding. 00048 grid=1, // Draw the mesh. 00049 cp=2, // Draw the cp. 00050 surface=3, // Draw the surface. 00051 circle=4, // Draw a circle through three point of cp. 00052 circles=5, // Draw circles through all simplices. 00053 voronoip=6 // Draws voronoi polygons at base. 00054 }; 00055 00058 gobjContainerSwitch graphicsDeffered; 00059 00061 gobjContainerSwitch graphicsImmediate; 00062 00065 d3tessdraw(d3tess & tess_); 00066 00068 void draw(); 00069 00071 void meshupdate(); 00072 00073 }; 00074 00075 class writepointsobj : public gobj 00076 { 00077 d3tess const & tess; 00078 public: 00079 00080 gobjglColor3ub col; 00081 00082 writepointsobj(d3tess const & tess_) 00083 : tess(tess_), col(255,255,0) {} 00084 00085 void draw(); 00086 }; 00087 00088 class writewindingobj : public gobj 00089 { 00090 d3tess const & tess; 00091 public: 00092 00093 writewindingobj(d3tess const & tess_) 00094 : tess(tess_) {} 00095 00096 void draw(); 00097 }; 00098 00099 class writegridobj : public gobj 00100 { 00101 d3tess const & tess; 00102 public: 00103 00104 // Configure the grid or mesh color. 00105 gobjglColor3ub gridcolor; 00106 00107 writegridobj(d3tess const & tess_) 00108 : tess(tess_), gridcolor(gobjglColor3ub(0,0,255)) {} 00109 00110 void draw(); 00111 }; 00112 00113 class writesimplicesobj : public gobj 00114 { 00115 d3tess const & tess; 00116 public: 00117 00118 writesimplicesobj(d3tess const & tess_) 00119 : tess(tess_) {} 00120 00121 void draw(); 00122 }; 00123 00124 class writecpobj : public gobj 00125 { 00126 d3tess const & tess; 00127 public: 00128 00129 writecpobj(d3tess const & tess_) 00130 : tess(tess_) {} 00131 00132 void draw(); 00133 }; 00134 00135 00136 class writesurfaceobj : public gobj 00137 { 00138 d3tess const & tess; 00139 public: 00140 00141 // Configure the surface color. 00142 gobjglColor3ub surfacecolor; 00143 00144 // Configure the c-value in surface. 00145 d3marchdisp surface; 00146 00147 writesurfaceobj(d3tess const & tess_) 00148 : tess(tess_), surfacecolor(gobjglColor3ub(255,0,0)) {} 00149 00150 void draw(); 00151 }; 00152 00153 00154 class writecpcircleobj : public gobj 00155 { 00156 d3tess const & tess; 00157 gobjMyCircle cir; 00158 public: 00159 00160 writecpcircleobj(d3tess const & tess_) 00161 : tess(tess_) {} 00162 00163 void draw(); 00164 }; 00165 00166 class writecirclesobj : public gobj 00167 { 00168 d3tess const & tess; 00169 gobjMyCircle cir; 00170 public: 00171 00172 writecirclesobj(d3tess const & tess_) 00173 : tess(tess_) {} 00174 00175 void draw(); 00176 }; 00177 00178 class writecpvoronoiobj : public gobj 00179 { 00180 d3tess & tess; 00181 void onevertex() const; 00182 public: 00183 00184 writecpvoronoiobj(d3tess & tess_) 00185 : tess(tess_) {} 00186 00187 void draw(); 00188 }; 00189 00190 class writemulticolorobj : public gobj 00191 { 00192 d3tess const & tess; 00193 public: 00194 00195 writemulticolorobj(d3tess const & tess_) 00196 : tess(tess_) {} 00197 00198 void draw(); 00199 }; 00200 00201 class writevoronoidiagramobj : public gobj 00202 { 00203 d3tess & tess; 00204 // Iterates around tess.vs 00205 void onevertex() const; 00206 public: 00207 00208 writevoronoidiagramobj(d3tess & tess_) 00209 : tess(tess_) {} 00210 00211 void draw(); 00212 }; 00213 00214 00215 00216 00217 00218 #endif 00219 00220
1.5.8