int vehiculos::actualizar_vehiculos() { if (getnum_coches() >= 2) { vehiculo * ptranterior; vehiculo * ptraux; ptranterior = ptrprim; ptraux = ptranterior->ptrsiguiente; do { // actualizamos la velocidad para la lista de vehiculos // preparamos la posicion if (ptraux->getv_n() > 90.0) ptraux->setv_n(90.0); ptraux->setx_n(ptraux->getx_n() + ptraux->getv_n() * CTIEMPO); /* * la formula se deduce de la velocidad media que es: delta de * x / delta de t, si depejamos para x_f = x_i + * V_media*(t_f-t_i) */ // despues actualizamos con la nueva velocidad ptraux-> setv_n(velocidad (ptraux->getv_n(), ptranterior->geta_n(), ptranterior->getv_n(), ptraux->getV_n(), ptraux->getb_n(), ptraux->getb(), CTAU, ptranterior->getx_n(), ptranterior->gets_n())); if (ptranterior->getv_n() > ptraux->getv_n()) { // std::cout << "Se ha producido una colision...\n" << // std:: endl; // ptranterior->ptranterior = ptraux->ptrsiguiente; // std::cout << "Los vehiculos estan fuera del // carril...pulse una tecla para continuar\n" << // std::endl; } ptranterior = ptranterior->ptrsiguiente; ptraux = ptranterior->ptrsiguiente; } while (ptraux != 0); } return 0; }
// energia mecanica TFloat energiaMecanica(const Datos& d, TFloat t) { TFloat dos_tf=TFloat(2.0,pr); return posicion(d, t)*g + velocidad(d,t)*velocidad(d,t) / dos_tf; }