TeXgraph# {version 1.974} Cmd Fenetre(-8.84316065850877+44.9291052755438*i, 46.7560124764136-10.6700678593787*i, 0.17985878990921+0.17985878990921*i); Marges(0, 0, 0, 0); Border(0); [OriginalCoord(1), IdMatrix()]; [theta:=5.4105, phi:=1.1345, IdMatrix3D(), ModelView(ortho)]; [GrayScale(0), ComptGraph:=0]; Var alpha = -1.73472347597681E-18; AnimationVer = 1.1; Include "MacrosAnim.mac"; "Animation.mac"; Mac 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) ]; OnBeginAnim = [{exécutée au lancement de l'animation} ]; OnEndAnim = [{exécutée à la fin de l'animation} ]; Initialiser = [{valeurs par défaut de vos paramètres} alpha:=0, ReCalc(objet1) ]; Tempo = 100; NbFrames = 80; Nom = "/home/pfradin/animations/prisme/prisme"; Cmd [tMin:=-5,tMax:=5,DotScale:=1+i]; Graph 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) ];