La macro Interval.mac
2 participants
Page 1 sur 1
La macro Interval.mac
Bonsoir,
J'ai eu de besoin d'une petite macro pour représenter et hachurer des intervalles; j'avais déjà posé la question sur l'ancien forum et Patrick m'avait répondu, j'en avais gardé une trace mais il a fallu que je cherche dans les profondeurs de mes sauvegardes...
J'en ai profité pour la modifier,
Dans un élément graphique :
Donne :
Bonne soirée
J'ai eu de besoin d'une petite macro pour représenter et hachurer des intervalles; j'avais déjà posé la question sur l'ancien forum et Patrick m'avait répondu, j'en avais gardé une trace mais il a fallu que je cherche dans les profondeurs de mes sauvegardes...
J'en ai profité pour la modifier,
- Code:
{Interval( A, B, crochet gauche (0/1), crochet droit (0/1) [, hachures (0/1)] ) }
[ $h:=0.45, {hauteur des crochets}
$L:=0.125, {longueur du retour des crochets}
$A:=%1,$B:=%2, $u:=%2-%1,
u:=u/Abs(u), $v:=(-Im(u)*Yscale/Xscale+i*Re(u)*Xscale/Yscale)*h,
u:=L*u,
{ if nil(%5)=0 then markseg(A,B, Ent(Abs(B-A)*5), 0.2, 0.2,%6) fi, }
if %5=0 then
LineStyle:=noline, FillStyle:=bdiag, FillColor:=black,
Ligne([A+v/4, A-v/4, B-v/4, B+v/4],0),
elif %5=1 then
LineStyle:=noline, FillStyle:=fdiag, FillColor:=black,
Ligne([A+v/4, A-v/4, B-v/4, B+v/4],0),
fi,
LineStyle:=solid, FillStyle:=none,
Ligne(
[ if %3=0 then A+v/2-u, A+v/2, A-v/2, A-v/2-u, jump
else A+v/2+u, A+v/2, A-v/2, A-v/2+u, jump
fi,
A, B, jump,
if %4=1 then B+v/2-u, B+v/2, B-v/2, B-v/2-u, jump
else B+v/2+u, B+v/2, B-v/2, B-v/2+u, jump
fi], 0),
RestoreAttr(),
]
Dans un élément graphique :
- Code:
[
Fenetre(-2+i, 5-i, 1+i),
Marges(0.25,0.25,0.25,0.25),
Interval(-1,4,0,1,1),
Interval(1+0.75*i,2+0.75*i,1,0,0),
Interval(-1-0.75*i,4-0.75*i,1,0,1),
Interval(1-0.75*i,2-0.75*i,0,1,0),
]
Donne :
Bonne soirée
Re: La macro Interval.mac
Bonsoir Joffrey,
Et merci pour cette contribution. Il y a un RestoreAttr() à la fin mais il manque le SaveAttr() qui va avec au début de macro D'autre part la calcul de v est plus claire sous la forme: $v:=ScrCoordV(i*RealCoordV(u))*h,. Ce qui donnerait finalement:
Et merci pour cette contribution. Il y a un RestoreAttr() à la fin mais il manque le SaveAttr() qui va avec au début de macro D'autre part la calcul de v est plus claire sous la forme: $v:=ScrCoordV(i*RealCoordV(u))*h,. Ce qui donnerait finalement:
- Code:
{Interval( A, B, crochet gauche (0/1), crochet droit (0/1) [, hachures (0/1)] ) }
[ $h:=0.45, {hauteur des crochets}
$L:=0.125, {longueur du retour des crochets}
$A:=%1,$B:=%2, $u:=%2-%1,
u:=u/Abs(u), $v:=ScrCoordV(i*RealCoordV(u))*h,
u:=L*u,
SaveAttr(),
if %5=0 then
LineStyle:=noline, FillStyle:=bdiag, FillColor:=black,
Ligne([A+v/4, A-v/4, B-v/4, B+v/4],0),
elif %5=1 then
LineStyle:=noline, FillStyle:=fdiag, FillColor:=black,
Ligne([A+v/4, A-v/4, B-v/4, B+v/4],0),
fi,
LineStyle:=solid, FillStyle:=none,
Ligne(
[ if %3=0 then A+v/2-u, A+v/2, A-v/2, A-v/2-u, jump
else A+v/2+u, A+v/2, A-v/2, A-v/2+u, jump
fi,
A, B, jump,
if %4=1 then B+v/2-u, B+v/2, B-v/2, B-v/2-u, jump
else B+v/2+u, B+v/2, B-v/2, B-v/2+u, jump
fi], 0),
RestoreAttr() ]
Re: La macro Interval.mac
Re-bonsoir,
Pour que les hachures fassent toujours le même angle avec le segment indépendamment de le pente du segment, je te propose cette version:
Car depuis la dernière version (1.94-beta-7.4) la macro markseg accepte un angle en degrés comme dernier paramètre.
Pour que les hachures fassent toujours le même angle avec le segment indépendamment de le pente du segment, je te propose cette version:
- Code:
{Interval( A, B, crochet gauche (0/1), crochet droit (0/1) [, hachures (0/1)] ) }
[ $h:=0.45, {hauteur des crochets}
$L:=0.125, {longueur du retour des crochets}
$A:=%1,$B:=%2, $u:=%2-%1,
u:=u/Abs(u), $v:=ScrCoordV(i*RealCoordV(u))*h,
u:=L*u,
$long:= Abs(B-A), $n:=Ent(2*long/h),
markseg(A,B,n, long/n, h*sqrt(2)/2,if %5 then -45 else 45 fi),
Ligne(
[ if %3=0 then A+v/2-u, A+v/2, A-v/2, A-v/2-u, jump
else A+v/2+u, A+v/2, A-v/2, A-v/2+u, jump
fi,
A, B, jump,
if %4=1 then B+v/2-u, B+v/2, B-v/2, B-v/2-u, jump
else B+v/2+u, B+v/2, B-v/2, B-v/2+u, jump
fi], 0)
]
Car depuis la dernière version (1.94-beta-7.4) la macro markseg accepte un angle en degrés comme dernier paramètre.
Re: La macro Interval.mac
Bonjour,
J'avais remarqué ce petit changement en trifouillant dans TeXgraph.mac.
Super pour les modifs!
Merci
P.Fradin a écrit :
Car depuis la dernière version (1.94-beta-7.4) la macro markseg accepte un angle en degrés comme dernier paramètre.
J'avais remarqué ce petit changement en trifouillant dans TeXgraph.mac.
Super pour les modifs!
Merci
Re: La macro Interval.mac
Re-bonjour,
je me permet juste une petite modification, dans le code précédent :
Bonne journée
je me permet juste une petite modification, dans le code précédent :
- Code:
markseg(A,B,n, long/n, h*sqrt(2)/2,if %5=0 then -45 elif %5=1 then 45
else n=nil fi),
Bonne journée
Re: La macro Interval.mac
Bonjour,
On a l'impression que ça marche, mais c'est une impression. En fait il y a les hachures mais avec un angle nul (elles dépassent un peu au bout), il vaudrait mieux mettre:
On a l'impression que ça marche, mais c'est une impression. En fait il y a les hachures mais avec un angle nul (elles dépassent un peu au bout), il vaudrait mieux mettre:
- Code:
if %5<>Nil then
markseg(A,B,n, long/n, h*sqrt(2)/2, if %5=0 then -45 elif %5=1 then 45 fi)
fi ,
Page 1 sur 1
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum
|
|