Пример #1
0
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";
                }
            }
        }
    }
}
Пример #2
0
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;
}
Пример #3
0
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);
    }
}
Пример #4
0
Cuerpo::Cuerpo(const Cuerpo &cuerpo){
	posicion=cuerpo.getPosicion();
	masa=cuerpo.getMasa();
	fuerza=cuerpo.getFuerza();
}