Exemplo n.º 1
0
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;
}
Exemplo n.º 2
0
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;
}