#
# Cercle centré en latitude et longitude
# Traçage d'une ellipse, angulaire sur parallèle <> angulaire sur méridien
from math import *
lat_centre_deg = 47.163
long_centre_deg = -2.42233
rayon_mille = 600
nb_points = 12
rayon_km = rayon_mille*1.852
diam_terre_km = 40005
parallele_km = diam_terre_km*cos(lat_centre_deg*pi/180)
angle_meridien = rayon_km*360/diam_terre_km
angle_parallele = rayon_km*360/parallele_km
print("Angle sur méridien [deg] :", round(angle_meridien, 5))
print("Angle sur parallèle [deg] :", round(angle_parallele, 5))
k=pi/180
step = int(360/nb_points)
for theta in range(0, 360, step):
lat_point = lat_centre_deg+angle_meridien*cos(theta*pi/180)
long_point = long_centre_deg+angle_parallele*sin(theta*pi/180)
milCalcRayon = (21600/(2*pi))*acos(sin(lat_centre_deg*k)*sin(lat_point*k) + cos(lat_centre_deg*k)*cos(lat_point*k)*cos((long_centre_deg*k) - (long_point*k)))
print(theta, " ", round(lat_point, 5), " ", round(long_point, 5), " Rayon Calculé=", round(milCalcRayon,5))