Main Page | Namespace List | Class List | File List | Namespace Members | Class Members

Mesh.cpp

00001 // 00002 // file : Mesh.cpp 00003 // date : 22 dec 2001 00004 // changed : 28 jul 2002 00005 // author : jh 00006 // 00007 00008 00009 #include <qfile.h> 00010 #include <qtextstream.h> 00011 #include <qptrvector.h> 00012 #include <qdatetime.h> 00013 00014 00015 #include "Mesh.h" 00016 00017 00018 extern char* __delaunay_lib_version; 00019 00020 00021 Mesh::Mesh() 00022 { 00023 init(); 00024 } 00025 00026 00027 void 00028 Mesh::init() 00029 { 00030 _vertices.setAutoDelete(true); 00031 _triangles.setAutoDelete(true); 00032 } 00033 00034 00035 00036 void 00037 Mesh::clear() 00038 { 00039 _vertices.clear(); 00040 _triangles.clear(); 00041 } 00042 00043 00044 00045 00046 00047 void 00048 Mesh::add_triangle(Triangle* t) 00049 { 00050 #ifdef _DEBUG_ 00051 fprintf(stderr, "<Mesh::addTriangle()>\n"); 00052 #endif 00053 00054 _triangles.insert(t->get_ID(), t ); 00055 00056 #ifdef _DEBUG_ 00057 fprintf(stderr, "</Mesh::addTriangle()>\n"); 00058 #endif 00059 00060 } 00061 00062 00063 00064 void 00065 Mesh::add_vertex(Vertex* p) 00066 { 00067 _vertices.insert(p->ID(), p ); 00068 } 00069 00070 00071 00072 00073 void 00074 Mesh::remove_triangle(Triangle* t) 00075 { 00076 _triangles.remove( t->get_ID() ); 00077 } 00078 00079 00080 00081 void 00082 Mesh::remove_vertex(Vertex* p) 00083 { 00084 _vertices.remove( p->ID() ); 00085 } 00086 00087 00088 00089 00090 00091 void 00092 Mesh::write_XML(const QString& filename) 00093 { 00094 QFile f(filename); 00095 if(!f.open(IO_WriteOnly)) return; 00096 QTextStream* cout = new QTextStream( &f ); 00097 write_XML(*cout); 00098 } 00099 00100 00101 00102 void 00103 Mesh::write_XML(QTextStream &cout) 00104 { 00105 #ifdef _SOFISTIK_ 00106 cout << "+PROG GENF M 40 \n"; 00107 cout << " SYST RAUM GDIV 1000 GDIR ZZ OPTI NEIN \n\n"; 00108 cout << " MAT 1 E 1000 \n\n"; 00109 00110 QDictIterator<Vertex> point_it(_vertices); 00111 00112 for( ; point_it.current(); ++point_it ) { 00113 00114 cout << " KNOT " << point_it.current()->ID(); 00115 cout << " X " << point_it.current()->x(); 00116 cout << " Y " << point_it.current()->y(); 00117 cout << " Z 0 \n"; 00118 00119 } 00120 00121 cout << "\n\n\n"; 00122 00123 00124 QDictIterator<Triangle> tri_it(_triangles); 00125 00126 for(; tri_it.current(); ++tri_it) { 00127 00128 cout << " QUAD " << tri_it.current()->get_ID(); 00129 cout << " " << tri_it.current()->vertex_ID(0); 00130 cout << " " << tri_it.current()->vertex_ID(1); 00131 cout << " " << tri_it.current()->vertex_ID(2); 00132 cout << " MNR 1 D 1.0 \n"; 00133 } 00134 00135 cout << endl; 00136 00137 cout << "ENDE\n\n\n"; 00138 00139 cout << "+PROG ASE M 40 \n"; 00140 cout << " SYST RAUM PROB LINE \n"; 00141 cout << " STEU SOLV 2 \n"; 00142 cout << " LF 1 EGY 0.0 \n"; 00143 cout << " #include Lasten.inp \n"; 00144 cout << "ENDE\n"; 00145 #endif 00146 00147 00148 cout << "<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?>\n"; 00149 cout << "<!-- created by delaunay mesh generator \n"; 00150 cout << " " << __delaunay_lib_version << endl; 00151 cout << " " << QTime::currentTime().toString() << " -->\n"; 00152 cout << "<objects>\n"; 00153 00154 00155 QDictIterator<Vertex> point_it(_vertices); 00156 00157 for( ; point_it.current(); ++point_it ) 00158 point_it.current()->write_XML(cout); 00159 00160 00161 QDictIterator<Triangle> tri_it(_triangles); 00162 00163 for(; tri_it.current(); ++tri_it) 00164 tri_it.current()->write_XML(cout); 00165 00166 cout << "</objects>\n"; 00167 00168 00169 } 00170 00171 00172 00173

Generated on Sun Sep 12 12:59:34 2004 for DelaunayMeshGenerator by doxygen 1.3.7