Changeset 1310 for applications/robust

Show
Ignore:
Timestamp:
03/25/11 14:42:14 (13 years ago)
Author:
sindj
Message:

Odstraneny dalsi chyby pri slucovani polyhedronu. Zmena stavu slouceneho pri slucovani. JS

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • applications/robust/robustlib.h

    r1307 r1310  
    834834                                        if(is_last) 
    835835                                        { 
     836                                                 
     837                                                /// \TODO Nechapu druhou podminku, zda se mi ze je to spatne.. Nemela by byt jen prvni? Nebo se jedna o nastaveni totalni neutrality? 
    836838                                                if((current_parent->negativechildren.size()>0&&current_parent->positivechildren.size()>0)|| 
    837839                                                                                                        (current_parent->neutralchildren.size()>0&&current_parent->totally_neutral==false)) 
    838                                                 {                                                                
     840                                                { 
     841                                                        for_splitting[level+1].push_back(current_parent);                                                
    839842                                                                 
    840                                                                 for_splitting[level+1].push_back(current_parent); 
    841                                                                  
    842                                                                 current_parent->set_state(0, SPLIT); 
     843                                                        current_parent->set_state(0, SPLIT); 
    843844                                                } 
    844845                                                else 
     
    947948                        { 
    948949                                 
     950                                /* 
    949951                                if(i==statistic.size()-1) 
    950952                                { 
     
    956958                                        cout << ((vertex*)horiz_ref)->get_coordinates() << endl; 
    957959                                } 
     960                                */ 
    958961 
    959962                                char* string = "Checkpoint"; 
     
    12161219                                                        (*child_ref)->parents.push_back(current_positive);                                                                                                       
    12171220                                                } 
     1221 
     1222                                                // current_positive->parents.insert(current_positive->parents.begin(),current_negative->parents.begin(),current_negative->parents.end()); 
     1223                                                // unique(current_positive->parents.begin(),current_positive->parents.end()); 
     1224 
     1225                                                for(list<polyhedron*>::iterator parent_ref = current_negative->parents.begin();parent_ref!=current_negative->parents.end();parent_ref++) 
     1226                                                { 
     1227                                                        (*parent_ref)->children.remove(current_negative); 
     1228 
     1229                                                        switch(current_negative->get_state(SPLIT)) 
     1230                                                        { 
     1231                                                        case -1: 
     1232                                                                (*parent_ref)->negativechildren.remove(current_negative); 
     1233                                                                break; 
     1234                                                        case 0: 
     1235                                                                (*parent_ref)->neutralchildren.remove(current_negative);                                                                 
     1236                                                                break; 
     1237                                                        case 1: 
     1238                                                                (*parent_ref)->positivechildren.remove(current_negative); 
     1239                                                                break; 
     1240                                                        } 
     1241                                                        //(*parent_ref)->children.push_back(current_positive); 
     1242                                                } 
     1243 
     1244                                                if(current_positive->get_state(SPLIT)!=0||current_negative->get_state(SPLIT)==0) 
     1245                                                { 
     1246                                                        for(list<polyhedron*>::iterator parent_ref = current_positive->parents.begin();parent_ref!=current_positive->parents.end();parent_ref++) 
     1247                                                        { 
     1248                                                                if(current_positive->get_state(SPLIT)==1) 
     1249                                                                { 
     1250                                                                        (*parent_ref)->positivechildren.remove(current_positive); 
     1251                                                                } 
     1252                                                                else 
     1253                                                                { 
     1254                                                                        (*parent_ref)->negativechildren.remove(current_positive); 
     1255                                                                } 
     1256 
     1257                                                                (*parent_ref)->neutralchildren.push_back(current_positive); 
     1258                                                        } 
     1259 
     1260                                                        current_positive->set_state(0,SPLIT); 
     1261                                                } 
    12181262                                                 
    12191263                                                if((current_positive->get_state(SPLIT)==0&&!current_positive->totally_neutral)||(current_negative->get_state(SPLIT)==0&&!current_negative->totally_neutral)) 
     
    12641308                                                } 
    12651309 
    1266                                                 current_positive->parents.insert(current_positive->parents.begin(),current_negative->parents.begin(),current_negative->parents.end()); 
    1267                                                 // unique(current_positive->parents.begin(),current_positive->parents.end()); 
    1268  
    1269                                                 for(list<polyhedron*>::iterator parent_ref = current_negative->parents.begin();parent_ref!=current_negative->parents.end();parent_ref++) 
    1270                                                 { 
    1271                                                         (*parent_ref)->children.remove(current_negative); 
    1272                                                         (*parent_ref)->children.push_back(current_positive); 
    1273                                                 }                                                
     1310                                                                                                 
    12741311                                                 
    12751312                                                current_positive->vertices.insert(current_negative->vertices.begin(),current_negative->vertices.end()); 
     
    13311368                                                current_positive->grandparents.clear(); 
    13321369 
     1370                                                 
     1371                                                 
    13331372                                                current_positive->totally_neutral = (current_positive->totally_neutral && current_negative->totally_neutral); 
    13341373 
     
    13971436                } 
    13981437                 
     1438                step_me(0); 
    13991439 
    14001440                if(should_add) 
     
    15501590                } 
    15511591 
    1552                  
     1592                /* 
    15531593                vector<int> sizevector; 
    15541594                for(int s = 0;s<statistic.size();s++) 
     
    15571597                        cout << statistic.row_size(s) << ", "; 
    15581598                } 
     1599                */ 
    15591600 
    15601601                cout << endl;