Source
``````
input geometriesyr16;
typerepre:="persp";
figureespace(-10u,-10u,10u,10u);
Initialisation(5,-10,20,175);
color A,B,C,D,H,E,K,O,S;
A=(0,0,0);
C-A=(0,1,0);
B-iso(A,B)=0.5*(-cosd(50),sind(50),0);
H=ProjectionsurPlan(B,A,C,(0,0,1));
D=symetrie(B,H);
K-C=C-H;
E=symetrie(B,C);
O=iso(H,E);
S-O=(0,0,0.5);
path cc;
cc=cercles(O,E,O,E,O+Normal(O,S,E));
trace polygone(A,B,C);
trace segment(B,D);
trace segment(C,K);
trace polygone(B,H,E,K);
trace polygone(D,E,K,H) withpen pencircle scaled1.5bp;
trace chemin(D,K) dashed evenly;
trace chemin(E,H) dashed evenly;
trace codeperp(B,H,A,5);
trace codeperp(A,B,C,5);
trace codeperp(B,D,E,5);
nomme.lft(A);
nomme.bot(C);
nomme.top(B);
nomme.llft(H);
nomme.urt(K);
nomme.llft(D);
nomme.lrt(E);
nomme.llft(O);
nomme.top(S);
color ptcone[];
for k=0 step 10 until 360 :
ptcone[k div 10]-O=Distance(O,K)*((K-O)*cosd(k)/Distance(O,K)+(O+Normal(O,S,K)-O)*sind(k)/Distance(O,O+Normal(O,S,K)));
endfor;
pointilles:="oui";
for k=0 step 10 until 350:
NbS:=3;
Sommet1:=ptcone[k div 10];
Sommet2:=S;
Sommet3:=ptcone[(k+10) div 10];
NF:=1;
Fc[100]:=3;Fc[101]:=3;Fc[102]:=2;Fc[103]:=1;
DessineObjet;
endfor;
finespace;
end``````