Dans cette vidéo, on voit des formes géométriques construites à partir des tables de multiplications représentées dans un modulo (si j'ai bien compris…).

Et, évidemment, j'ai été séduit par la beauté de la chose et l'idée m'est venue de vouloir faire la même chose avec LaTeX. TikZ devrait répondre à ma curiosité, n'est-ce pas ?

Quelqu'un d'entre vous a-t-il déjà essayé ?

J'ai cherché des représentations de ce type, mais n'ai rien trouvé (probablement faute d'avoir utilisé les bons mots-clé). On aura compris que je ne suis pas matheux pour deux ronds…

Posée 07 Déc '19, 18:16

fred02840's gravatar image

fred02840
4.2k30164189
Taux d'acceptation : 16%

Modifiée 08 Déc '19, 13:54

Pathe's gravatar image

Pathe ♦♦
7.5k42203251


Voici une idée.

Après une petite réflexion, il me semble que c'est plus pratique avec des arguments donc la commande à utiliser comme suit \mttablemultiplicationmodulo[rayon]{unite}{nombremax} avec rayon est 2cm par défaut.

Ouvrir dans l'éditeur Overleaf
\documentclass[a4paper,french]{article}
\usepackage{lmodern}
\usepackage[T1]{fontenc}
\usepackage{babel}
\usepackage[margin=2.5cm]{geometry}
\usepackage{tikz}

\newcommand{\mttablemultiplicationmodulo}[3][2cm]{%
\begin{tikzpicture}[rotate=90]
\draw (0,0) circle (#1);
\foreach \i in {0,...,\numexpr#3-1} {
    \fill[green!40!black] (\i*36/#3*10:#1) circle (.4mm);
    \draw ({(\i+1)*36/#3*10}:#1)--({(mod(\i*#2,#3)+1)*36/#3*10}:#1);}
\end{tikzpicture}}

\begin{document}
\section{Multiplication par 2}
\mttablemultiplicationmodulo{2}{10}
\mttablemultiplicationmodulo{2}{60}
\mttablemultiplicationmodulo{2}{100}
\section{Multiplication par 3}
\mttablemultiplicationmodulo{3}{10}
\mttablemultiplicationmodulo{3}{60}
\mttablemultiplicationmodulo{3}{100}
\section{Multiplication par 6}
\mttablemultiplicationmodulo{6}{10}
\mttablemultiplicationmodulo{6}{60}
\mttablemultiplicationmodulo{6}{100}
\end{document}

Réponse originale.

On a définie trois macros.

  • \mtcircle pour sauvegarder la valeur du rayon du cercle.
  • \mtunite le nombre dont on veut représenter la table de multiplication
  • \mtpoints le nombre des points a mettre sur le cercle, (hauteur de la table)

el la macro \mttablemultiplicationmodulo qui fait le tikz.

Ouvrir dans l'éditeur Overleaf
\documentclass[a4paper,french]{article}
\usepackage{lmodern}
\usepackage[T1]{fontenc}
\usepackage{babel}
\usepackage[margin=2.5cm]{geometry}
\usepackage{tikz}

\newcommand{\mtcircle}{2cm}

\newcommand{\mttablemultiplicationmodulo}{%
\begin{tikzpicture}[rotate=90]
\draw (0,0) circle (\mtcircle);
\foreach \i in {0,...,\numexpr\mtpoints-1} {
    \fill[green!40!black] (\i*36/\mtpoints*10:\mtcircle) circle (.4mm);
    \draw ({(\i+1)*36/\mtpoints*10}:\mtcircle)--({(mod(\i*\mtunite,\mtpoints)+1)*36/\mtpoints*10}:\mtcircle);}
\end{tikzpicture}}

\begin{document}
\section{Multiplication par 2}
\newcommand{\mtunite}{2}
\newcommand{\mtpoints}{10}
\mttablemultiplicationmodulo
\renewcommand{\mtpoints}{60}
\mttablemultiplicationmodulo
\renewcommand{\mtpoints}{100}
\mttablemultiplicationmodulo
\section{Multiplication par 3}
\renewcommand{\mtunite}{3}
\renewcommand{\mtpoints}{10}
\mttablemultiplicationmodulo
\renewcommand{\mtpoints}{60}
\mttablemultiplicationmodulo
\renewcommand{\mtpoints}{100}
\mttablemultiplicationmodulo
\section{Multiplication par 6}
\renewcommand{\mtunite}{6}
\renewcommand{\mtpoints}{10}
\mttablemultiplicationmodulo
\renewcommand{\mtpoints}{60}
\mttablemultiplicationmodulo
\renewcommand{\mtpoints}{100}
\mttablemultiplicationmodulo
\end{document}
Lien permanent

Publiée 07 Déc '19, 20:57

touhami's gravatar image

touhami
9.7k410
Taux d'acceptation : 51%

Modifiée 07 Déc '19, 21:13

@touhami. Je n'ose imaginer l'animation qu'on pourrait obtenir avec beamer. J'essaierai cela quand j'aurai un moment

(27 Déc '19, 12:14) fred02840 fred02840's gravatar image

Sans relancer de troll sur les compléments graphiques de l'univers LaTeX... :) voici une solution avec metapost :)

Ouvrir dans l'éditeur Overleaf
prologues:=2;

mul:=2;
modulo:=60;

rayon=2.5;

path cercle;
cercle=fullcircle scaled (2*rayon*1cm);

pair A[],O;
O=(0,0);

A0-O=(0,rayon*1cm);

for k=1 upto modulo-1:
  A[k]=A[k-1] rotatedabout(O,360/modulo);
endfor;

beginfig(1);
  draw cercle;
  for k=1 upto modulo-1:
    draw A[k]--A[k*mul mod modulo];
  endfor;
endfig;

end

ou voici un code à compiler directement sur overleaf

Ouvrir dans l'éditeur Overleaf
\documentclass{article}

\usepackage[shellescape]{gmp}

\begin{document}
\begin{mpost}
prologues:=2;

mul:=2;
modulo:=60;

rayon=2.5;

path cercle;
cercle=fullcircle scaled (2*rayon*1cm);

pair A[],O;
O=(0,0);

A0-O=(0,rayon*1cm);

for k=1 upto modulo-1:
  A[k]=A[k-1] rotatedabout(O,360/modulo);
endfor;

beginfig(1);
  draw cercle;
  for k=1 upto modulo-1:
    draw A[k]--A[k*mul mod modulo];
  endfor;
endfig;

end
\end{mpost}

\end{document}
Lien permanent

Publiée 08 Déc '19, 00:12

christophe-poulain's gravatar image

christophe-poulain
8661727
Taux d'acceptation : 37%

Modifiée 08 Déc '19, 23:06

@christophe-poulain : ce code metapost a l'air limpide, mais il est dépourvu du préambule qui permettrait au néophyte de le tester en ligne en cliquant sur le lien prévu à cet effet. Pourriez-vous le compléter ?

(08 Déc '19, 13:58) Pathe ♦♦ Pathe's gravatar image
2

Pour metapost, pas besoin de préambule... on enregistre le code fourni ci-dessus (sous la forme nomfichier.mp) et on le compile à l'aide de mpost nomfichier. On obtiendra un fichier nomfichier.1 qu'il faudra inclure dans un document LaTeX...

(08 Déc '19, 23:01) christophe-poulain christophe-poulain's gravatar image
4

Après, si vous insistez :), j'ai ajouté un code LaTeX qui peut être testé directement dans overleaf (le lien direct ne fonctionne pas, le préambule LaTeX n'est pas le bon). Cette compilation directe est rendue possible par le package (latex) gmp

(08 Déc '19, 23:05) christophe-poulain christophe-poulain's gravatar image

@christophe-poulain. L'ensemble du fichier .tex m'intéresserait. Et d'autres aussi…

(27 Déc '19, 12:08) fred02840 fred02840's gravatar image
1

quel fichier .tex ? Il est fourni... Quels sont les autres ?

(28 Déc '19, 19:54) christophe-poulain christophe-poulain's gravatar image
Votre réponse
(dés)activer l'aperçu

Suivre cette question

Par courriel :

Une fois que vous serez enregistré, vous pourrez souscrire à n'importe quelle mise à jour ici

Par flux RSS :

Réponses

Réponses et commentaires

Bases de Markdown

  • *italique* ou _italique_
  • **gras** ou __gras__
  • Lien ::[texte](http://url.com/ "Titre ")
  • Image : ?![alt texte](/path/img.jpg "Titre ")
  • Liste numérotée : 1. Foo 2. Bar
  • Pour ajouter un passage à la ligne, ajoutez deux espaces à l'endroit où vous souhaitez que la ligne commence.
  • Les balises HTML de base sont également prises en charge.