Comme l'indique le titre du sujet, je me suis pencher sur proglin2d, dans les exemples. Je suis en plein dedans avec les premières.
Le fichier proglin2d.teg est très utile mais j'ai trouvé la variable globale infouegal pas très pratique. D'où ma macro Drawdomaine4 qui contrairement aux macros de ton fichier, hachure la partie qui ne convient pas.
- Code: Tout sélectionner
[{Drawdomaine4(f(x,y), "signe", [options])
SaveAttr(),
NewMac("f",String(%1),x,y),
$c:=f(0,0),
$a:=f(1,0)-c,
$b:=f(0,1)-c,
{représentation droite d'equation ax+by+c=0 suivant :
- la valeur de b
- signe de l'expression}
if b<>0 then
$A:=Xmin-(a*Xmin+c)/b*i, $B:=Xmax-(a*Xmax+c)/b*i,
else $A:=-c/a+Ymin*i, $B:=-c/a+Ymax*i
fi,
{Definition de au-dessus et en dessous de la droite}
tMin:=Xmin, tMax:=Xmax,
$L:=Get(Cartesienne(-a/b*x-c/b),0),
AuDessus:=[for $z in [Xmin,L,Xmax] do z od,
Reverse(for $z in L do Re(z)+Ymax*i od)],
EnDessous:=[for $z in [Xmin,L,Xmax] do z od,
Reverse(for $z in L do Re(z)+Ymin*i od)],
AGauche:=[A,B,Xmin+Ymax*i,Xmin+Ymin*i],
ADroite:=[A,B,Xmax+Ymax*i,Xmax+Ymin*i],
if StrComp(%2,"<") Or StrComp(%2,">") then
draw("line", [A,B], [LineStyle:=dashed, Close:=0, %3]),
else draw("line", [A,B], [LineStyle:=solid, Close:=0,%3]),
fi,
if StrComp(%2,"<") Or StrComp(%2,"<=") then
if b=0 then
if a>0 then
draw("line", ADroite, [Close:=1, LineStyle:=noline, %3])
elif a<0 then
draw("line", AGauche, [Close:=1, LineStyle:=noline, %3])
fi,
elif b>0 then
draw("line", AuDessus, [Close:=1, LineStyle:=noline, %3])
else
draw("line", EnDessous, [Close:=1, LineStyle:=noline, %3])
fi
else if b=0 then
if a>0 then
draw("line", AGauche, [Close:=1, LineStyle:=noline, %3])
elif a<0 then
draw("line", ADroite, [Close:=1, LineStyle:=noline, %3])
fi,
elif b>0 then
draw("line", EnDessous, [Close:=1, LineStyle:=noline, %3])
else
draw("line", AuDessus, [Close:=1, LineStyle:=noline, %3])
fi
fi,
NewMac("f","Nil"),
RestoreAttr()
]
Qui s'utilise comme suit :
- Code: Tout sélectionner
[
Fenetre(-5+5*i, 5-5*i, (1+i)),
Marges(0,0,0,0),
draw("domaine4",x+2*y-5,"<=",[Color:=navy, FillStyle:=full, FillOpacity:=0.5, FillColor:=navy]),
draw("domaine4",-5*x+2*y-5,">",[Color:=red, FillStyle:=fdiag, FillColor:=red]),
Arrows:=1, Axes(0,(1+i)), Arrows:=0,
]
Ce qui donne :
Il y a certainement des erreurs à corriger et des retouches à faire.
PS : Ne pas oublier de charger draw2d.mac, ça évitera de déranger le patron pour rien