Dessiner des dominos

Tout ce qui concerne l'utilisation ou l'installation de LaTeX.

Modérateur: gdm_tex

Règles du forum
Merci d'éviter le style SMS dans vos messages et de penser à utiliser la fonction Recherche avant de poster un message. Pour joindre des fichiers à vos messages, consulter ce sujet.
> Penser à utiliser les balises Code pour poster du code.

Dessiner des dominos

Messagepar zorba » Mercredi 26 Juin 2013, 18:39

Bonjour,
je cherche un package ou un fichier Latex permettant de dessiner des dominos, par exemple en passant la commande \domino{2}{4} avec éventuellement une option pour choisir l'orientation horizontale ou verticale.
Je n'ai rien trouver sur le forum, ce qui me surprend un peu, vu le nombre élevé d'exercices proposés dans les livres de seconde et de première.
Je remercie d'avance pour tout piste me permettant d'éviter des copies d'écrans assez pénibles à gérer dans des documents.
Pierre.
On se lasse de tout, excepté d'apprendre. Virgile
zorba
Giga-utilisateur
 
Messages: 522
Inscription: Lundi 01 Juin 2009, 10:35
Statut actuel: Actif et salarié

Publicité

Re: Dessiner des dominos

Messagepar rebouxo » Jeudi 27 Juin 2013, 00:23

Bon, j'ai commis ceci, car je n'ai pas trouver d'extension toute faite.

Une première solution serait d'utiliser la commande \Cube{1}, mais il n'y a pas de \Cube{0}... Et de les combiner. En tous les cas, une bonne solution serait de dessiner des éléments d'une fonte. Mais, je ne sais pas faire.

Si vraiment une telle extension n'existe pas, cela serait intéressant d'en faire une. Si possible avec la possibilité de changer la taille (ici, c'est possible, mais via un changement de longueur, on doit pouvoir faire des choses plus sympathique). Le changement de taille est possible, mais il faudrait gérer le diamètre du point autrement que par un simple 15% de la taille du domino. C'est bien pour des petits domino, mais pour des gros, c'est un peu petit.

Autre idée, faire des domino sur fond noir.

Si on pouvait aussi faire cela sans que ce soit des latex-dépendant, ni pstricks dépendant d'ailleurs, pour faire ce genre de truc, on doit pouvoir passer par epic. Sinon, on peut certainement faire une version pstricks et une version TiKz, mais bon, Christian va râler, et il aura raison.



But, it works !

Code: Tout sélectionner
\documentclass[12pt,french,a4paper]{article}

\usepackage[T1]{fontenc}
\usepackage[latin1]{inputenc}
\usepackage{pstricks}
\usepackage{babel}
\usepackage{calc}


\newlength{\psDL}
\setlength{\psDL}{1cm}
\newlength{\psDomiPtRadius}
\setlength{\psDomiPtRadius}{\psDL*\real{0.15}}
\newlength{\psPtx}
\newlength{\psPty}
\newif\ifGD
\newcommand{\psDomiPt}[1]{\psdot[dotsize=\psDomiPtRadius](#1)}
\newcommand{\psDomiCoor}{%
  \ifGD
    \psDomiPt{\psPtx,\psPty}%
    \else
    \psDomiPt{-\psPtx,\psPty}%
    \fi
}

\newcommand{\PourZero}
{%
  \setlength{\psPtx}{0cm}
  \setlength{\psPty}{0cm}
}%

\newcommand{\PourUn}
{%
    \setlength{\psPtx}{\psDL*\real{0.5}}%
    \setlength{\psPty}{\psDL*\real{0.5}}%
    \psDomiCoor
}%

\newcommand{\PourDeux}
{%
    \setlength{\psPtx}{\psDL*\real{0.75}}
    \setlength{\psPty}{\psDL*\real{0.75}}
    \psDomiCoor
    \setlength{\psPtx}{\psDL*\real{0.25}}
    \setlength{\psPty}{\psDL*\real{0.25}}
    \psDomiCoor
}%

\newcommand{\PourTrois}
{%
    \setlength{\psPtx}{\psDL*\real{0.5}}
    \setlength{\psPty}{\psDL*\real{0.2}}
    \psDomiCoor
    \setlength{\psPty}{\psDL*\real{0.5}}
    \psDomiCoor
    \setlength{\psPty}{\psDL*\real{0.8}}
    \psDomiCoor
}%


\newcommand{\PourQuatre}
{%
    \setlength{\psPtx}{\psDL*\real{0.75}}
    \setlength{\psPty}{\psDL*\real{0.75}}
    \psDomiCoor
    \setlength{\psPtx}{\psDL*\real{0.25}}
    \setlength{\psPty}{\psDL*\real{0.25}}
    \psDomiCoor
    \setlength{\psPtx}{\psDL*\real{0.75}}
    \setlength{\psPty}{\psDL*\real{0.25}}
    \psDomiCoor
    \setlength{\psPtx}{\psDL*\real{0.25}}
    \setlength{\psPty}{\psDL*\real{0.75}}
    \psDomiCoor
}%

\newcommand{\PourCinq}
{%
    \setlength{\psPtx}{\psDL*\real{0.75}}
    \setlength{\psPty}{\psDL*\real{0.75}}
    \psDomiCoor
    \setlength{\psPtx}{\psDL*\real{0.25}}
    \setlength{\psPty}{\psDL*\real{0.25}}
    \psDomiCoor
    \setlength{\psPtx}{\psDL*\real{0.75}}
    \setlength{\psPty}{\psDL*\real{0.25}}
    \psDomiCoor
    \setlength{\psPtx}{\psDL*\real{0.25}}
    \setlength{\psPty}{\psDL*\real{0.75}}
    \psDomiCoor
    \setlength{\psPtx}{\psDL*\real{0.5}}
    \setlength{\psPty}{\psDL*\real{0.5}}
    \psDomiCoor
}%


\newcommand{\PourSix}
{%
    \setlength{\psPtx}{\psDL*\real{0.25}}
    \setlength{\psPty}{\psDL*\real{0.2}}
    \psDomiCoor
    \setlength{\psPty}{\psDL*\real{0.5}}
    \psDomiCoor
    \setlength{\psPty}{\psDL*\real{0.8}}
    \psDomiCoor
    \setlength{\psPtx}{\psDL*\real{0.75}}
    \setlength{\psPty}{\psDL*\real{0.2}}
    \psDomiCoor
    \setlength{\psPty}{\psDL*\real{0.5}}
    \psDomiCoor
    \setlength{\psPty}{\psDL*\real{0.8}}
    \psDomiCoor

}%

\newcommand{\psDomino}[2]
{%
  \begin{pspicture}(-\psDL,0)(\psDL,\psDL)
    \pspolygon[linearc=0.15,linewidth=2pt](-\psDL,0)(-\psDL,\psDL)%
    (\psDL,\psDL)(\psDL,0)%
    \addtolength{\psDL}{-0.1cm}
    \psline(0,0.1)(0,\psDL)
    \GDfalse
    \ifcase#1\relax
    \PourZero
    \or
    \PourUn
    \or
    \PourDeux
    \or
    \PourTrois
    \or
    \PourQuatre
    \or
    \PourCinq
    \or
    \PourSix
    \fi
    \GDtrue
    \ifcase#2\relax
    \PourZero
    \or
    \PourUn
    \or
    \PourDeux
    \or
    \PourTrois
    \or
    \PourQuatre
    \or
    \PourCinq
    \or
    \PourSix
    \fi
  \end{pspicture}%
}%
\begin{document}
\parindent=0cm
\psDomino{0}{0} \psDomino{0}{0}

\psDomino{1}{0} \psDomino{0}{1}

\psDomino{2}{0} \psDomino{0}{2}

\psDomino{3}{0} \psDomino{0}{3}

\psDomino{4}{0} \psDomino{0}{4}

\psDomino{5}{0} \psDomino{0}{5}

\psDomino{6}{0} \psDomino{0}{6}

\setlength{\psDL}{3cm}

\psDomino{0}{0} \psDomino{0}{0}

\psDomino{1}{0} \psDomino{0}{1}

\psDomino{2}{0} \psDomino{0}{2}

\psDomino{3}{0} \psDomino{0}{3}

\psDomino{4}{0} \psDomino{0}{4}

\psDomino{5}{0} \psDomino{0}{5}

\psDomino{6}{0} \psDomino{0}{6}

\end{document}


Si quelqu'un veut m'aider à faire une extension, je suis preneur.

Olivier
A line is a point that went for a walk. Paul Klee
Par solidarité, pas de MP
rebouxo
Modérateur
 
Messages: 6863
Inscription: Mercredi 15 Février 2006, 13:18
Localisation: le havre
Statut actuel: Actif et salarié | Enseignant

Re: Dessiner des dominos

Messagepar zorba » Jeudi 27 Juin 2013, 04:22

Bonjour,
c'est ce que j'attendais trouver dans un package.
J'essaie de comprendre le code utilisé qui reste beaucoup trop compliqué pour comprendre toutes les finesses de Tex et Latex.
Merci beaucoup, en attendant un éventuel \usepackage{domino} disponible sur CTAN avec sa documentation.
Bonne journée.
On se lasse de tout, excepté d'apprendre. Virgile
zorba
Giga-utilisateur
 
Messages: 522
Inscription: Lundi 01 Juin 2009, 10:35
Statut actuel: Actif et salarié

Re: Dessiner des dominos

Messagepar un bon petit » Jeudi 27 Juin 2013, 12:18

rebouxo a écrit:Bon, j'ai commis ceci, car je n'ai pas trouver d'extension toute faite.

Normal, il s'agit de dessin très simple.
Je sais bien que la mode (absurde) est à « une question, un package », mais là, il ne faut pas exagérer. Il va sans dire que ni tikz ni pstricks n'ont a être utilisé pour un dessin aussi sommaire.

N'ayant aucune indication quand à la position souhaitée des dominos par rapport à la ligne de base, je propose de les dessiner centrés par rapport à cette dernière.

Code: Tout sélectionner
\documentclass[10pt]{article}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{pict2e,graphicx}
\newdimen\dominosize% côté du petit côté d'un domino
\dominosize=.7cm

\newdimen\dominosep% espace autour d'un domino
\dominosep=2pt

\def\dominoradius{0.1}% rayon des angles
\def\dominocircle{.15}% rayon des disques

\makeatletter
\newcommand*\vdomino[2]{\rotatebox[origin=c]{90}{\domino{#1}{#2}}}

\newcommand*\domino[3][h]{%
   \quitvmode\lower\dimexpr.5\dominosize+\dominosep\relax\hbox{%
      \vbox{%
         \kern\dominosep
         \hbox{%
            \kern\dominosep
            \unitlength\dominosize
            \picture(2,1)%
               \put(1,.5){%
                  \oval[\dominoradius](2,1)%
                  \put(0,-.4){\line(0,1){.8}}%
               }%
               \put(0,0){\domino@num{#2}}%
               \put(1,0){\domino@num{#3}}%
            \endpicture
            \kern\dominosep
         }%
      \kern\dominosep
      }%
   }%
}

\newcommand*\domino@num[1]{%
   \let\domi@next\@firstofone%
   \ifnum#1<1 \let\domi@next\@gobble\fi
   \ifnum#1>6 \let\domi@next\@gobble\fi
   \domi@next{%
      \ifnum#1>1 \domino@pixel(.25,.25)\domino@pixel(.75,.75)\fi
      \ifnum#1=6 \domino@pixel(.5,.25)\domino@pixel(.5,.75)\fi
      \ifnum#1>4 \domino@pixel(.75,.25)\fi
      \ifodd#1 \domino@pixel(.5,.5)\fi
      \ifnum#1>3 \domino@pixel(.25,.75)\domino@pixel(.75,.25)\fi
   }%
}

\def\domino@pixel(#1,#2){\put(#1,#2){\circle*\dominocircle}}
\makeatother
\begin{document}
Un domino horizontal \domino{2}{6} et un vertical \vdomino{3}{5}

\dominosize=1.5cm
\domino14\domino53\domino62
\end{document}
un bon petit
Giga-utilisateur
 
Messages: 663
Inscription: Vendredi 12 Juin 2009, 21:35
Localisation: Chambéry
Statut actuel: Actif et salarié | Enseignant

Re: Dessiner des dominos

Messagepar rebouxo » Jeudi 27 Juin 2013, 12:21

Il n'y a pas grand chose.
Quelques longueurs pour pouvoir agrandir le domino.

Un booléen (ifGD) pour gérer la partie Gauche ou droite (à ce propose le 2 n'est pas joli, puisque les points ne sont pas orientés dans la même direction.

Une commande qui affiche les points : \psDomiPt

Une commande qui fixe les coordonnées à gauche ou à droite : \psDomiCoor.
Ensuite la liste des cas, pour afficher les points (\PourUn à \PourSix).

\psDomino trace le domino, puis place les points. C'est le rôle du \ifcase.

C'est tout. Il n'y a clairement pas de programmation très difficile. Le plus dur c'est de placer les points...

Il reste un truc à faire : un domino vertical. Moi je le ferais bien avec \domino*{}{}, tiens !

@Christian : même simple, je trouve que cela manque. Certes, ce n'est pas compliqué, mais même sans être compliqué cela prend plus de temps que un bon coup de \usepackage.
Le \usepackage pourrait aussi gérer la position sur la ligne, la taille des domino, leur position verticale ou horizontale ou des styles de domino (moi j'aime bien les noirs)... Et représenter une partie de domino ? Bref, pour le fun. Et je suis d'accord avec toi, il n'y a pas besoin d'utiliser pstricks ou tikz. Mais comme pour le coup je n'utilise jamais pict2e, je dois dire que j'y ai pensé après. Parce qu'il y a encore plus simple : scanner des dominos et faire des \dominoxy (x, y étant une lettre entre a et g).

Olivier
A line is a point that went for a walk. Paul Klee
Par solidarité, pas de MP
rebouxo
Modérateur
 
Messages: 6863
Inscription: Mercredi 15 Février 2006, 13:18
Localisation: le havre
Statut actuel: Actif et salarié | Enseignant

Re: Dessiner des dominos

Messagepar cpo » Jeudi 27 Juin 2013, 18:20

Bonjour,

On peut aussi utiliser une fonte qui contient les caractères du bloc « Pièces de domino ».

Voici un exemple qui utilise LuaLaTeX (j’utilise lua pour calculer parce que je ne sais pas le faire en TeX) :

Code: Tout sélectionner
\documentclass{minimal}

\usepackage{luatextra}

\newfontfamily\dominofont{DejaVu Sans}

\newcommand*\domino[3][H]{%
  {\dominofont\char%
  \directlua{
    local n = tonumber('#2') * 7 + tonumber('#3')
    if '#1' == 'V' then
      n = n + 50
    end
    tex.print(127025 + n)
  }}}

\begin{document}
Ici \domino{2}{3} et \domino[V]{4}{2}.
\end{document}


Et on doit pouvoir faire plus élégant que l’argument V pour obtenir une pièce verticale.
cpo
Déca-utilisateur
 
Messages: 33
Inscription: Samedi 06 Octobre 2012, 08:22
Statut actuel: Post-bac | Doctorat

Re: Dessiner des dominos

Messagepar un bon petit » Jeudi 27 Juin 2013, 20:41

cpo a écrit:j’utilise lua pour calculer parce que je ne sais pas le faire en TeX

Ok mais lorsque calculer avec etex est plus simple qu'avec lua, il faudrait peut être penser à démystifier TeX, non ? :mrgreen:

Code: Tout sélectionner
\newcommand*\domino[3][H]{%
  {\dominofont\char
   \numexpr #2*7 + #3
      \if #1V +50 \fi
      +127025
   \relax
   }}
un bon petit
Giga-utilisateur
 
Messages: 663
Inscription: Vendredi 12 Juin 2009, 21:35
Localisation: Chambéry
Statut actuel: Actif et salarié | Enseignant

Re: Dessiner des dominos

Messagepar cpo » Dimanche 30 Juin 2013, 09:01

Merci ! J’ai bien fait de demander, comme ça j’ai appris un truc. Il me reste à aller lire le manuel d’ε-TeΧ…

En attendant voici une commande \domino dont la version étoilée produit un domino vertical. Ça devrait fonctionner avec XeTeX comme LuaTeX.

Code: Tout sélectionner
\documentclass{minimal}

\usepackage{fontspec}

\newfontfamily\dominofont{DejaVu Sans}

\makeatletter
\newcommand*\d@mino[3]{%
  {\dominofont\char
   \numexpr #1 + #2*7 + #3
   \relax
 }}
\newcommand*\domino{\@ifstar{\d@mino{127075}}{\d@mino{127025}}}
\makeatother

\begin{document}
Ici \domino{2}{3} et \domino*{4}{2}.
\end{document}
cpo
Déca-utilisateur
 
Messages: 33
Inscription: Samedi 06 Octobre 2012, 08:22
Statut actuel: Post-bac | Doctorat

Re: Dessiner des dominos

Messagepar Léonard » Dimanche 30 Juin 2013, 10:25

Bonjour !

Bien que je n'aurais certainement jamais à dessiner de dominos avec LaTeX (quioique, on ne sait jamais :roll: ), j'ai testé cet ECM, par simple curiosité. S'il fonctionne parfaitement chez moi avec LuaLaTeX, ce n'est pas le cas avec XeLaTeX, qui produit des warnings dans le log :

Code: Tout sélectionner
** WARNING ** Invalid CMap mapping entry. (ignored)
** WARNING ** Unable to read OpenType/TrueType Unicode cmap table.
** WARNING ** Failed to load ToUnicode CMap for font "DejaVuSans"


Du coup, je me retrouve avec de simples rectangles verticaux vides... Pour info, je suis sous MacTeX 2012 (qui est basé sur TeXLive).
Léonard
Déca-utilisateur
 
Messages: 28
Inscription: Mercredi 27 Avril 2011, 19:00
Statut actuel: Post-bac | Licence

Re: Dessiner des dominos

Messagepar un bon petit » Dimanche 30 Juin 2013, 21:24

Léonard a écrit:Bien que je n'aurais certainement jamais à dessiner de dominos avec LaTeX (quioique, on ne sait jamais :roll: ), j'ai testé cet ECM, par simple curiosité

Cet ECM ne dessine pas des dominos, il ne fait qu'afficher des glyphes d'une police et donc ne répond pas exactement à la question.

J'aurais bien aimé savoir ce que pense l'OP alias « zorba » de toutes ces solutions à sa question.
un bon petit
Giga-utilisateur
 
Messages: 663
Inscription: Vendredi 12 Juin 2009, 21:35
Localisation: Chambéry
Statut actuel: Actif et salarié | Enseignant

Re: Dessiner des dominos

Messagepar zorba » Lundi 01 Juillet 2013, 03:47

Bonjour,
je suis tous les messages du fil "Dessiner des dominos", sans pouvoir vraiment participer aux débats mes compétences et mes connaissances en programmation Tex étant très limitées.
Je n'utilise que Miktex 2.9 sous TexMaker et je n'ai aucune expérience en Lua, Xetex et tous les autres outils ou programmes. À vrai dire, pour l'usage de je fais de Latex, je n'en ai, me semble-t-il, pas vraiment besoin.
La solution de Rebouxo dans le fil du Jeu 27 Juin 2013 0:23 me permet de dessiner proprement ce que je cherchais à faire, au prix de lignes de code pas très lisibles pour moi, mais je m'en contente très bien pour le moment.
C'est sur que mettre ce code dans un petit package (une question, un package pour ne pas réinventer la roue) serait plus élégant et probablement plus facile à utiliser par d'autres personnes. Je ne suis pas au niveau pour le faire.
Je ne pense pas mettre ce sujet en Résolu, la conversation restant très animée et encore ouverte.
Merci à tous pour les réponses et les échanges d'idées sur ce petit jeu.
Pierre.

PS : Que signifie OP?
On se lasse de tout, excepté d'apprendre. Virgile
zorba
Giga-utilisateur
 
Messages: 522
Inscription: Lundi 01 Juin 2009, 10:35
Statut actuel: Actif et salarié

Re: Dessiner des dominos

Messagepar Léonard » Lundi 01 Juillet 2013, 06:09

un bon petit a écrit:
Léonard a écrit:Bien que je n'aurais certainement jamais à dessiner de dominos avec LaTeX (quioique, on ne sait jamais :roll: ), j'ai testé cet ECM, par simple curiosité

Cet ECM ne dessine pas des dominos, il ne fait qu'afficher des glyphes d'une police et donc ne répond pas exactement à la question.


Effectivement, autant pour moi... XeTeX rencontrerait-il donc un problème avec la font DejaVu Sans que ne rencontre pas LuaLaTeX ?

zorba a écrit:C'est sur que mettre ce code dans un petit package (une question, un package pour ne pas réinventer la roue) serait plus élégant et probablement plus facile à utiliser par d'autres personnes. Je ne suis pas au niveau pour le faire.
PS : Que signifie OP?


Créer un package regroupant uniquement un petit nombre de commandes et pour ton usage personnel n'a rien d'extraordinaire ! La base de la création est d'ailleurs plutôt bien expliquée dans l'article Wikibook sur LaTeX.
Léonard
Déca-utilisateur
 
Messages: 28
Inscription: Mercredi 27 Avril 2011, 19:00
Statut actuel: Post-bac | Licence

Re: Dessiner des dominos

Messagepar un bon petit » Lundi 01 Juillet 2013, 06:32

zorba a écrit:C'est sur que mettre ce code dans un petit package (une question, un package pour ne pas réinventer la roue) serait plus élégant et probablement plus facile à utiliser par d'autres personnes. Je ne suis pas au niveau pour le faire.

Le dessin proprement dit est tout à fait élémentaire, quel que soit son niveau en programmation. Je parle pour mon code, pas pour celui d'Olivier.

Un rectangle arrondi 2 fois plus long que large. Un ligne verticale au milieu sur 80% de la hauteur.
Pour les points représentant les nombres, on les affiche selon les conditions sur le nombre (les coordonnées sont à comprendre comme dans un carré de côté 1). Au fait, je remarque que la ligne \ifnum#1>4 est de trop puisque le point affiché l'est de toutes façons avec la ligne \ifnum#1>3.

Bref, la seule chose vraiment intéressante et plutôt difficile aurait été d'inventer une méthode et une syntaxe pour placer ces dominos les uns par rapport aux autres. Là, on augmente le niveau mais je n'ai pas le temps pour réfléchir à tout ça et d'ailleurs, ce n'est même pas une demande de ta part.

zorba a écrit:PS : Que signifie OP?

Au lieu de cet anglicisme, j'aurais du écrire "PO" puisqu'en français, cela signifie "posteur originel".
un bon petit
Giga-utilisateur
 
Messages: 663
Inscription: Vendredi 12 Juin 2009, 21:35
Localisation: Chambéry
Statut actuel: Actif et salarié | Enseignant

Re: Dessiner des dominos

Messagepar nikopol » Mercredi 03 Juillet 2013, 20:32

bonsoir
je me permet de m’insérer dans la discussion.
Je suis admiratif des codes qui sont bien loin de mon niveau.
Je suis d'accord de ne pas avoir un question un package, mais avoir un package qui regrouperait plusieurs choses du meme genre (domino, dés, cartes , ... ) pourrait etre bien pratique
nikopol
 


Retourner vers LaTeX

 


  • Articles en relation
    Réponses
    Vus
    Dernier message

Qui est en ligne

Utilisateurs parcourant ce forum: Baidu [Spider], Bing [Bot], Yandex [Bot] et 6 invités