Lancers de dés
2 participants
Page 1 sur 1
Lancers de dés
Bonjour,
Je vous poste une petite macro que j'utilise en classe.
- le nombre de dés lancers (au delà de quatre, ça devient illisible)
- le nombre de lancers
et les options :
- choixrepresent:=nombre ou pourcent
- color:=couleur des bâtons
- decimales:=nombre de décimales
et
J'ai deux petits soucis :
1. Sous TeXmacs, malgré un choix de fenêtre dans les abscisses strictement positives, l'origine est toujours incluse dans la figure, à l'intérieur de TeXgraph, tout fonctionne à ce niveau.
2. Je viens de me rendre compte que l'option "decimales" ne fonctionne pas. Sûrement un petit oubli qui sera vite réglé.
Le plugin TeXmacs a été mis à jour avec une nouvelle entrée.
La macro a été ajoutée à tegraph_macros_texmacs.mac.
Emmanuël
Je vous poste une petite macro que j'utilise en classe.
- Code:
LancersDes = { LancersDes(nombre_de_dés(1ou2), nombre_de_lancers,[options])
options :
choixrepresent:=nombre, pourcent
decimales:=1
color}
[choixrepresent:=pourcent, color:=orange, decimales:=1,
SaveAttr(), $tmp:=%3,
$ND:=%1, $NL:=%2, $Rep:=Seq(0,k,1,6*ND),
Fenetre(ND-1+5*i*ND,ND*6+1-2*i,1+i),
for $k from 1 to NL do
$De:=0,
for $p from 1 to ND do $De:=De+Rand(6)+1 od,
replace(Rep,De,Rep[De]+1),
od,
FillStyle:=full, FillColor:=color,
for $m from 1*ND to 6*ND do
Ligne([-0.4+m,0.4+m,0.4+m+i*Rep[m]*5*ND/NL,-0.4+m+i*Rep[m]*5*ND/NL],1,0.1),
LabelSize:=normal,
if choixrepresent=nombre
then $tmp:=round(Rep[m],decimales), Label(m+i*(0.5+Rep[m]*5*ND/NL),tmp)
else $tmp:=round(Rep[m]*100/NL,decimales), Label(m+i*(0.5+Rep[m]*5*ND/NL),["",tmp," \%"])
fi,
LabelSize:=large, Label(m-0.5*i,m),
od,
Label((6*ND+ND)/2-1.5*i,[NL," lancers"]), size(12),
RestoreAttr(),
];
- le nombre de dés lancers (au delà de quatre, ça devient illisible)
- le nombre de lancers
et les options :
- choixrepresent:=nombre ou pourcent
- color:=couleur des bâtons
- decimales:=nombre de décimales
- Code:
LancersDes(2, 10,[choixrepresent:=nombre, color:=blue]),
et
- Code:
LancersDes(1, 30,[choixrepresent:=pourcent, color:=orange]),
J'ai deux petits soucis :
1. Sous TeXmacs, malgré un choix de fenêtre dans les abscisses strictement positives, l'origine est toujours incluse dans la figure, à l'intérieur de TeXgraph, tout fonctionne à ce niveau.
2. Je viens de me rendre compte que l'option "decimales" ne fonctionne pas. Sûrement un petit oubli qui sera vite réglé.
Le plugin TeXmacs a été mis à jour avec une nouvelle entrée.
La macro a été ajoutée à tegraph_macros_texmacs.mac.
Emmanuël
Re: Lancers de dés
Bonsoir Emmanuël,
Ah ces lancers de dés, jamais passés de mode! Trève de plaisanterie, j'ai testé ta macro et j'ai essayé d'apporter un tout petit peu d'assouplissement:
Par exemple:
donne:
PS1: la varaible globale color existe déjà, inutile de la déclarer dans ton fichier.
PS2: j'ai vu que tu as laissé les Eval( String( %... ) )
Ah ces lancers de dés, jamais passés de mode! Trève de plaisanterie, j'ai testé ta macro et j'ai essayé d'apporter un tout petit peu d'assouplissement:
- Code:
LancersDes = { LancersDes(nombre_de_dés(1ou2), nombre_de_lancers,[options])
options :
choixrepresent:=nombre, pourcent
decimales:=1
color}
[choixrepresent:=pourcent, color:=orange, decimales:=1,
SaveAttr(), LabelSize:=normal, $tmp:=%3,
$ND:=%1, $NL:=%2, $Rep:=Seq(0,k,1,6*ND),
view(ND-1,ND*6+1,-2,10), size( min([0.75*(2+5*ND),16])+12*i,0),
for $k from 1 to NL do
$De:=0,
for $p from 1 to ND do $De:=De+Rand(6)+1 od,
replace(Rep,De,Rep[De]+1),
od,
$maxi:=max(Rep),
FillStyle:=full, FillColor:=color,
for $m from 1*ND to 6*ND do
$y:=Rep[m]*(Ymax-0.5)/maxi,
Ligne([-0.4+m,0.4+m,0.4+m+i*y,-0.4+m+i*y],1,0.1),
if choixrepresent=nombre
then $tmp:=round(Rep[m],decimales), Label(m+i*(0.25/Yscale+y),tmp)
else $tmp:=round(Rep[m]*100/NL,decimales), Label(m+i*(0.25/Yscale+y),["",tmp," \%"])
fi,
od,
LabelSize:=large, LabelAngle:=0, LabelStyle:=0,
for m from ND to 6*ND do Label(m-0.5*i/Yscale,m) od,
Label((6*ND+ND)/2-1.5*i,[NL," lancers"]),
RestoreAttr(),
];
Par exemple:
- Code:
LancersDes(4, 1000, [choixrepresent:=pourcent, color:=orange, LabelAngle:=90, LabelStyle:=left ] )
donne:
PS1: la varaible globale color existe déjà, inutile de la déclarer dans ton fichier.
PS2: j'ai vu que tu as laissé les Eval( String( %... ) )
Re: Lancers de dés
Bonsoir Patrick,
Merci beaucoup pour les améliorations.
Je me permettrai juste d'éloigner un peu les pourcentages des bâtons
Et aussi de mettre un peu plus d'espace pour les étiquettes de pourcentages qui sont parfois tronquées :
Aurais-tu une réponse pour mes deux petits problèmes ?
Tout a été mis à jour.
Emmanuël
Merci beaucoup pour les améliorations.
Je me permettrai juste d'éloigner un peu les pourcentages des bâtons
- Code:
Label(m+i*(0.35/Yscale+y),tmp)
- Code:
size(12+6*i,0)
Et aussi de mettre un peu plus d'espace pour les étiquettes de pourcentages qui sont parfois tronquées :
- Code:
$y:=Rep[m]*(Ymax-1.5)/maxi,
Je vais corriger ça.PS1: la varaible globale color existe déjà, inutile de la déclarer dans ton fichier.
Et dire que j'ai modifié le script tm_texgraph uniquement pour ça. Il doit me falloir le temps de faire mon deuil. Ce qui ne devrait plus tarder maintenant.PS2: j'ai vu que tu as laissé les Eval( String( %... ) )
Aurais-tu une réponse pour mes deux petits problèmes ?
Tout a été mis à jour.
Emmanuël
Re: Lancers de dés
E. Corcelle a écrit:
Aurais-tu une réponse pour mes deux petits problèmes ?
Bonjour Emmanuël,
Je ne contaste pas le premier problème!
Pour les décimales, le problème est un peu technique: quand TeXgraph analyse la commande suivante:
- Code:
[Load("texgraph_macros_texmacs.mac"),
LancersDes(1, 30,[choixrepresent:=pourcent, color:=orange, decimales:=2])
]
Il ne peut pas savoir que decimales est la variable déclarée dans le fichier qui doit être chargée, car la commande est analysée jusqu'au bout avant d'être exécutée, donc pour lui decimales est une variable locale à la commande. C'est pour cela qu'il est préférable de charger les paquets ainsi:
- Code:
{preload="texgraph_macros_texmacs.mac"}
LancersDes(1, 30,[choixrepresent:=pourcent, color:=orange, decimales:=2])
et là ça devrait fonctionner.
Re: Lancers de dés
Bonsoir,
Il doit y avoir un soucis avec TeXmacs. Je viens de revérifier le problème de fenêtre, par exemple :
problème qui n'apparaît pas si la commande axe n'est pas utilisée.
Là, je bloque.
EDIT : Je viens de faire des tests en reprenant Eval(String(%...)) au lieu de %... . L'option decimale se remet alors à fonctionner.
Le retour de la vengeance de l'EvalString... Je savais bien qu'il ne se laisserait pas faire.
C'est bien ce que j'avais fait.Il ne peut pas savoir que decimales est la variable déclarée dans le fichier qui doit être chargée, car la commande est analysée jusqu'au bout avant d'être exécutée, donc pour lui decimales est une variable locale à la commande. C'est pour cela qu'il est préférable de charger les paquets ainsi:
- Code:
{preload="texgraph_macros_texmacs.mac"}
LancersDes(1, 30,[choixrepresent:=pourcent, color:=orange, decimales:=2])
Il doit y avoir un soucis avec TeXmacs. Je viens de revérifier le problème de fenêtre, par exemple :
problème qui n'apparaît pas si la commande axe n'est pas utilisée.
Là, je bloque.
EDIT : Je viens de faire des tests en reprenant Eval(String(%...)) au lieu de %... . L'option decimale se remet alors à fonctionner.
Le retour de la vengeance de l'EvalString... Je savais bien qu'il ne se laisserait pas faire.
Re: Lancers de dés
E. Corcelle a écrit:
Il doit y avoir un soucis avec TeXmacs. Je viens de revérifier le problème de fenêtre, par exemple :
problème qui n'apparaît pas si la commande axe n'est pas utilisée.
Là, je bloque.
Ce n'est pas un bug, c'est tout à fait normal, tu crées un élément graphique (axes), puis tu changes la fenêtre active, mais ce changement va s'appliquer aux éléments graphiques à venir, regarde:
Tu vois? La commande Border(1) délimite la fenêtre active plus les marges. Moralité: on ne dessine pas avant de modifier la fenêtre (sauf si c'est un effet voulu).
EDIT : Je viens de faire des tests en reprenant Eval(String(%...)) au lieu de %... . L'option decimale se remet alors à fonctionner.
Le retour de la vengeance de l'EvalString... Je savais bien qu'il ne se laisserait pas faire.
Ce n'est pas normal, chez moi l'option decimales fonctionne parfaitement (alors que j'ai viré tous les Eval(String(...)) ), dès que je charge le fichier de macros avec {preload=...}, par contre cela ne marche plus avec Load(..), mais c'est normal aussi.
PS: en deux mots ce que fait l'Eval(string(%1)) : il transforme l'argument %1 sous forme de chaine de caractères, puis demande à l'analyseur syntaxique d'analyser cette chaine qui devient alors une expression(c'est à dire un arbre en mémoire) que TeXgraph évalue ensuite, ouf!! c'est lourd! Mais quand TeXgraph analyse cette chaine, il connait la variable decimales puisqu'il a chargé le fichier de macros à ce moment là (même si on a chargé avec Load). Le résultat est donc le même que si on charge ces macros avant d'analyser la commande dans TeXmacs. Si cela ne marche pas chez toi, c'est qu'il y a un autre problème.
Re: Lancers de dés
Bonjour Patrick,
Sur celui-ci, il y a bien un problème, n'est-ce pas ? La partie blanche à gauche de 4 ne devrait pas apparaître.
J'ajoute que si je remplace axes(0,1+i) par Point(0) par exemple, tout fonctionne correctement.
Il y a donc l'air d'y avoir un conflit idéologique entre TeXmacs et axes/Axes.
Merci pour le temps passé surtout que tout fonctionne parfaitement à partir de TeXgraph.
Emmanuël
J'avais bien compris ce fonctionnement mais c'est mon exemple qui n'était vraiment pas bon.Tu vois? La commande Border(1) délimite la fenêtre active plus les marges. Moralité: on ne dessine pas avant de modifier la fenêtre (sauf si c'est un effet voulu).
Sur celui-ci, il y a bien un problème, n'est-ce pas ? La partie blanche à gauche de 4 ne devrait pas apparaître.
J'ajoute que si je remplace axes(0,1+i) par Point(0) par exemple, tout fonctionne correctement.
Il y a donc l'air d'y avoir un conflit idéologique entre TeXmacs et axes/Axes.
Je crois que j'ai tout compris. Le problème doit être ailleurs. Je vais continuer à chercher.PS: en deux mots ce que fait l'Eval(string(%1)) : il transforme l'argument %1 sous forme de chaine de caractères, puis demande à l'analyseur syntaxique d'analyser cette chaine qui devient alors une expression(c'est à dire un arbre en mémoire) que TeXgraph évalue ensuite, ouf!! c'est lourd! Mais quand TeXgraph analyse cette chaine, il connait la variable decimales puisqu'il a chargé le fichier de macros à ce moment là (même si on a chargé avec Load). Le résultat est donc le même que si on charge ces macros avant d'analyser la commande dans TeXmacs. Si cela ne marche pas chez toi, c'est qu'il y a un autre problème.
Merci pour le temps passé surtout que tout fonctionne parfaitement à partir de TeXgraph.
Emmanuël
Re: Lancers de dés
Effectivement, après une séie de tests il s'avère qu'il y a bien parfois un décalage de la figure. Cela ne vient pas de TeXmacs, ni de TeXgraph d'ailleurs. Le seul export qui donne se problème est epsc, cet export utilise l'export pstricks, mais le décalage n'apparaît pas si j'exporte la figure avec pstricks, le problème est donc après, c'est à dire lors de la conversion dvi -> eps et c'est la commande dvips -E qui manifestement entraîne ce problème, mais cela demande confirmation. Par contre si on ajoute dans la commande l'instruction OriginalCoord(0), qui oblige TeXgraph à travailler en coordonnées de la feuille (origine en bas à gauche de la figure et unités en cm sur les axes, mais c'est transparent pour l'utilisateur), je constate que ce décalage disparaît!
Re: Lancers de dés
Ça me rassure un peu. Il suffit donc que je rajoute la commande OriginalCoord(0) dans mon script de lancement.P.Fradin a écrit:Par contre si on ajoute dans la commande l'instruction OriginalCoord(0), qui oblige TeXgraph à travailler en coordonnées de la feuille (origine en bas à gauche de la figure et unités en cm sur les axes, mais c'est transparent pour l'utilisateur), je constate que ce décalage disparaît!
Merci. Je vais tester tout ça.
EDIT : Je viens de retester decimales qui ne me pose plus de problème avec $tmp:=%...
Je devais me tenir à côté de mes chausses.
Tout est bien qui finit bien encore un fois dans le monde merveilleux de TeXgraph.
Page 1 sur 1
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum
|
|