Diagrammes de Venn
2 participants
Page 1 sur 1
Diagrammes de Venn
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
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 : 62
Date d'inscription : 11/02/2008
Re: Diagrammes de Venn
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.
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.
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:
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$")
]
Re: Diagrammes de Venn
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
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 : 62
Date d'inscription : 11/02/2008
Re: Diagrammes de Venn
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
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 : 62
Date d'inscription : 11/02/2008
Re: Diagrammes de Venn
Tu as mis:
à la place de
PS: utilise les balises "code" pour mettre du code
- Code:
scale = 2
à la place de
- Code:
scale := 2
PS: utilise les balises "code" pour mettre du code
Re: Diagrammes de Venn
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.
Re: Diagrammes de Venn
Voilà une proposition pour la différence entre deux ensembles: setminus( contour1, contour2 ).
La définition de la macro setminus:
Un exemple:
donne:
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:
Encore deux questions
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
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 : 62
Date d'inscription : 11/02/2008
Re: Diagrammes de Venn
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.
Re: Diagrammes de Venn
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
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 : 62
Date d'inscription : 11/02/2008
Re: Diagrammes de Venn
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?
Re: Diagrammes de Venn
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
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 : 62
Date d'inscription : 11/02/2008
Re: Diagrammes de Venn
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
Re: Diagrammes de Venn
Merci
Charly
Charly
charly- Nombre de messages : 26
Age : 62
Date d'inscription : 11/02/2008
Page 1 sur 1
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum
|
|