#include <iostream>
#include <cmath>
#include <vector>
#include <fstream>
using namespace std;
int main(){
double G,r,msol,multiplicacion,distancia;
G=0.00000006673;
//Declaracion de la variable tiempo
int n;
n=0;
cout << "Indique el tiempo de la simulacion: ";
cin >> n;
int t[n];
for (int i=0; i<n; i++)
{
t[i]=i;
}
//Declaraciones de la configuracion de los planetas
int np;
np=4;
distancia=0;
double f[np];
double f2[np][np];
msol=1.989e30;
multiplicacion=0;
double vecx[np]= {57.909e9,108.209e9,149.596e9,227.923e9};
double masas[np]={0.33011e24,4.8675e24,5.9724e24,0.64171e24};
double velocidady[np]={47.36e3,35.02e3,29.78e3,24.07e3};
//Fuerza gravitacional del sol con los otros planetas.
for (int i=0; i < np; i++)
{
multiplicacion=-G*msol*masas[i];
distancia = vecx[i]*vecx[i];
f[i]=multiplicacion/distancia;
}
//Fuerza gravitacional de la interaccion con otros planetas
//Se usaron if para indicar el sentido vectorial de las fuerzas
for (int i=0; i < np; i++)
{
for (int j=0; j < np; j++)
{
if (vecx[j]-vecx[i] > 0)
{
multiplicacion=G*masas[i]*masas[j];
distancia=pow(vecx[j]-vecx[i],2);
f2[i][j]=multiplicacion/distancia;
}
else if (vecx[j]-vecx[i] < 0)
{
multiplicacion=-G*masas[i]*masas[j];
distancia=pow(vecx[j]-vecx[i],2);
f2[i][j]=multiplicacion/distancia;
}
else
{
f2[i][j]=0;
}
}
}
//Interaccion de la fuerza gravitacional del sistema solar con un planeta
double ft[np];
//Suma vectorial de las fuerzas
for (int i=0; i<np; i++)
{
for (int j=0; j<np; j++)
{
ft[i]=f[j]+f2[i][j];
}
}
//Calculo de las posiciones x,y,z y guardado en un archivo.txt
double X = 0.0;
double Y = 0.0;
double Z = 0.0;
string nombres[np]={"planeta1.txt","planeta2.txt","planeta3.txt","planeta4.txt"};
for (int i=0 ; i<np; i++)
{
ofstream archivo;
archivo.open(nombres[i]);
for(int j=0; j<n; j++)
{
X=vecx[i]+(0.5*ft[i])*t[j];
Y=velocidady[i]*t[j];
Z=0;
archivo << X << ", " << Y << ", " << Z << endl;
}
}
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8Y21hdGg+CiNpbmNsdWRlIDx2ZWN0b3I+CiNpbmNsdWRlIDxmc3RyZWFtPgoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKaW50IG1haW4oKXsKICAgIGRvdWJsZSBHLHIsbXNvbCxtdWx0aXBsaWNhY2lvbixkaXN0YW5jaWE7CiAgICBHPTAuMDAwMDAwMDY2NzM7CiAgICAvL0RlY2xhcmFjaW9uIGRlIGxhIHZhcmlhYmxlIHRpZW1wbwogICAgaW50IG47CiAgICBuPTA7CiAgICBjb3V0ICA8PCAiSW5kaXF1ZSBlbCB0aWVtcG8gZGUgbGEgc2ltdWxhY2lvbjogIjsKICAgIGNpbiA+PiBuOwogICAgaW50IHRbbl07CiAgICBmb3IgKGludCBpPTA7IGk8bjsgaSsrKQogICAgewogICAgICAgIHRbaV09aTsKICAgIH0KCgoKLy9EZWNsYXJhY2lvbmVzIGRlIGxhIGNvbmZpZ3VyYWNpb24gZGUgbG9zIHBsYW5ldGFzCiAgICBpbnQgbnA7CiAgICBucD00OwogICAgZGlzdGFuY2lhPTA7CiAgICBkb3VibGUgZltucF07CiAgICBkb3VibGUgZjJbbnBdW25wXTsKICAgIG1zb2w9MS45ODllMzA7CiAgICBtdWx0aXBsaWNhY2lvbj0wOwogICAgZG91YmxlIHZlY3hbbnBdPSB7NTcuOTA5ZTksMTA4LjIwOWU5LDE0OS41OTZlOSwyMjcuOTIzZTl9OwogICAgZG91YmxlIG1hc2FzW25wXT17MC4zMzAxMWUyNCw0Ljg2NzVlMjQsNS45NzI0ZTI0LDAuNjQxNzFlMjR9OwogICAgZG91YmxlIHZlbG9jaWRhZHlbbnBdPXs0Ny4zNmUzLDM1LjAyZTMsMjkuNzhlMywyNC4wN2UzfTsKICAgICAvL0Z1ZXJ6YSBncmF2aXRhY2lvbmFsIGRlbCBzb2wgY29uIGxvcyBvdHJvcyBwbGFuZXRhcy4KICAgIGZvciAoaW50IGk9MDsgaSA8IG5wOyBpKyspCiAgICB7CiAgICAgICAgbXVsdGlwbGljYWNpb249LUcqbXNvbCptYXNhc1tpXTsKICAgICAgICBkaXN0YW5jaWEgPSB2ZWN4W2ldKnZlY3hbaV07CiAgICAgICAgZltpXT1tdWx0aXBsaWNhY2lvbi9kaXN0YW5jaWE7CiAgICAgICAgCgogICAgfQogICAgLy9GdWVyemEgZ3Jhdml0YWNpb25hbCBkZSBsYSBpbnRlcmFjY2lvbiBjb24gb3Ryb3MgcGxhbmV0YXMKICAgIC8vU2UgdXNhcm9uIGlmIHBhcmEgaW5kaWNhciBlbCBzZW50aWRvIHZlY3RvcmlhbCBkZSBsYXMgZnVlcnphcyAKICAgIGZvciAoaW50IGk9MDsgaSA8IG5wOyBpKyspCiAgICB7CiAgICAgICAgZm9yIChpbnQgaj0wOyBqIDwgbnA7IGorKykKICAgICAgICB7CiAgICAgICAgICAgIGlmICh2ZWN4W2pdLXZlY3hbaV0gPiAwKQogICAgICAgICAgICB7CgogICAgICAgICAgICAgICAgbXVsdGlwbGljYWNpb249RyptYXNhc1tpXSptYXNhc1tqXTsKICAgICAgICAgICAgICAgIGRpc3RhbmNpYT1wb3codmVjeFtqXS12ZWN4W2ldLDIpOwogICAgICAgICAgICAgICAgZjJbaV1bal09bXVsdGlwbGljYWNpb24vZGlzdGFuY2lhOwoKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIGlmICh2ZWN4W2pdLXZlY3hbaV0gPCAwKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBtdWx0aXBsaWNhY2lvbj0tRyptYXNhc1tpXSptYXNhc1tqXTsKICAgICAgICAgICAgICAgIGRpc3RhbmNpYT1wb3codmVjeFtqXS12ZWN4W2ldLDIpOwogICAgICAgICAgICAgICAgZjJbaV1bal09bXVsdGlwbGljYWNpb24vZGlzdGFuY2lhOwoKICAgICAgICAgICAgfQogICAgICAgICAgICAKICAgICAgICAgICAgZWxzZQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBmMltpXVtqXT0wOwogICAgICAgICAgICB9CgoKICAgICAgICAgICAgCgogICAgICAgICAgICAKICAgICAgICAgICAgCiAgICAgICAgfQogICAgfQoKICAgIAoKLy9JbnRlcmFjY2lvbiBkZSBsYSBmdWVyemEgZ3Jhdml0YWNpb25hbCBkZWwgc2lzdGVtYSBzb2xhciBjb24gdW4gcGxhbmV0YSAKICAgIGRvdWJsZSBmdFtucF07Ci8vU3VtYSB2ZWN0b3JpYWwgZGUgbGFzIGZ1ZXJ6YXMKICAgIGZvciAoaW50IGk9MDsgaTxucDsgaSsrKQogICAgewoKICAgICAgICBmb3IgKGludCBqPTA7IGo8bnA7IGorKykKICAgICAgICB7CgogICAgICAgICAgICBmdFtpXT1mW2pdK2YyW2ldW2pdOwoKICAgICAgICB9CgogICAgfQoKLy9DYWxjdWxvIGRlIGxhcyBwb3NpY2lvbmVzIHgseSx6IHkgZ3VhcmRhZG8gZW4gdW4gYXJjaGl2by50eHQKZG91YmxlIFggPSAwLjA7CmRvdWJsZSBZID0gMC4wOwpkb3VibGUgWiA9IDAuMDsKc3RyaW5nIG5vbWJyZXNbbnBdPXsicGxhbmV0YTEudHh0IiwicGxhbmV0YTIudHh0IiwicGxhbmV0YTMudHh0IiwicGxhbmV0YTQudHh0In07CmZvciAoaW50IGk9MCA7IGk8bnA7IGkrKykKewogICAgb2ZzdHJlYW0gYXJjaGl2bzsKICAgIGFyY2hpdm8ub3Blbihub21icmVzW2ldKTsKICAgIAogICAgZm9yKGludCBqPTA7IGo8bjsgaisrKQogICAgewogICAgICAgIFg9dmVjeFtpXSsoMC41KmZ0W2ldKSp0W2pdOwogICAgICAgIFk9dmVsb2NpZGFkeVtpXSp0W2pdOwogICAgICAgIFo9MDsKICAgICAgICBhcmNoaXZvIDw8IFggPDwgIiwgIiA8PCBZIDw8ICIsICIgPDwgWiA8PCBlbmRsOwoKICAgIH0KfQp9Cg==