Files Classes Functions Hierarchy
00001 #include <commandline.h> 00002 #include <gobj.h> 00003 #include <graphmisc.h> 00004 #include <tetrahedron.h> 00005 #include <tetrahedrondisplay.h> 00006 #include <tetrahedrontest.h> 00007 #include <triangle.h> 00008 #include <triangle3D.h> 00009 #include <triangledisplay.h> 00010 #include <zpr.h> 00011 00012 00013 void tetrahedrontest::keyboard01(unsigned char key, int x, int y) 00014 { 00015 switch (key) 00016 { 00017 case 27: 00018 exit(0); 00019 break; 00020 } 00021 } 00022 00023 void tetrahedrontest::display01() 00024 { 00025 glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); 00026 00027 assert(gobj::global!=0); 00028 gobj::global->draw(); 00029 00030 glerrordisplay(); 00031 00032 glutSwapBuffers(); 00033 } 00034 00035 00036 void tetrahedrontest::test01(int argc, char** argv) 00037 { 00038 glutInit(&argc,argv); 00039 glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB | GLUT_DEPTH); 00040 glutInitWindowSize(800,600); 00041 glutCreateWindow(""); 00042 glutDisplayFunc(display01); 00043 glutKeyboardFunc(keyboard01); 00044 00045 zpr zz; 00046 00047 OpenGLinitialisation(); 00048 00049 glEnable(GL_DEPTH_TEST); 00050 glEnable(GL_CULL_FACE); 00051 glEnable(GL_NORMALIZE); 00052 00053 commandline cmd(argc,argv); 00054 00055 double a0=0.0; 00056 double a1=0.0; 00057 double a2=0.0; 00058 double b0=1.3; 00059 double b1=0.0; 00060 double b2=0.0; 00061 00062 double c0=0.5; 00063 double c1=0.0; 00064 double c2=1.0; 00065 00066 double d0=1.0; 00067 double d1=2.0; 00068 double d2=0.0; 00069 00070 cmd.mapvar(a0,"a0"); 00071 cmd.mapvar(a1,"a1"); 00072 cmd.mapvar(a2,"a2"); 00073 cmd.mapvar(b0,"b0"); 00074 cmd.mapvar(b1,"b1"); 00075 cmd.mapvar(b2,"b2"); 00076 cmd.mapvar(c0,"c0"); 00077 cmd.mapvar(c1,"c1"); 00078 cmd.mapvar(c2,"c2"); 00079 cmd.mapvar(d0,"d0"); 00080 cmd.mapvar(d1,"d1"); 00081 cmd.mapvar(d2,"d2"); 00082 00083 typedef point3<double> pt3; 00084 00085 pt3 a(a0,a1,a2); 00086 pt3 b(b0,b1,b2); 00087 pt3 c(c0,c1,c2); 00088 pt3 d(d0,d1,d2); 00089 00090 //gX.push_back( new gobjglDisable(GL_LIGHTING) ); 00091 00092 tetrahedron<pt3,double> tet(a,b,c,d); 00093 00094 /* 00095 visualize_tetrahedron<double> v(gX,t); 00096 00097 cmd.mapvar(v.mesh_on,"mesh_on"); 00098 cmd.mapvar(v.midpoints_on,"midpoints_on"); 00099 cmd.mapvar(v.midpoint_center_on,"midpoint_center_on"); 00100 cmd.mapvar(v.altitude_to_point_on,"altitude_to_point_on"); 00101 cmd.mapvar(v.altitude_on,"altitude_on"); 00102 cmd.mapvar(v.innersphere_on,"innersphere_on"); 00103 */ 00104 00105 gX.set(); 00106 00107 00108 tetrahedrondisplay< tetrahedron<pt3,double> > td(gX,tet); 00109 cmd.mapvar(td.mesh,"mesh"); 00110 cmd.mapvar(td.centroid,"centroid"); 00111 cmd.mapvar(td.trianglecenterpoints,"trianglecenterpoints"); 00112 cmd.mapvar(td.trianglecenters,"trianglecenters"); 00113 td.draw(); 00114 00115 00116 /* 00117 tetrahedrondisplaymesh< tetrahedron<pt3,double> > td(gX,tet); 00118 td.draw(); 00119 00120 typedef triangledisplaypoints< triangle3D<pt3,double> > 00121 tridisptype; 00122 typedef tetrahedron<pt3,double> tettype; 00123 00124 tetrahedrontriangledisplay< tettype, tridisptype > tetd(gX,tet); 00125 tetrahedrontriangledisplaytdimacro(tetd, turnon() ); 00126 00127 tetd.draw(); 00128 */ 00129 00130 00131 // v.eval(); 00132 00133 //t.circumcenter(); 00134 00135 00136 zz.update(); 00137 glutMainLoop(); 00138 } 00139 00140 00141 void tetrahedrontest::test02(int argc, char** argv) 00142 { 00143 glutInit(&argc,argv); 00144 glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB | GLUT_DEPTH); 00145 glutInitWindowSize(800,600); 00146 glutCreateWindow(""); 00147 glutDisplayFunc(display01); 00148 glutKeyboardFunc(keyboard01); 00149 00150 zpr zz; 00151 00152 OpenGLinitialisation(); 00153 00154 glEnable(GL_DEPTH_TEST); 00155 glEnable(GL_CULL_FACE); 00156 glEnable(GL_NORMALIZE); 00157 00158 commandline cmd(argc,argv); 00159 00160 double a0=0.0; 00161 double a1=0.0; 00162 double a2=0.0; 00163 double b0=1.3; 00164 double b1=0.0; 00165 double b2=0.0; 00166 00167 double c0=0.5; 00168 double c1=0.0; 00169 double c2=1.0; 00170 00171 double d0=1.0; 00172 double d1=2.0; 00173 double d2=0.0; 00174 00175 cmd.mapvar(a0,"a0"); 00176 cmd.mapvar(a1,"a1"); 00177 cmd.mapvar(a2,"a2"); 00178 cmd.mapvar(b0,"b0"); 00179 cmd.mapvar(b1,"b1"); 00180 cmd.mapvar(b2,"b2"); 00181 cmd.mapvar(c0,"c0"); 00182 cmd.mapvar(c1,"c1"); 00183 cmd.mapvar(c2,"c2"); 00184 cmd.mapvar(d0,"d0"); 00185 cmd.mapvar(d1,"d1"); 00186 cmd.mapvar(d2,"d2"); 00187 00188 typedef point3<double> pt3; 00189 00190 pt3 a(a0,a1,a2); 00191 pt3 b(b0,b1,b2); 00192 pt3 c(c0,c1,c2); 00193 pt3 d(d0,d1,d2); 00194 00195 //gX.push_back( new gobjglDisable(GL_LIGHTING) ); 00196 00197 tetrahedron<pt3,double> tet(a,b,c,d); 00198 00199 gX.set(); 00200 00201 tetrahedrondisplay< tetrahedron<pt3,double> > td(gX,tet); 00202 cmd.mapvar(td.mesh,"mesh"); 00203 cmd.mapvar(td.centroid,"centroid"); 00204 cmd.mapvar(td.test,"test"); 00205 cmd.mapvar(td.trianglecenterpoints,"trianglecenterpoints"); 00206 cmd.mapvar(td.trianglecenters,"trianglecenters"); 00207 td.draw(); 00208 00209 tetrahedron<pt3,double> tet2; 00210 00211 uint n(1); 00212 cmd.mapvar(n,"n"); 00213 00214 //tet.applytoself(tet2, & triangle3D<pt3,double>::centroid ); 00215 //tet.applytoself(tet2, & triangle3D<pt3,double>::centroid, n ); 00216 //tet.applytoself(tet2, & triangle3D<pt3,double>::gergonnepoint, n ); 00217 //tet.applytoself(tet2, & triangle3D<pt3,double>::circumcenter, n ); 00218 //tet.applytoself(tet2, & triangle3D<pt3,double>::incenter, n ); 00219 //tet.applytoself(tet2, & triangle3D<pt3,double>::orthocenter, n ); 00220 tet.applytoself(tet2, & triangle3D<pt3,double>::napoleanpoint, n ); 00221 00222 00223 tetrahedrondisplaymesh< tetrahedron<pt3,double> > td2(gX,tet2); 00224 td2.draw(); 00225 00226 00227 00228 zz.update(); 00229 glutMainLoop(); 00230 } 00231
1.5.8