% TeXgraph version 1.94 beta-0 % Fenetre Xmin Xmax Ymin Ymax Xscale Yscale 100#-8.84316065850877#46.7560124764136#-10.6700678593787#44.9291052755438#0.17985878990921#0.17985878990921## % Marges gauche droite haut bas cadre gestion_couleur comptgraph 101#0#0#0#0#0#1#0## % Affectation des Variables theta et phi 18##[theta:=5.4105, phi:=1.1345, OriginalCoord(1)]## 18##InputMac("Animation.mac")## % Déclaration des Variables Globales 15#alpha#-1.73472347597681E-18## % Déclaration des Macros 16#MakeFrame#[{code pour dessiner la frame n° %1} if %1<=40 then Inc(alpha,-pi/576) elif %1<=80 then Inc(alpha,pi/576) fi, ReCalc(objet1) ] ## 16#OnBeginAnim#[{exécutée au lancement de l'animation} ]## 16#OnEndAnim#[{exécutée à la fin de l'animation} ]## 16#Initialiser#[{valeurs par défaut de vos paramètres} alpha:=0, ReCalc(objet1) ] ## 16#Tempo#100## 16#NbFrames#80## 16#Nom#"/home/pfradin/.TeXgraph/prisme"## 16#PdfReader#"xpdf"## % Déclaration des Eléments graphiques % objet1 (Utilisateur) 18##[tMin:=-5,tMax:=5]## 14#objet1#[A:=[-4*i-2,-5], B:=[8,-5], C:=[5*i-2.5,-5],G:=(A+B+C)/3, T:=rot3d([A,B,C],[G,vecK],alpha), A:=T[1,2], B:=T[3,2], C:=T[5,2], D:=B+10*vecK, N1:=normalize(Prodvec(B-A,D-A)), N2:=normalize(Prodvec(C-B,D-B)), {vecteurs normaux} face1:=[A,N1], face2:=[B,N2],ecran:=[50*i,0,vecJ], P:=Prisme([A,B,C],10*vecK), background(full,aliceblue), S:=M(1,-20,0), {source} I1:=proj3dO(S,face1,vecJ),{incidence face1} Width:=12, a0:=1.48996747, a1:=6157.90238,{pour le calcul des indices} liste:=[420+i*purple,440+i*indigo,470+i*mediumblue, 500+i*lightseagreen, 530+i*green,560+i*yellowgreen, 580+i*yellow,600+i*orange,610+i*orangered,650+i*red,780+i*crimson,800], for z in liste do lambda:=Re(z), indice:=(a0+a1/sqr(lambda)), {loi de Cauchy} {première réfraction} sini1:=-Re(N1[1]), i2:=arcsin(sini1/indice),{loi de Descartes} Vr:=-[rot(N1[1],0,i2),0], {vecteur réfracté} I2:=proj3dO(I1,face2,Vr),{point d'incidence face2} Insert(liste1,I2), {deuxième réfraction} sini1:=-Im(bar(Vr)*N2[1]), i2:=arcsin(sini1*indice), Vr:=[rot(N2[1],0,i2),0], {vecteur réfracté} Insert(liste2,proj3dO(I2,ecran,Vr)),{projection écran} od, k:=1,P2:=liste1[1,2], Q2:=liste2[1,2], Del(liste,Nops(liste),1), Width:=24, G':=Proj3D(G), Ligne([G',Re(G')+i*Ymin, jump, 18+21*i,18+i*Ymin],0), {pieds} FillStyle:=full, Color:=black, FillColor:=beige, DrawPlan(ecran,vecK,25,110), {écran} Width:=1, for z in liste do FillColor:=Im(z),Color:=Im(z), P1:=P2, P2:=liste1[2*k+1,2], Q1:=Q2, Q2:=liste2[2*k+1,2], Ligne3D([I1,P1,Q1,Q2,P2],1),Inc(k,1), od, Width:=8, FillOpacity:=0.5,FillColor:=Rgb(0.74,0.73,1), Color:=black, DrawPoly(P,4), FillOpacity:=1, {dessin du prisme} Color:=black, Width:=12, Ligne3D([S,I1],0), {rayon incident} Width:=4, LineStyle:=dotted, S1:=proj3dO(I1,ecran,vecJ), Ligne3D([I1,S1,jump, ecran[1,2]-55*vecI,ecran[1,2]+55*vecI,jump, S1-12.5*vecK,S1+12.5*vecK],0), Width:=12, LineStyle:=solid, flecher(Proj3D([S,I1]),0.5) ] #-1##