Diagrammes de Venn

Voir le sujet précédent Voir le sujet suivant Aller en bas

Diagrammes de Venn

Message  charly le Mar 14 Avr - 15:44

Bonjour Patrick, bonjour à tous,

J'essaie de faire des diagrammes de Venn satisfaisants pour illustrer un cours. Ai essayé de les construire les patatoïdes avec des ellipses et avec des courbes de Bezier. Dessiner les diagrammes ne pose pas de problème. Le problème vient au momment de la colorisation ou de du hachurage.
Comment fais-tu pour hachurer ou coloriser $A \cap B \overline{C}$ par exemple?
Cordialement.

Charly

charly

Nombre de messages : 26
Age : 55
Date d'inscription : 11/02/2008

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Re: Diagrammes de Venn

Message  P.Fradin le Mar 14 Avr - 16:59

Bonjour Charly,

Il me semble que le sujet avait déjà été abordé, mais je reposte ici une macro qui dessine un ensemble. Comme ce n'est pas la première fois, il faudrait peut-être envisager d'incorporer cette macro dans TeXgraph.mac.

set( "nom", affixe centre, [options] )


Les options sont:

scale:= entier>0 : facteur d'échelle (1 par défaut).
rotation:= angle en degré (0 par défaut).
labels:= 0/1: affichage ou non du nom.

Code:

{ set(nom, centre, [options])
options:
        scale:= facteur d'échelle (1 par défaut)
        rotation:= inclinaison en degrés (0 par defaut)
        labels:= 0/1 (affichage du nom, 1 par défaut)
}
[scale:=1, rotation:=0, labels:=1,
$a:=4*i, $b:=-3-i/2, $d:=-bar(b), $c:=-a,  $v:=-5,
SaveAttr(), $x:=%3,
M:=matrix(exp(i*rotation*deg)*scale*z+%2),
ComposeMatrix(M),
Spline(v,a,b,c,d,a,v),
mtransform(Get(Spline(v,a,b,c,d,a,v),0),GetMatrix()), {on renvoie la liste des points}
if labels then
  LabelStyle:=0,
  Label(a+0.45*i/Abs(i), ["$",%1,"$"]),
fi,
RestoreAttr()
]

Cette macro dessine l'ensemble et renvoie la liste des points du contour, il est alors possible de récupérer cette liste dans une variable pour ensuite calculer une intersection ou une réunion grâce aus macros cap( liste1, liste2) et cup(liste1, liste2).

Exemple:

Code:

[
A:=set("A",-1.5, [ Color:=red, Width:=8, FillStyle:=bdiag,
                  FillColor:=red, rotation:=15
                ]),
B:=set("B",1.5, [ Color:=blue, Width:=8, FillStyle:=fdiag,
                  FillColor:=blue, rotation:=-15
                ]),
C:=cap(A,B),
Color:=forestgreen, Width:=8, FillStyle:=full, FillColor:=coral, Ligne(C,0),
Label(isobar(C), "$A\cap B$")
]


_________________
P.Fradin

P.Fradin
Admin

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

Voir le profil de l'utilisateur http://texgraph.tuxfamily.org/

Revenir en haut Aller en bas

Re: Diagrammes de Venn

Message  charly le Mar 14 Avr - 19:49

Merci, ça marche bien.

Cependant, je n'arrive pas à faire fonctionner l'option scale.

Voici ce que j'ai mis dans un élément utilisisateur après avoir copié ta macro et l'avoir nommée set:


[

A:=set("A",-1.5, [ Color:=red, Width:=8, FillStyle:=bdiag,
FillColor:=red, rotation:=90
]),
B:=set("B",1.5, [ Color:=blue, Width:=8, FillStyle:=fdiag,
FillColor:=blue, rotation:=90
]),

E:=set("E",0, [ scale=2, rotation:=90
]),

C:=cap(A,B),
Color:=forestgreen, Width:=8, FillStyle:=full, FillColor:=coral, Ligne(C,0),
Label(isobar(C), "$A\cap B$")


]

Or la commande scale ne semble avoir aucun effet.

Ou est la faute?

Merci de l'aide.

Salutations .

Charly

charly

Nombre de messages : 26
Age : 55
Date d'inscription : 11/02/2008

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Re: Diagrammes de Venn

Message  charly le Mar 14 Avr - 19:52

Rebonjour, encore moi!

Si A et B sont deux ensembles, y a-t-il une commande pour la différence de deux ensembles?

Merci.

Charly

charly

Nombre de messages : 26
Age : 55
Date d'inscription : 11/02/2008

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Re: Diagrammes de Venn

Message  P.Fradin le Mar 14 Avr - 19:54

Tu as mis:
Code:

scale = 2

à la place de
Code:

scale := 2

PS: utilise les balises "code" pour mettre du code Laughing

_________________
P.Fradin

P.Fradin
Admin

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

Voir le profil de l'utilisateur http://texgraph.tuxfamily.org/

Revenir en haut Aller en bas

Re: Diagrammes de Venn

Message  P.Fradin le Mar 14 Avr - 19:56

charly a écrit:Rebonjour, encore moi!

Si A et B sont deux ensembles, y a-t-il une commande pour la différence de deux ensembles?

Merci.

Charly

Pas encore, mais cela me semble possible. J'y réfléchis quand j'ai un moment.

_________________
P.Fradin

P.Fradin
Admin

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

Voir le profil de l'utilisateur http://texgraph.tuxfamily.org/

Revenir en haut Aller en bas

Re: Diagrammes de Venn

Message  P.Fradin le Mar 14 Avr - 22:57

Voilà une proposition pour la différence entre deux ensembles: setminus( contour1, contour2 ).

La définition de la macro setminus:

Code:

{setminus(C1, C2): renvoie la différence C1-C2 pour des courbes fermées orientées
 dans le meme sens, ne marche que pour des formes relativement simples}
   [$C1:=%1, $C2:=%2, $L:=C1 InterL C2,
    if L=Nil then if C1[1] Inside C2 then elif C2[1] Inside C1 then [C1,C2] else C1 fi
    else
       $L1:=L[1],
       {on réorganise C1 et C2 pour qu'elles commencent par L1}
       $C1':= (C1 CutB L1), Del(C1',0,1), C1:=[C1',(C1 CutA L1)],
       $C2':= (C2 CutB L1), Del(C2',0,1), C2:=[C2',(C2 CutA L1)],
       {on va parcourir L par paires (L1,L2)}
       $L2:=L1, Del(L,1,1), Insert(L,L1),
       for $Z in L do
           L1:=L2, $L2:=$Z,$A:=C1[2], {le point qui suit L1 est-il dans C2?}
           if not(A Inside %2) then {non, donc on prend la partie [L1,L2] de C1}
             $aux:=C1 CutA L2,
           else {oui, donc on prend la partie [L2,L1] de C2}
             $aux:=Reverse( (C2 CutB L2) CutA L1 ),
           fi,
           Del(aux,0,1), aux,
           C1:=C1 CutB L2 {on tronque C1 avant L2}
       od,
    fi]

Un exemple:

Code:

[A:=set("A",-1.5, [ Color:=red, Width:=8, FillStyle:=bdiag,
                  FillColor:=red, rotation:=15
                ]),
 B:=set("B",1.5, [ Color:=blue, Width:=8, FillStyle:=fdiag,
                  FillColor:=blue, rotation:=-15
                ]),
 C:=setminus(A,B),
 Color:=forestgreen, Width:=8, FillStyle:=full, FillColor:=coral, FillOpacity:=0.8,
 Ligne(C,1), LabelStyle:=right,
 Label(isobar(C)-0.25, "$A\setminus B$")


donne:

_________________
P.Fradin

P.Fradin
Admin

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

Voir le profil de l'utilisateur http://texgraph.tuxfamily.org/

Revenir en haut Aller en bas

Encore deux questions

Message  charly le Mer 15 Avr - 2:05

Merci beaucoup, tes modèles marchent bien.

Mais

1) Je dois être nul ou (non exlusif) fatigué, mais je n'arrive pas à dessiner un^ensembble inclus dans un autre. La correction faite lors de la faute
de saisie corrigée plus haut ne change rien chez moi...
2) Si j'exporte mon teg en latex, pas beau pour l'intersection, la couleur uniforme disparaît. Du coup je la transforme en teg, je fais deux trois
ajustements, mais je n'arrive pas à réduire la taille de mon image. Existe-t-il une solution?

Je vais me coucher. La nuit porte conseil.

Bonne soirée ou bonne nuit.

Charly

charly

Nombre de messages : 26
Age : 55
Date d'inscription : 11/02/2008

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Re: Diagrammes de Venn

Message  P.Fradin le Mer 15 Avr - 12:58

charly a écrit:Merci beaucoup, tes modèles marchent bien.

Mais

1) Je dois être nul ou (non exlusif) fatigué, mais je n'arrive pas à dessiner un^ensembble inclus dans un autre. La correction faite lors de la faute
de saisie corrigée plus haut ne change rien chez moi...

Quelle version de TeXgraph as-tu?


2) Si j'exporte mon teg en latex, pas beau pour l'intersection, la couleur uniforme disparaît. Du coup je la transforme en teg, je fais deux trois ajustements, mais je n'arrive pas à réduire la taille de mon image. Existe-t-il une solution?

Là j'avoue ne pas vraiment comprendre... Pour l'export LaTeX, c'est normal, il n'y a pas de remplissage solide en LaTeX, il faut préférer l'export pgf ou pstricks, bien plus puissants car plus modernes.

Quant à la taille globale de l'image, c'est la macro size (voir l'aide F1 rubrique "fonctions et macros graphiques". Exemple: size(10) donnera une image de 10x10cm.

_________________
P.Fradin

P.Fradin
Admin

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

Voir le profil de l'utilisateur http://texgraph.tuxfamily.org/

Revenir en haut Aller en bas

Re: Diagrammes de Venn

Message  charly le Mer 15 Avr - 14:05

Bonjour,

1) j'ai la version 1.94 beta
2) j'ai exporté mon dessin en teg puis fait un copier /coller dans mon code latex. pour pouvoirnotemmenmment modifier la position de certains labels)Mais je n'ai pas de "\unitlength 1cm" à modifier pour adapter la taille de ma figure. Ma procédure est-elle baroque?

J'espère avoir été un peu plus clair....

Cordialement.

Charly

charly

Nombre de messages : 26
Age : 55
Date d'inscription : 11/02/2008

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Re: Diagrammes de Venn

Message  P.Fradin le Mer 15 Avr - 14:22

charly a écrit:Bonjour,

1) j'ai la version 1.94 beta

Ok, donc normalement quand tu écris le mot "scale" dans TeXgraph il doit apparaitre en gris comme les mots "labels" et "rotation", tu confirmes?


2) j'ai exporté mon dessin en teg puis fait un copier /coller dans mon code latex. pour pouvoirnotemmenmment modifier la position de certains labels)Mais je n'ai pas de "\unitlength 1cm" à modifier pour adapter la taille de ma figure. Ma procédure est-elle baroque?

Le format teg est le format source de TeXgraph, le "copier/coller" dans le code latex ne me paraît pas clair! Sauf si tu cherches à mettre directement du code TeXgraph dans un document LaTeX, mais à ce moment là c'est dans un environnement:

Code:

\begin{texgraph}[name=ensemble, export=pgf, file, ...]

<code texgraph>

\end{texgraph}

C'est ça?

_________________
P.Fradin

P.Fradin
Admin

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

Voir le profil de l'utilisateur http://texgraph.tuxfamily.org/

Revenir en haut Aller en bas

Re: Diagrammes de Venn

Message  charly le Mer 15 Avr - 17:28

Merci, mes problèmes sont résolus.

Une petite remarque cependant, si on applique la macro setminus à un ensemble inclus dans un autre, pour trouver le complémentaire, il apparaît chez moi un segment reliant les deux courbes difficile à éliminer.

Charly

charly

Nombre de messages : 26
Age : 55
Date d'inscription : 11/02/2008

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Re: Diagrammes de Venn

Message  P.Fradin le Mer 15 Avr - 18:00

charly a écrit:
Une petite remarque cependant, si on applique la macro setminus à un ensemble inclus dans un autre, pour trouver le complémentaire, il apparaît chez moi un segment reliant les deux courbes difficile à éliminer.

Oui, c'est un cas limite en ce sens que la figure qui en résulte n'est pas si simple que cela, c'est une figure à trou. Je vais voir si on peut améliorer cela.

Si c'est juste pour dessiner un complémentaire on peut tricher en peignant d'abord le grand ensemble avec la couleur du complémentaire, puis en peignant ensuite le petit ensemble par dessus.

Sinon, voici un exemple où on dessine la différence sans dessiner le bord et avec un remplissage pair/impair (Eofill:=1), puis ensuite on dessine le bord sans remplissage:

Code:

[
A:=set("A",-1.5, [ Color:=red, Width:=8, FillStyle:=bdiag,
                  FillColor:=red, rotation:=15,scale:=1.5
                ]),
B:=set("B",-1.5, [ Color:=blue, Width:=8, FillStyle:=fdiag,
                  FillColor:=blue, rotation:=-15
                ]),
C:=setminus(A,B),
Eofill:=1, LineStyle:=noline,
Color:=forestgreen, Width:=8, FillStyle:=full, FillColor:=coral, FillOpacity:=0.6,
Ligne(C,1), {remplissage sans les bords}
LineStyle:=solid, FillStyle:=none, Ligne([A,jump,B],1), {bords sans remplissage}
Label(-3.6+4*i, "$A\setminus B$")
]



Dernière édition par P.Fradin le Mer 27 Mai - 18:37, édité 1 fois

_________________
P.Fradin

P.Fradin
Admin

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

Voir le profil de l'utilisateur http://texgraph.tuxfamily.org/

Revenir en haut Aller en bas

Re: Diagrammes de Venn

Message  charly le Jeu 16 Avr - 1:17

Merci

Charly

charly

Nombre de messages : 26
Age : 55
Date d'inscription : 11/02/2008

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Re: Diagrammes de Venn

Message  Contenu sponsorisé Aujourd'hui à 5:57


Contenu sponsorisé


Revenir en haut Aller en bas

Voir le sujet précédent Voir le sujet suivant Revenir en haut


 
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum