void MainWindow::enlazarCuerpos() { if (cuerpos.size() > 1) { std::list<Cuerpo*> cuerpos_copia; for(std::list<Cuerpo*>::iterator iter = cuerpos.begin(); iter != cuerpos.end(); iter++){ cuerpos_copia.push_back(*iter); } for(std::list<Cuerpo*>::iterator iter = cuerpos.begin(); iter != cuerpos.end(); iter++){ Cuerpo *cuerpo = *iter; for(std::list<Cuerpo*>::iterator iter_copia = cuerpos_copia.begin(); iter_copia != cuerpos_copia.end(); iter_copia++){ // Cuerpo *cuerpo_copia = *iter_copia; // qDebug() << "Iter: " << *iter; // qDebug() << "Iter copia: " << *iter_copia; if (*iter != *iter_copia) { cuerpo->agregarCuerpo(*iter_copia); qDebug() << "asignado"; } } } } }
void Cuerpo::actualizar() { double const_g = 6.67384e-11; for(std::list<Cuerpo*>::iterator iter = cuerpos_cercanos.begin(); iter != cuerpos_cercanos.end(); iter++){ Cuerpo *cuerpo = *iter; double angulo = anguloCuerpo(*iter); double num_x = (const_g * cuerpo->getMasa()) * cos(angulo); double num_y = (const_g * cuerpo->getMasa()) * sin(angulo); double den = pow(distanciaCuerpo(*iter),2); acel_x = acel_x + num_x/den; acel_y = acel_y + num_y/den; } vel_x = vel_x + acel_x; vel_y = vel_y + acel_y; pos_x_prev = pos_x; pos_y_prev = pos_y; pos_x = pos_x + vel_x + acel_x/2; pos_y = pos_y + vel_y + acel_y/2; }
void MainWindow::correrSimulacion() { for (int x = 0; x <= 10; x++) { QPen pen(Qt::blue); for(std::list<Cuerpo*>::iterator iter = cuerpos.begin(); iter != cuerpos.end(); iter++){ Cuerpo *cuerpo = *iter; // qDebug() << *iter; // qDebug() << "X:" << cuerpo->posX(); // qDebug() << "Y:" << cuerpo->posY(); double pos_x_prev = cuerpo->posXprev(); double pos_y_prev = cuerpo->posYprev(); double pos_x = cuerpo->posX(); double pos_y = cuerpo->posY(); // qDebug() << "Cuerpo: " << cuerpo->getNombre(); qDebug() << "X previa: " << pos_x_prev; qDebug() << "Y previa: " << pos_y_prev; qDebug() << "X:" << pos_x; qDebug() << "Y:" << pos_y; this->scene->addLine(pos_x_prev, pos_y_prev, pos_x, pos_y, pen); cuerpo->actualizar(); } ui->lcdNumber->display(x); } }
Cuerpo::Cuerpo(const Cuerpo &cuerpo){ posicion=cuerpo.getPosicion(); masa=cuerpo.getMasa(); fuerza=cuerpo.getFuerza(); }