void Cara::ordenar(Malla *malla) { vector<int> nuevo_orden; for(int i = 0; i < num_elem; ++i) { int n1 = ind_nodos[i]; int n2 = ind_nodos[int(fmod(i+1,num_elem))]; for(int j = i, k = 0; k < num_elem; k++) { // recorro de esta forma para que el mejor caso sea cuando está ordenado int ind_arco = int(fmod(j++,num_elem)); Arco *arco = malla->getArco(ind_arcos[ind_arco]); if(arco->perteneceNodo(n1) && arco->perteneceNodo(n2)) { nuevo_orden.push_back(ind_arcos[ind_arco]); break; } } } ind_arcos = nuevo_orden; }
vector<int> Cara::getArcosIncidentes(int ind_nodo, Malla *malla) { vector<int> arcosIncidentes; for(int i = 0; i < num_elem; ++i) { Arco *arco = malla->getArco(ind_arcos[i]); if(arco->perteneceNodo(ind_nodo)) arcosIncidentes.push_back(ind_arcos[i]); } return arcosIncidentes; }