TeXgraph
Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.
-45%
Le deal à ne pas rater :
WHIRLPOOL OWFC3C26X – Lave-vaisselle pose libre 14 couverts – ...
339 € 622 €
Voir le deal

La macro Interval.mac

2 participants

Aller en bas

La macro Interval.mac Empty La macro Interval.mac

Message  Joffrey Sam 31 Jan - 23:20

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...Suspect
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 :
La macro Interval.mac Exemple_intervalles

Bonne soirée

Joffrey

Nombre de messages : 179
Age : 42
Localisation : Vichy(03) / Clermont-Ferrand(63)
Date d'inscription : 13/06/2008

http://mathex.servhome.org

Revenir en haut Aller en bas

La macro Interval.mac Empty Re: La macro Interval.mac

Message  P.Fradin Dim 1 Fév - 0:24

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 Laughing 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() ]
P.Fradin
P.Fradin
Admin

Nombre de messages : 1133
Age : 62
Date d'inscription : 19/01/2008

http://texgraph.tuxfamily.org/

Revenir en haut Aller en bas

La macro Interval.mac Empty Re: La macro Interval.mac

Message  P.Fradin Dim 1 Fév - 1:03

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:

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.
P.Fradin
P.Fradin
Admin

Nombre de messages : 1133
Age : 62
Date d'inscription : 19/01/2008

http://texgraph.tuxfamily.org/

Revenir en haut Aller en bas

La macro Interval.mac Empty Re: La macro Interval.mac

Message  Joffrey Dim 1 Fév - 12:24

Bonjour,

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

Joffrey

Nombre de messages : 179
Age : 42
Localisation : Vichy(03) / Clermont-Ferrand(63)
Date d'inscription : 13/06/2008

http://mathex.servhome.org

Revenir en haut Aller en bas

La macro Interval.mac Empty Re: La macro Interval.mac

Message  Joffrey Dim 1 Fév - 13:02

Re-bonjour,

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),
Ce qui permet de dessiner un segment avec crochets mais sans hachures dès lors que le 5° paramètre n'est pas "rentré" ou différent de 0 ou de 1.

Bonne journée

Joffrey

Nombre de messages : 179
Age : 42
Localisation : Vichy(03) / Clermont-Ferrand(63)
Date d'inscription : 13/06/2008

http://mathex.servhome.org

Revenir en haut Aller en bas

La macro Interval.mac Empty Re: La macro Interval.mac

Message  P.Fradin Dim 1 Fév - 13:18

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:

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 ,
P.Fradin
P.Fradin
Admin

Nombre de messages : 1133
Age : 62
Date d'inscription : 19/01/2008

http://texgraph.tuxfamily.org/

Revenir en haut Aller en bas

La macro Interval.mac Empty Re: La macro Interval.mac

Message  Contenu sponsorisé


Contenu sponsorisé


Revenir en haut Aller en bas

Revenir en haut


 
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum
Ne ratez plus aucun deal !
Abonnez-vous pour recevoir par notification une sélection des meilleurs deals chaque jour.
IgnorerAutoriser