Geometriesyr16.mp (2)

Mais quelles règles respecter ? Je me suis alors rappelé que Manuel Luque avait conseillé de lire Graphismes scientifiques sur ordinateur de Raymond Dony. Lecture très instructive car elle m'a permi de mettre en place les diverses projections sur l'écran (projection perspective ou parallèle) et de commencer à créer quelques images (on pourra aller voir les différents albums sur la géométrie dans l'espace sur cette page}. Mais il manquait quelque chose : les intersections entre droites, entre droites et plans, entre plans. J'ai alors utilisé le module Metapost de géométrie dans l'espace de Denis Roegel. Je n'ai eu qu'à l'adapter à ma programmation des méthodes de R. Dony. Je n'ai donc que peu de mérites; tout avait déjà été fait.

Et pour finir cette partie, un exemple qui fera plaisir à Jean-Michel Sarlat.

exemple3.mp [ source brut ]

 input geometriesyr16;
 
 
Conversion au format PDF de exemple3.1
 figureespace(-10u,-10u,25u,10u);
 Initialisation(5,25,20,250);
 color A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,S;
 B=(0,0,0);
 A=(1.3,0,0);
 D=(1.3,1.3,0);
 C=(0,1.3,0);
 G=(0,0,1.3);
 F=(1.3,0,1.3);
 E=(1.3,1.3,1.3);
 H=(0,1.3,1.3);
 I=(-0.3,1.4,0);
 J=(0.4,2.1,0);
 K=(-0.3,2.7,0);
 L-K=I-J;
 M-L=(0,0,0.7*sqrt(2));
 N-K=M-L;
 O-J=M-L;
 Q-I=M-L;
 S=(0.5,-0.75,2.5);
 P=ProjectionsurPlan(S,A,B,C);
 color F',E',E'',H',H'',H''',G',G'',O',M',N',Q';
 E'=IntersectionPlanDroite(A,B,C,S,E);
 F'=IntersectionPlanDroite(A,B,C,S,F);
 G'=IntersectionPlanDroite(A,B,C,S,G);
 H'=IntersectionPlanDroite(A,B,C,S,H);
 H''=IntersectionPlanDroite(Q,I,J,S,H);
 H'''=IntersectionPlanDroite(Q,O,M,S,H);
 G''=IntersectionPlanDroite(Q,I,J,G',H');
 E''=IntersectionPlanDroite(Q,I,J,E',H');
 O'=IntersectionPlanDroite(A,B,C,S,O);
 M'=IntersectionPlanDroite(A,B,C,S,M);
 N'=IntersectionPlanDroite(A,B,C,S,N);
 Q'=IntersectionPlanDroite(A,B,C,S,Q);
 color RR,SS,TT,UU,VV;
 RR=IntersectionDroite(G'',H'',Q,O);
 SS=IntersectionDroite(E'',H'',Q,O);
 TT=IntersectionDroite(G',H',I,L);
 VV=IntersectionDroite(E'',H'',J,O);
 UU=IntersectionDroite(G'',H'',I,Q);
 color W,Y,W';
 W=IntersectionDroite(J,O',E',H');
 Y=IntersectionDroite(M',Q',H',G');
 trace hachurage(polygone(D,C,B,G',TT,I,UU,RR,H''',SS,VV,J,K,L,M',N',O',W,E',F',A),60,0.25,0) withcolor gris;
 trace hachurage(polygone(TT,I,UU),60,0.25,0) withcolor gris;
 trace polygone(D,C,B,G',TT,UU,RR,H''',SS,VV,J,K,L,M',N',O',W,E',F',A) withcolor gris;
 trace polygone(G,F,E,H);
 trace polygone(E,H,C,D);
 trace polygone(F,E,D,A);
 trace chemin(A,B,G) dashed evenly;
 trace segment(B,C) dashed evenly;
 trace polygone(O,N,K,J);
 trace polygone(Q,M,N,O);
 trace polygone(Q,O,J,I);
 trace chemin(I,L,M) dashed evenly;
 trace segment(L,K) dashed evenly;
 trace segment(S,P);
 label.top(btex $S$ etex,Projette(S));
 label.bot(btex $P$ etex,Projette(P));
 finespace;
 end
[Suite...]