00001 #ifndef __OBLASTI_H 00002 #define __OBLASTI_H 00003 00004 #include <deque> 00005 #include <vector> 00006 #include "oblast.h" 00007 #include "mypair.h" 00008 00009 using std::deque; 00010 using std::vector; 00011 00012 00013 class Oblasti 00014 { 00015 bool najdiFreshStart(long * topStack, short * stav, const short & FRESH, const short & OPEN); 00016 00017 void ctyrstenKrychle (Plocha * triangle,Plocha * rect); 00018 00019 bool stycnaPlocha(Plocha * soused1, Plocha * soused2); 00020 00021 void ulozStycneBodyAPrvky(Plocha * sp1, Plocha * sp2); 00022 00023 // projde celou stycnou plochu, parametrem jsou dva ukazatele 00024 // na plochy ze dvou oblasti, ktere tvori stycnou plochu 00025 void projdiStycnouPlochu(Plocha * ps1, Plocha * ps2 ); 00026 00027 // prida do route p1 a p2, zavola fci ulozStycneBodyAPrvky 00028 void routeAdd(Plocha *p1, Plocha *p2); 00029 00030 // spocita normalovy vektor na plochu a ulozi ho do nvectors 00031 void normalovyVektor(Plocha *p); 00032 00033 // jednotlive oblasti(telesa) 00034 vector<Oblast*> oblasti; 00035 00036 // pocty alokovanych ploch prvku v poli seplpr 00037 short * poplpr; 00038 00039 // seznamy podezrelych (vnejsich, stycnych) ploch prvku 00040 Plocha *** seplpr; 00041 00042 SpolecnaData & sd; 00043 00044 // prosle stycne plochy pri jejim prohledavani 00045 deque <Plocha *> route; 00046 00047 // pocet ploch prvku u kterých znám typ. Tzn. typ neni NEVI_SE. 00048 short * znamePlochy; 00049 public: 00050 // konstruktor 00051 Oblasti(SpolecnaData & sd); 00052 00053 // destruktor 00054 ~Oblasti(); 00055 00056 // rozdeleni vstupnich dat na autonomni oblasti 00057 void vyhledejOblasti(); 00058 00059 // hledani shodnych ploch mezi oblastmi hrubou silou 00060 void hledejStycnePlochy(); 00061 00062 // lists of nodes on surface 00063 vector< set <MyPair, Less> > nlists; 00064 00065 // numbers of adjacent elements 00066 vector < vector<long> > adjels; 00067 00068 // normal vectors 00069 deque < deque<double *> > nvectors; 00070 }; 00071 00072 00073 00074 #endif 00075 00076 00077 00078