%% Un peu de couleurs
color couleurtrace;
couleurtrace := (0.3,0.4,1);
%% Procédure d'affectation
def affecte(suffix p)(expr coords,nom) =
pair p.c; string p.n;
p.c := coords;
p.n := nom;
enddef;
%% Lecture des coordonnées
vardef getcoordonnees suffix p = p.c enddef;
%% Lecture du nom
vardef getnom suffix p = p.n enddef;
%% La « procédure »
vardef placePolygone(text t) =
pair g,c__[] ; string n__[];
n_:=0;
forsuffixes pp = t:
c__[incr n_] = getcoordonnees pp;
n__[n_] = getnom pp;
endfor
g := (0,0);
for i=1 upto n_:
g := g + c__[i];
endfor
g := (1/n_)*g;
draw c__[1]--for i=2 upto n_:c__[i]--endfor cycle withcolor couleurtrace;
for i=1 upto n_:
draw c__[i] withpen pencircle scaled 2 withcolor couleurtrace;
label(n__[i],c__[i]+2*labeloffset*unitvector(c__[i]-g));
endfor;
enddef;
beginfig(1);
% Affectation des points
pair A,B,C,D;
A := (0,0);
B := (8cm,0);
C := (6cm,4cm);
D := (2cm,8cm);
affecte(a,A,"A");
affecte(b,B,"B");
affecte(c,C,"C");
% Construction du triangle ABC avec sommets nommés
placePolygone(a,b,c);
transform T;
T := identity shifted (0,-2.5cm);
A := A transformed T;
B := B transformed T;
C := C transformed T;
D := D transformed T;
affecte(a,A,"A");
affecte(b,B,"B");
affecte(c,C,"C");
affecte(d,D,"D");
% Construction du quadrilatère ABCD avec sommets nommés
couleurtrace := (1,0.6,0.1);
placePolygone(a,b,c,d);
endfig;
end
|