#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
Ce code a été récupéré sur le site : https://physique-chimie.discip.ac-caen.fr/spip.php?article1022#pagination_liste_documents_36
Je remercie les auteurs pour cette mise à disposition. 
Mon travail a été de le mettre sous la forme d'un fichier .py

L'objectif ici est d'exploiter à l'aide d'un langage de programmation, des données astronomiques ou satellitaires pour tester les 2eme et 3eme loi de Kepler. 
"""

# import des modules scientifiques
import numpy as np
import matplotlib.pyplot as plt
import csv
from math import sqrt, pi


fig=plt.figure(figsize=(10,10))



def bilan(donnees, referentiel='?', astre='?', ua_bool=True, show=True):
    """ donnees est le fichier de données éphémérides de l'astre """
    with open(donnees) as source:
        donnees = list(csv.DictReader(source, delimiter=";"))
    dates = [donnee["Date (undefined)"][:10] for donnee in donnees]
    dt = int(dates[1][-2:]) - int(dates[0][-2:])
    t = np.array([dt*i for i in range(len(dates))])
    x = np.array([float(donnee["px (au)"].replace(',','.')) for donnee in donnees])
    y = np.array([float(donnee["py (au)"].replace(',','.')) for donnee in donnees])
    d = np.array([float(donnee["Dobs (au)"].replace(',','.')) for donnee in donnees])
    unite = 'ua'
    if not ua_bool:
        ua = 149_597_870_700
        x, y, d = x*ua, y*ua, d*ua
        unite = 'm'
        
    
    return dates, t, x, y, d



dates, t, x1, y1, d = bilan("terre.csv", astre='Terre', referentiel='héliocentrique', show=False)
dates, t, x2, y2, d = bilan("mars-ephemeride-heliocentrique.csv", astre='Mars', referentiel='héliocentrique', show=False)
dates, t, x3, y3, d = bilan("Venus.csv", astre='Venus', referentiel='héliocentrique', show=False)
dates, t, x4, y4, d = bilan("Mercure.csv", astre='Mercure', referentiel='héliocentrique', show=False)

plt.scatter(0, 0)
plt.plot(x1, y1, 'g-', label='Terre')
plt.plot(x2, y2, 'b-', label='Mars')
plt.plot(x3, y3, 'r-', label='Venus')
plt.plot(x4, y4, '-', label='Mercure')
plt.axis("equal")
plt.legend()
plt.title("Trajectoires des planètes du système solaire dans le référentiel héliocentrique")
plt.show()