TeX au Collège / Représentation d'un triangle sphérique.

Suite à une demande de François Meria sur la liste Syracuse, voici quelques essais de production.

meria3dsphere.mp [ source brut ]

 input geometriesyr16;
 
 vardef FX(expr t,v)=cosd(c*t)*cosd(c*v)
 enddef;
 
 vardef FY(expr t,v)=cosd(c*t)*sind(c*v)
 enddef;
 
 vardef FZ(expr t,v)=sind(c*t)
 enddef;
 
 
Conversion au format PDF de meria3dsphere.1
 figureespace(-10u,-10u,10u,10u);
 Initialisation(5,22,20,750);
 path equa,pole;
 color O,A,B,N;
 O=(0,0,0);
 A=(1,0,0);
 B=(0,1,0);
 N=(0,0,1);
 equa=cercles(O,B,O,B,-A);
 %fillcolor:=ciel;
 %transparence equa;
 pole=cercles(O,B,O,B,N);
 color S[];
 S1=(cosd(75)*cosd(40),sind(75)*cosd(40),sind(40));
 S2=(cosd(15)*cosd(10),sind(15)*cosd(10),sind(10));
 S3=(cosd(45)*cosd(65),sind(45)*cosd(65),sind(65));
 drawoptions(withcolor gris);
 InitialiseParametre(-pi,pi,pi/30,-pi,pi,pi/30);
 FamilleDesCourbesEnU;
 FamilleDesCourbesEnV;
 drawoptions();
 drawarrow segment(-B,B) dashed dashpattern(on12bp off6bp on3bp off6bp);
 drawarrow segment(-A,A) dashed dashpattern(on12bp off6bp on3bp off6bp);
 drawarrow segment(-N,N) dashed dashpattern(on12bp off6bp on3bp off6bp);
 marque_p:="plein";
 pointe(S1,S2,S3);
 trace segment(O,S1);
 trace chemin(O,(redpart(S1),greenpart(S1),0),S1) dashed evenly;
 trace segment((redpart(S1),greenpart(S1),0),(redpart(S1),0,0)) dashed withdots;
 trace segment((redpart(S1),greenpart(S1),0),(0,greenpart(S1),0)) dashed withdots;
 trace segment(O,S2);
 trace chemin(O,(redpart(S2),greenpart(S2),0),S2) dashed evenly;
 trace segment((redpart(S2),greenpart(S2),0),(redpart(S2),0,0)) dashed withdots;
 trace segment((redpart(S2),greenpart(S2),0),(0,greenpart(S2),0)) dashed withdots;
 trace segment(O,S3);
 trace chemin(O,(redpart(S3),greenpart(S3),0),S3) dashed evenly;
 trace segment((redpart(S3),greenpart(S3),0),(redpart(S3),0,0)) dashed withdots;
 trace segment((redpart(S3),greenpart(S3),0),(0,greenpart(S3),0)) dashed withdots;
 trace (cercles(O,S2,O,S2,Normal(O,Normal(O,S2,S1),S2)) cutafter segment(S1,S1))
 withpen pencircle scaled 2bp dashed evenly withcolor jaune;
 trace (cercles(O,S3,O,S3,Normal(O,Normal(O,S1,S3),S3)) cutbefore demidroite(99/100[S3,S1],S1))
 withpen pencircle scaled 2bp dashed evenly withcolor rouge;
 trace (cercles(O,S3,O,S3,Normal(O,Normal(O,S3,S2),S3)) cutafter demidroite(99/100[S1,S2],S2))
 withpen pencircle scaled 2bp dashed evenly withcolor bleu;
 finespace;
 %figure2
 
Conversion au format PDF de meria3dsphere.2
 figureespace(-10u,-10u,10u,10u);
 Initialisation(5,22,20,750);
 path equa,pole;
 color O,A,B,N;
 O=(0,0,0);
 A=(1,0,0);
 B=(0,1,0);
 N=(0,0,1);
 equa=cercles(O,B,O,B,-A);
 fillcolor:=ciel;
 transparence equa;
 pole=cercles(O,B,O,B,N);
 color S[];
 S1=(cosd(75)*cosd(40),sind(75)*cosd(40),sind(40));
 S2=(cosd(15)*cosd(10),sind(15)*cosd(10),sind(10));
 S3=(cosd(45)*cosd(65),sind(45)*cosd(65),sind(65));
 drawoptions(withcolor gris);
 InitialiseParametre(-pi,pi,pi/30,-pi,pi,pi/30);
 FamilleDesCourbesEnU;
 FamilleDesCourbesEnV;
 drawoptions();
 drawarrow segment(-B,B) dashed dashpattern(on12bp off6bp on3bp off6bp);
 drawarrow segment(-A,A) dashed dashpattern(on12bp off6bp on3bp off6bp);
 drawarrow segment(-N,N) dashed dashpattern(on12bp off6bp on3bp off6bp);
 marque_p:="plein";
 pointe(S1,S2,S3);
 trace segment(O,S1);
 trace chemin(O,(redpart(S1),greenpart(S1),0),S1) dashed evenly;
 trace segment((redpart(S1),greenpart(S1),0),(redpart(S1),0,0)) dashed withdots;
 trace segment((redpart(S1),greenpart(S1),0),(0,greenpart(S1),0)) dashed withdots;
 trace segment(O,S2);
 trace chemin(O,(redpart(S2),greenpart(S2),0),S2) dashed evenly;
 trace segment((redpart(S2),greenpart(S2),0),(redpart(S2),0,0)) dashed withdots;
 trace segment((redpart(S2),greenpart(S2),0),(0,greenpart(S2),0)) dashed withdots;
 trace segment(O,S3);
 trace chemin(O,(redpart(S3),greenpart(S3),0),S3) dashed evenly;
 trace segment((redpart(S3),greenpart(S3),0),(redpart(S3),0,0)) dashed withdots;
 trace segment((redpart(S3),greenpart(S3),0),(0,greenpart(S3),0)) dashed withdots;
 trace (cercles(O,S2,O,S2,Normal(O,Normal(O,S2,S1),S2)) cutafter segment(S1,S1))
 withpen pencircle scaled 2bp dashed evenly withcolor jaune;
 trace (cercles(O,S3,O,S3,Normal(O,Normal(O,S1,S3),S3)) cutbefore demidroite(99/100[S3,S1],S1))
 withpen pencircle scaled 2bp dashed evenly withcolor rouge;
 trace (cercles(O,S3,O,S3,Normal(O,Normal(O,S3,S2),S3)) cutafter demidroite(99/100[S1,S2],S2))
 withpen pencircle scaled 2bp dashed evenly withcolor bleu;
 finespace;
 %figure3
 
Conversion au format PDF de meria3dsphere.3
 figureespace(-10u,-10u,10u,10u);
 Initialisation(5,22,20,750);
 path equa,pole;
 color O,A,B,N;
 O=(0,0,0);
 A=(1,0,0);
 B=(0,1,0);
 N=(0,0,1);
 equa=cercles(O,B,O,B,-A);
 fillcolor:=ciel;
 transparence equa;
 pole=cercles(O,B,O,B,N);
 color S[];
 S1=(cosd(75)*cosd(40),sind(75)*cosd(40),sind(40));
 S2=(cosd(15)*cosd(10),sind(15)*cosd(10),sind(10));
 S3=(cosd(-45)*cosd(65),sind(-45)*cosd(65),sind(65));
 drawoptions(withcolor gris);
 InitialiseParametre(-pi,pi,pi/30,-pi,pi,pi/30);
 FamilleDesCourbesEnU;
 FamilleDesCourbesEnV;
 drawoptions();
 drawarrow segment(-B,B) dashed dashpattern(on12bp off6bp on3bp off6bp);
 drawarrow segment(-A,A) dashed dashpattern(on12bp off6bp on3bp off6bp);
 drawarrow segment(-N,N) dashed dashpattern(on12bp off6bp on3bp off6bp);
 marque_p:="plein";
 pointe(S1,S2,S3);
 trace segment(O,S1);
 trace chemin(O,(redpart(S1),greenpart(S1),0),S1) dashed evenly;
 trace segment((redpart(S1),greenpart(S1),0),(redpart(S1),0,0)) dashed withdots;
 trace segment((redpart(S1),greenpart(S1),0),(0,greenpart(S1),0)) dashed withdots;
 trace segment(O,S2);
 trace chemin(O,(redpart(S2),greenpart(S2),0),S2) dashed evenly;
 trace segment((redpart(S2),greenpart(S2),0),(redpart(S2),0,0)) dashed withdots;
 trace segment((redpart(S2),greenpart(S2),0),(0,greenpart(S2),0)) dashed withdots;
 trace segment(O,S3);
 trace chemin(O,(redpart(S3),greenpart(S3),0),S3) dashed evenly;
 trace segment((redpart(S3),greenpart(S3),0),(redpart(S3),0,0)) dashed withdots;
 trace segment((redpart(S3),greenpart(S3),0),(0,greenpart(S3),0)) dashed withdots;
 trace (cercles(O,S2,O,S2,Normal(O,Normal(O,S2,S1),S2)) cutafter segment(S1,S1))
 withpen pencircle scaled 2bp dashed evenly withcolor jaune;
 trace (cercles(O,S3,O,S3,Normal(O,Normal(O,S1,S3),S3)) cutbefore demidroite(99/100[S3,S1],S1))
 withpen pencircle scaled 2bp dashed evenly withcolor rouge;
 trace (cercles(O,S3,O,S3,Normal(O,Normal(O,S3,S2),S3)) cutafter demidroite(99/100[S1,S2],S2))
 withpen pencircle scaled 2bp dashed evenly withcolor bleu;
 finespace;
 %figure4
 
Conversion au format PDF de meria3dsphere.4
 figureespace(-10u,-10u,10u,10u);
 Initialisation(5,22,20,750);
 path equa,pole;
 color O,A,B,N;
 O=(0,0,0);
 A=(1,0,0);
 B=(0,1,0);
 N=(0,0,1);
 equa=cercles(O,B,O,B,-A);
 fillcolor:=ciel;
 transparence equa;
 pole=cercles(O,B,O,B,N);
 color S[];
 S1=(cosd(75)*cosd(40),sind(75)*cosd(40),sind(40));
 S2=(cosd(15)*cosd(10),sind(15)*cosd(10),sind(10));
 S3=(cosd(-45)*cosd(65),sind(-45)*cosd(65),sind(65));
 drawoptions(withcolor gris);
 InitialiseParametre(-pi/2,-pi/10,pi/20,-pi,pi,pi/20);
 FamilleDesCourbesEnU;
 FamilleDesCourbesEnV;
 InitialiseParametre(0,pi/2,pi/20,pi/2,3*pi/2,pi/20);
 FamilleDesCourbesEnU;
 FamilleDesCourbesEnV;
 drawoptions();
 drawarrow segment(-B,B) dashed dashpattern(on12bp off6bp on3bp off6bp);
 drawarrow segment(-A,A) dashed dashpattern(on12bp off6bp on3bp off6bp);
 drawarrow segment(-N,N) dashed dashpattern(on12bp off6bp on3bp off6bp);
 marque_p:="plein";
 pointe(S1,S2,S3);
 trace segment(O,S1);
 trace chemin(O,(redpart(S1),greenpart(S1),0),S1) dashed evenly;
 trace segment((redpart(S1),greenpart(S1),0),(redpart(S1),0,0)) dashed withdots;
 trace segment((redpart(S1),greenpart(S1),0),(0,greenpart(S1),0)) dashed withdots;
 trace segment(O,S2);
 trace chemin(O,(redpart(S2),greenpart(S2),0),S2) dashed evenly;
 trace segment((redpart(S2),greenpart(S2),0),(redpart(S2),0,0)) dashed withdots;
 trace segment((redpart(S2),greenpart(S2),0),(0,greenpart(S2),0)) dashed withdots;
 trace segment(O,S3);
 trace chemin(O,(redpart(S3),greenpart(S3),0),S3) dashed evenly;
 trace segment((redpart(S3),greenpart(S3),0),(redpart(S3),0,0)) dashed withdots;
 trace segment((redpart(S3),greenpart(S3),0),(0,greenpart(S3),0)) dashed withdots;
 trace (cercles(O,S2,O,S2,Normal(O,Normal(O,S2,S1),S2)) cutafter segment(S1,S1))
 withpen pencircle scaled 2bp dashed evenly withcolor jaune;
 trace (cercles(O,S3,O,S3,Normal(O,Normal(O,S1,S3),S3)) cutbefore demidroite(99/100[S3,S1],S1))
 withpen pencircle scaled 2bp dashed evenly withcolor rouge;
 trace (cercles(O,S3,O,S3,Normal(O,Normal(O,S3,S2),S3)) cutafter demidroite(99/100[S1,S2],S2))
 withpen pencircle scaled 2bp dashed evenly withcolor bleu;
 finespace;
 end

On peut certainement faire mieux (dans la gestion des intersections; en construisant une macro). [À suivre]

 

Validation CSS Validation XHTMLChristophe Poulain — Dernière modification : 2 décembre 2006 (0.07s - 3952998 - samedi 10 janvier 2009) vers le haut