from math import cos, pi, sqrt
import matplotlib.pyplot as plt
import numpy as np

# Constantes
G = 6.67*10**(-11)
M = 6*10**24 # orbite autour de la Terre
m = 10**3# 1 tonne
# K = G*m*M # de l'ordre de 4*10**17

# Conditions intiales
theta0 = 0
C = 400*10**9 # paramètre pour avoir une belle Epeff. Lune à 375*10**9
# Paramètres de la conique
p = C**2/(G*M) # p = r0 rayon du cercle

# Energies
def Epeff(r):
    return 0.5*m*C**2/r**2-G*m*M/r

Epeffmin = Epeff(p) # Epeffmin correspond au mouvement circulaire en r = r0 = p

Em1 = Epeffmin # MCU
Em2 = 0.5*Epeffmin # elliptique
Em3 = 0.001*Epeffmin # parabole (division par 0 en Em = 0)
Em4 = -15*Epeffmin # hyperbole


Em = Em2 # ligne à modifier

# Exentricité
e = sqrt(1+(2*Em*p)/(G*M*m)) # on peut montrer que e**2-1 = 2mC**2Em/(GmM)**2

def rayon(theta):
    return p/(1+e*cos(theta-theta0)) # équation polaire paramétrique

# Tracés
n = 100
angleM = 2*pi
i = angleM/n
angles = [angleM*i/n for i in range(n)]
#angles = np.arange(0, angleM, i)
r = [rayon(angle) for angle in angles]

#plt.subplot(121) plt.subplot(122) polaire et cartésienne sur 2 subplot échec
n = 1000
R = 5*10**9
i = R/n
distances = [R*i/n for i in range(1,n)]
#distances = np.arange(1, R, i) # version numpy avec Y = Epeff(distances)
Y = [Epeff(r) for r in distances]
EM = [Em for i in range(len(distances))]

# Trajectoire
plt.figure()
plt.polar(angles,r,'g.')

# Energie potentielle
plt.figure()
plt.xlim(0,4*10**9)
plt.ylim(-10**9,10*10**9)
plt.plot(distances,Y)
plt.plot(distances,EM)

plt.show()

# Améliorations ?
"""
On pourrait s'amuser à calculer et afficher :
- demi grand-axe a pour l'ellipse
- paramètre d'impact pour l'hyperbole
- période pour le cercle et l'ellipse
"""

# Sources
"""
https://www.ac-paris.fr/portail/jcms/p2_2334724/ressource-numerique-de-physique-mpsi/pcsi/ptsi-n10?cid=p1_2333951&portal=piapp1_59010

https://femto-physique.fr/mecanique/forces-centrales.php

https://www.physagreg.fr/mecanique-22-forces-centrales.php

https://ressources.unisciel.fr/sillages/physique/meca_mpsi/res/mecanique_forces_centrales.pdf
"""
