# Des exemples de solides

Le cube

Voici son code:

u:=1cm;
figure (-8u,-8u,10u,8u);
pair A,B,C,D,E,F,G,H;
pair V;

numeric c;
c:=4;   %côté du cube

A=(0,0);
B=(c*u,0);
C=(c*u,c*u);
D=(0,c*u);

V=(2u,u);  % vecteur pour la perspective

E= A shifted V;
F= B shifted V;
G= C shifted V;
H= D shifted V;

draw A--B--C--D--cycle;
draw B--F--G--C;
draw G--H--D;

draw A--E--F dashed evenly;
draw H--E dashed evenly;

label.llft(btex $A$ etex,A);
label.lrt(btex $B$ etex,B);
label.lrt(btex $C$ etex,C);
label.ulft(btex $D$ etex,D);
label.lrt(btex $E$ etex,E);
label.rt(btex $F$ etex,F);
label.top(btex $G$ etex,G);
label.top(btex $H$ etex,H);

fin;

Le pavé droit

Voici son code:

u:=1cm;
figure (-8u,-8u,10u,8u);
pair A,B,C,D,E,F,G,H;
pair V;

numeric AB,AD;
AB:=6;  %dimensions de la face avant
AD:=3;

A=(0,0);
B=(AB*u,0);
C=(AB*u,AD*u);
D=(0,AD*u);

V=(2u,u);  % vecteur pour la perspective

E= A shifted V;
F= B shifted V;
G= C shifted V;
H= D shifted V;

draw A--B--C--D--cycle;
draw B--F--G--C;
draw G--H--D;

draw A--E--F dashed evenly;
draw H--E dashed evenly;

label.llft(btex $A$ etex,A);
label.lrt(btex $B$ etex,B);
label.lrt(btex $C$ etex,C);
label.ulft(btex $D$ etex,D);
label.lrt(btex $E$ etex,E);
label.rt(btex $F$ etex,F);
label.top(btex $G$ etex,G);
label.top(btex $H$ etex,H);

trace cotation(A,B,-5mm,2mm,btex $L$ etex);
trace cotation(A,D,5mm,2mm,btex $h$ etex rotated -90);
trace cotation(B,F,-5mm,2mm,btex $l$ etex);

fin;

Le tétraèdre

u:=1cm;
figure (-8u,-8u,10u,8u);
pair S,A,B,C;
A=(0,0);
B=(3u,-u);
C=(4u,u);
S=(1.5u,5u);
draw S--A;
draw S--B;
draw S--C;
draw A--C dashed evenly;
draw A--B--C;
nomme.lft(A);
nomme.bot(B);
nomme.rt(C);
nomme.top(S);
fin;

La pyramide

Voici son code:

u:=1cm;
figure (-8u,-8u,10u,8u);
pair S,A,B,C,D,E,H;

A=(0,0);
B=(3u,-u);
C=(4u,0);
D=(2u,u);
E=(u,u);

H=(1.5u,0);
S=(1.5u,5u);

draw S--A;
draw S--B;
draw S--C;
draw S--D dashed evenly;
draw S--E dashed evenly;

draw A--B--C;
draw C--D--E--A dashed evenly;

draw S--H dashed evenly;

draw H--A dashed withdots;
draw H--B dashed withdots;

trace codeperp(S,H,A,6);
trace codeperp(S,H,B,6);

nomme.lft(A);
nomme.bot(B);
nomme.rt(C);
nomme.urt(D);
nomme.ulft(E);
nomme.top(S);
nomme.bot(H);

fin;

La pyramide régulière à base carrée

Voici son code:

u:=1cm;
figure (-8u,-8u,10u,8u);
pair S,A,B,C,D,H;
pair V;

numeric h;
h:=6;   %hauteur

A=(0,0);
B=(6u,0);

V=(1.5u,1.5u);

C=B shifted V;
D=A shifted V;

H=0.5[A,C];
S=H shifted (0,h*u);

draw S--A;
draw S--B;
draw S--C;
draw S--D dashed evenly;

draw A--B--C;
draw C--D--A dashed evenly;

draw S--H dashed evenly;

draw C--A dashed withdots;
draw D--B dashed withdots;

trace codeperp(S,H,A,6);
trace codeperp(S,H,B,6);

nomme.lft(A);
nomme.bot(B);
nomme.rt(C);
nomme.urt(D);
nomme.top(S);
nomme.bot(H);

fin;

la pyramide régulière à base carrée et sa réduction

Voici son code:

u:=1cm;
figure (-8u,-8u,10u,12u);
pair S,A,B,C,D,H;
pair V;

numeric h;
h:=6;   %hauteur

A=(0,0);
B=(6u,0);

V=(1.5u,1.5u);

C=B shifted V;
D=A shifted V;

H=0.5[A,C];
S=H shifted (0,h*u);

draw S--A;
draw S--B;
draw S--C;
draw S--D dashed evenly;

draw A--B--C;
draw C--D--A dashed evenly;
draw S--H dashed evenly;
draw C--A dashed withdots;
draw D--B dashed withdots;

trace codeperp(S,H,A,6);
trace codeperp(S,H,B,6);

label.lft(btex $A$ etex,A);
label.bot(btex $B$ etex,B);
label.rt(btex $C$ etex,C);
label.urt(btex $D$ etex,D);
label.top(btex $S$ etex,S);
label.bot(btex $H$ etex,H);

pair AA,BB,CC,DD,HH;
numeric cr;
cr:=0.4;     %coefficient de réduction

AA:=cr[S,A];
BB:=cr[S,B];
CC:=cr[S,C];
DD:=cr[S,D];
HH:=cr[S,H];

draw AA--BB--CC;

Le cône de révolution

Voici son code:

u:=1cm;
figure (-8u,-8u,10u,8u);
pair A,B,O,S,M;

numeric rb,h;
rb:=3;     % rayon de base
h:=6;      % hauteur

A=(-rb*u,0);
O=(0,0);
B=(rb*u,0);
S=(0,h*u);

path cc;
cc= cercles(O,rb*u);
cc := cc yscaled 0.2;
draw subpath (0, length cc /2) of cc dashed evenly;
draw subpath (length cc /2,length cc) of cc;

draw A--S--B;

draw S--O dashed evenly;

numeric ang;

ang:=300;  % angle servant à placer M

M:=point (length cc *ang/360) of cc;

draw O--M dashed evenly;
draw S--M;

trace codeperp(S,O,M,6);

label.top(btex $S$ etex,S);
label.llft(btex $O$ etex,O);
label.lrt(btex $M$ etex,M);

fin;

Le cône de révolution et sa réduction

Voici son code:

u:=1cm;
figure (-8u,-8u,10u,8u);
pair A,B,O,S,M;

numeric rb,h;
rb:=3;     % rayon de base
h:=6;      % hauteur

A=(-rb*u,0);
O=(0,0);
B=(rb*u,0);
S=(0,h*u);

path cc;
cc= cercles(O,rb*u);
cc := cc yscaled 0.2;
draw subpath (0, length cc /2) of cc dashed evenly;
draw subpath (length cc /2,length cc) of cc;

draw A--S--B;

draw S--O dashed evenly;

numeric ang;

ang:=300;  % angle servant à placer M

M:=point (length cc *ang/360) of cc;

draw O--M dashed evenly;
draw S--M;

trace codeperp(S,O,M,6);

label.top(btex $S$ etex,S);
label.llft(btex $O$ etex,O);
label.lrt(btex $M$ etex,M);

pair OO,MM;
numeric cr;
cr:=0.4;

cc:= cercles(O,cr*rb*u);
cc:= cc yscaled 0.2;
cc:=cc shifted cr[S,O];
draw subpath (0, length cc /2) of cc dashed evenly;
draw subpath (length cc /2,length cc) of cc;

MM:=cr[S,M];
OO:=cr[S,O];

label.lft(btex $O'$ etex,OO);
label.lrt(btex $M'$ etex,MM);

draw OO--MM dashed evenly;

trace codeperp(S,OO,MM,6);


La boule ou la sphère

Voici son code:

u:=1cm;
figure (-8u,-8u,10u,8u);
pair A,B,O,S,M;

numeric rb;
rb:=3;   % rayon

A=(-rb*u,0);
O=(0,0);
B=(rb*u,0);

path cc;
cc= cercles(O,rb*u);
draw cc;

cc := cc yscaled 0.2;
draw subpath (0, length cc /2) of cc dashed evenly;
draw subpath (length cc /2,length cc) of cc;

numeric ang;
ang :=300;   % angle fixant M

M=point (length cc *ang/360) of cc;
draw O--M;

nomme.lft(O);
nomme.lrt(M);

label.urt(btex $R$ etex,0.5[O,M]);

marque_p := "croix";
MarquePoint(O);
marque_p := "rien";

fin;

Section par un plan de la boule ou de la sphère

Voici son code:

u:=1cm;
figure (-8u,-8u,10u,8u);
pair A,B,O,S,M,OO;

numeric rb;
rb:=4;   %rayon de la boule

A=(-rb*u,0);
O=(0,0);
B=(rb*u,0);

numeric cr,rr;
cr:=0.6;    %coefficient servant à placer O'
rr:=rb*sqrt(1-cr*cr);

OO=(0,cr*rb*u);

path cc;
cc= cercles(O,rb*u);
draw cc;

cc := cc yscaled 0.2;
draw subpath (0, length cc /2) of cc dashed evenly;
draw subpath (length cc /2,length cc) of cc;

cc := cercles(O,rr*u);
cc := cc yscaled 0.2;
cc := cc shifted (0,cr*rb*u);
draw subpath (0, length cc /2) of cc dashed evenly;
draw subpath (length cc /2,length cc) of cc;

numeric ang;
ang :=300;   % angle fixant M

M=point (length cc *ang/360) of cc;

nomme.lft(O);
nomme.urt(M);

draw O--M;

draw O--OO--M dashed evenly;

trace codeperp(O,OO,M,6);

label.top(btex $O'$ etex, OO);
label.ulft(btex $R$ etex, 0.5[O,M]);

marque_p := "croix";
MarquePoint(O);
marque_p := "rien";



Cylindre couché

Voici son code:

u:=1cm;
figure (-8u,-8u,10u,8u);
pair A,B,O,AA,BB,OO,M,MM,I;

numeric rb;
rb:=3;     % rayon de base
pair V;
V:=(5u,3u);      % vecteur

O=(0,0);
OO:= O shifted V;

path cc;
cc= cercles(O,rb*u);
draw cc;

path d;
d:=demidroite(O,OO);
I := d intersectionpoint cc;
A:= rotation(I,O,270);
AA:= A shifted V;

B= symetrie(A,O);
BB:= B shifted V;

trace arccercle(BB,AA,OO) dashed evenly;
trace arccercle(AA,BB,OO);

draw A--AA;
draw B--BB;
draw O--OO dashed evenly;

numeric ang;

ang:=340;  % angle servant à placer M

M:=point (length cc *ang/360) of cc;

draw O--M;
trace codeperp(M,O,OO,5);

MM:= M shifted V;
draw OO--MM;
draw M--MM;
trace codeperp(O,OO,MM,5);

label.b

Cylindre debout

Voici son code :

u:=1cm;
figure (-8u,-8u,10u,8u);
pair A,B,O,AA,BB,OO,M,MM;

numeric rb,h;
rb:=3;     % rayon de base
h:=6;      % hauteur

O=(0,0);
OO:= O shifted (0,h*u);
A=(-rb*u,0);
AA:= A shifted (0,h*u);
B=(rb*u,0);
BB:= B shifted (0,h*u);

path cc;
cc= cercles(O,rb*u);
cc := cc yscaled 0.2;
draw subpath (0, length cc /2) of cc dashed evenly;
draw subpath (length cc /2,length cc) of cc;

draw cc shifted (0,h*u);

draw A--AA;
draw B--BB;
draw O--OO dashed evenly;

numeric ang;

ang:=300;  % angle servant à placer M

M:=point (length cc *ang/360) of cc;

draw O--M dashed evenly;
trace codeperp(M,O,OO,5);

MM:= M shifted(0,h*u);
draw OO--MM;
draw M--MM;
trace codeperp(O,OO,MM,5);

label.bot(btex $O$ etex,O);
label.top(btex $O'$ etex,OO);
label.lrt(btex $M$ etex,M);
label.top(btex $M'$ etex,MM);

label.urt(btex $R$ etex,0.5[O,M]);
label.rt(btex $h$ etex,0.5[B,BB]);

fin;