#Optique Géo JCOURTIN 2016

from math import cos, sin, tan, asin, atan, pi, sqrt
from matplotlib import pyplot as plt

## demi boule
R=0.1#m
n=1.5# verre

plt.close()
plt.plot([-4*R, +4*R],[0,0]) #tracé des axes
plt.plot([0,0],[-R,R],'r')



#Q2 : tracé de la demi boule
#---------------------------

Nboule=100  
yBoule=[]
xBoule=[]
#Construire deux listes xBoule et yBoule contenant les coordonnées de points 
#sur un demi-cercle représentant le dioptre circulaire :
#On tracera 101 points régulièrement espacé sur l'axe y tous les 2R/100
#contenant les ordonnées -R et +R soit 101 points
#les abscisses se déduisent des y et R (comment ?) 


for k in range(Nboule+1):
    yBoule+=[#??]   #extrapolation linéaire
    xBoule+=[#??]   #Q1c
    
plt.plot(xBoule,yBoule,'r') #tracé en rouge


#Q3 : Points de départs
#----------------------

#On souhaite 40 points de départ equi-répartis entre les deux réflexions totales
#voir dmin du DS 1 -> condition de réflexion totale.
#Constuire ainsi la liste yStart des ordonnées des points de départ.

NPoints=40
#bonus : ajouter un diaphragmme alpha=0.4 qui limite les rayons à 40% de dmin
alpha=1.
yStart=[]
for k in range(1,#??):
    yStart# A compléter




#Q4 : tracé des rayons :
#-----------------------
#On considère un rayon venant horizontalement selon Ox, qui traverse 
#horizontalement la demi-boule se réfracte sur le dioptre et se propage
#en ligne droite oblique jusqu'à x=+4R


#Rq: vérifier bien (dans la console par exemple) que vos listes
#x et y contiennent bien le même nombre de valeurs, et que les
#coordonnées x[k] et y[k] soit cohérentes entre elles.

for y0 in yStart:
    x=[-2*R, 0.]; y=[y0,y0,y0] #expliquer
    x+=[#??]                   #abscisse sur le dioptre => a compléter
    incidence=asin(#??)        #angle incidence
    refraction=#??             #angle de réfraction
    x+=[4*R]                    
    y+=[#??]
    
    
    plt.plot(x,y,'g')  #tracé en vert


plt.axis([-2*R, 4*R, -2*R, +2*R])
plt.show()  #affichage final.