[Résolu] Papier pointé et trame triangulaire

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.

[Résolu] Papier pointé et trame triangulaire

Messagepar tnnico » Lundi 14 Décembre 2009, 18:38

Bonjour à tous,

Je cherche à faire des dessins sur du papier pointé (où les points forment des triangles équilatéraux) et pour ça j'ai un début de solution pas très satisfaisant avec la macro :
Code: Tout sélectionner
\newcommand{\pointe}[2]{
   \def\fin{5} % la valeur initiale n'a pas d'importance
   \def\fin1{1} % ici aussi !!!
   \pgfmathparse{#2-1}
   \let\fin\pgfmathresult
   \foreach \x in {0,1,...,\fin1}{
      \draw[fill=gray!50,blue] (60:\x) circle (1pt);
      \pgfmathparse{#1-\x/2-1}
      \let\fin\pgfmathresult
      \foreach \y in {1,...,\fin}{
         \filldraw[gray!50,xshift=\y cm] (60:\x) circle (1pt);}
      \pgfmathparse{1+\x/2-1}
      \let\fin\pgfmathresult
      \foreach \y in {0,...,\fin}{
         \filldraw[gray!50,xshift=-\y cm] (60:\x) circle (1pt);}
      }
   }           


Le premier argument est le nombre de points en colonne et le deuxième, le nombre de lignes.

Elle marche convenablement, mais je pense qu'il y a plus simple...

Et surtout, je voudrais aussi dessiner une trame de triangles équilatéraux avec des lignes qui passent par ces points.

Et là, j'ai du mal à m'en sortir...

Quelqu'un a t-il déjà fait ça ? Une idée, sinon ?

D'avance merci,

Nicolas
Dernière édition par tnnico le Vendredi 18 Décembre 2009, 14:38, édité 1 fois.
tnnico
Hecto-utilisateur
 
Messages: 66
Inscription: Jeudi 25 Juin 2009, 13:06
Statut actuel: Actif et salarié | Enseignant

Publicité

Re: Papier pointé et trame triangulaire

Messagepar tnnico » Jeudi 17 Décembre 2009, 19:29

Bonjour encore,

Je me suis aperçu que la macro que je proposais pour le papier pointé avait des défauts, notamment quand le nombre de lignes et de colonnes étaient sesiblement différents.

Je propose donc celle-ci qui permet de faire du papier pointé en triangles équilatéraux :

Code: Tout sélectionner
\newcommand{\pointe}[2]{
   \pgfmathparse{sqrt(3)/2}
   \let\ech\pgfmathresult
   \foreach \y in {1,...,#1}{
      \foreach \x in {1,...,#2}{
         \pgfmathparse{.5*mod(\y-1,2)}
         \filldraw[gray!50] (\x+\pgfmathresult,{(\y-1)*\ech}) circle (1pt);   
         }   
      }
   }         


Je pense qu'on peut encore faire beaucoup mieux.

Je n'ai pas encore trouvé pour dessiner une trame complète.

Mais je cherche...

Nicolas
tnnico
Hecto-utilisateur
 
Messages: 66
Inscription: Jeudi 25 Juin 2009, 13:06
Statut actuel: Actif et salarié | Enseignant

Re: Papier pointé et trame triangulaire

Messagepar tnnico » Vendredi 18 Décembre 2009, 14:37

C'est encore moi, décidément, ça n'a pas passionné grand monde !

Je vous propose quand même cette "jolie" macro qui permet d'obrenir une trame de triangles équilatéraux.

Code: Tout sélectionner
\newcommand{\trametri}[2]{
   \pgfmathparse{sqrt(3)/2}
   \let\ech\pgfmathresult
   \foreach \y in {1,...,#2}{
      \draw[ultra thin] (0.5,{(\y-1)*\ech}) -- ++({#1-.5},0);
      \pgfmathparse{0.5*mod(\y,2)+#1*mod(\y+1,2)}
      \let\abscisse\pgfmathresult
      \pgfmathparse{max(0,min(#2-\y-1,min(#2,2*#1-1)))}
      \let\long\pgfmathresult
      \pgfmathparse{1+mod(\y+1,2)}
      \let\cote\pgfmathresult
      \draw[ultra thin] (\abscisse,{(\y)*\ech}) -- ++({60*\cote}:\long);
      }
   \foreach \x in {1,...,#1}{
         \pgfmathparse{min(2*\x-1,#2-1)}
         \let\long\pgfmathresult
         \pgfmathparse{min(2*(#1-\x),#2-1)}
         \let\longa\pgfmathresult      
         \draw[ultra thin] (\x,0) -- ++(120:\long);   
         \draw[ultra thin] (\x,0) -- ++(60:\longa);         
         }         
   }        


où le premier argument représente la "largeur" et le deuxième la "hauteur".

Peut-être cela servira-t-il à quelqu'un...

Nicolas
tnnico
Hecto-utilisateur
 
Messages: 66
Inscription: Jeudi 25 Juin 2009, 13:06
Statut actuel: Actif et salarié | Enseignant

Re: [Résolu] Papier pointé et trame triangulaire

Messagepar projetmbc » Vendredi 18 Décembre 2009, 15:06

Mets un petit exemple visuel. C'est plus "vendeur"...
projetmbc
Péta-utilisateur
 
Messages: 1897
Inscription: Samedi 29 Décembre 2007, 00:58
Statut actuel: Actif et salarié | Enseignant

Re: [Résolu] Papier pointé et trame triangulaire

Messagepar tnnico » Vendredi 18 Décembre 2009, 16:01

Je vais avoir l'air nul, mais je ne sais pas comment insérer une image (sachant que je n'ai aucun autre endroit pour la stocker à part sur mon ordi perso)...

Nico
tnnico
Hecto-utilisateur
 
Messages: 66
Inscription: Jeudi 25 Juin 2009, 13:06
Statut actuel: Actif et salarié | Enseignant

Re: [Résolu] Papier pointé et trame triangulaire

Messagepar Altermundus » Samedi 19 Décembre 2009, 08:58

tnnico a écrit:Je vais avoir l'air nul, mais je ne sais pas comment insérer une image (sachant que je n'ai aucun autre endroit pour la stocker à part sur mon ordi perso)...

Nico

Bonjour

J'ai essayé et c'est intéressant mais il faudrait aussi mettre un exemple complet (ECM --> FAQ) car
certains peuvent avoir des difficultés à compléter. Pour l'image, il suffit de voir la FAQ.

Puis-je publier des images?
Oui, vous pouvez afficher des images dans vos messages. Par ailleurs, si l’administrateur a autorisé les fichiers joints, vous pouvez transférer une image sur le forum. Autrement, vous devez lier une image placée sur un serveur Web public, exemple: http://www.exemple.com/mon-image.gif. Vous ne pouvez pas lier des images de votre ordinateur (sauf si c’est un serveur Web public) ni des images placées derrière des mécanismes d’authentification, exemple: Boîtes e-mail Hotmail ou Yahoo!, sites protégés par un mot de passe, etc. Pour afficher l’image, utilisez la balise BBCode [img].


Alain Matthes
Altermundus
Giga-utilisateur
 
Messages: 557
Inscription: Lundi 28 Mai 2007, 09:31
Localisation: Paris
Statut actuel: Actif et salarié | Enseignant

Re: [Résolu] Papier pointé et trame triangulaire

Messagepar tnnico » Samedi 19 Décembre 2009, 18:06

Bien, je ne sais toujours pas comment insérer une image (à part m'ouvrir un compte pour héberger un site web ou utiliser celui de quelqu'un)... Je n'ai pas trouvé dans la FAQ le moyen de l'envoyer directement sur le forum...

Le fichier ci-dessous est "complet" :

Code: Tout sélectionner
\documentclass[10pt]{article}

\usepackage[latin1]{inputenc}
\usepackage[francais]{babel}
\usepackage{tikz}
   
\newcommand{\pointe}[2]{
   \pgfmathparse{sqrt(3)/2}
   \let\ech\pgfmathresult
   \foreach \y in {1,...,#1}{
      \foreach \x in {1,...,#2}{
         \pgfmathparse{.5*mod(\y-1,2)}
         \filldraw[gray!50] (\x+\pgfmathresult,{(\y-1)*\ech}) circle (1pt);   
         }   
      }
   }         

\newcommand{\trametri}[2]{
   \pgfmathparse{sqrt(3)/2}
   \let\ech\pgfmathresult
   \foreach \y in {1,...,#2}{
      \draw[ultra thin] (0.5,{(\y-1)*\ech}) -- ++({#1-.5},0);
      \pgfmathparse{0.5*mod(\y,2)+#1*mod(\y+1,2)}
      \let\abscisse\pgfmathresult
      \pgfmathparse{max(0,min(#2-\y-1,min(#2,2*#1-1)))}
      \let\long\pgfmathresult
      \pgfmathparse{1+mod(\y+1,2)}
      \let\cote\pgfmathresult
      \draw[ultra thin] (\abscisse,{(\y)*\ech}) -- ++({60*\cote}:\long);
      }
   \foreach \x in {1,...,#1}{
         \pgfmathparse{min(2*\x-1,#2-1)}
         \let\long\pgfmathresult
         \pgfmathparse{min(2*(#1-\x),#2-1)}
         \let\longa\pgfmathresult      
         \draw[ultra thin] (\x,0) -- ++(120:\long);   
         \draw[ultra thin] (\x,0) -- ++(60:\longa);         
         }         
   }            

\begin{document}

   \begin{tikzpicture}
      \pointe{4}{8}
   \end{tikzpicture}

   \begin{tikzpicture}
      \trametri{4}{8}
   \end{tikzpicture}

\end{document}


En le compilant je me suis aperçu que les 2 arguments de chaque macro ne jouaient pas le même rôle (largeur <--> hauteur).

Ce n'est pas compliqué à changer (il suffit d'inverser #1 et #2 dans l'une des deux).

Désolé pour le manque d'images...

Cordialement,
Nicolas
tnnico
Hecto-utilisateur
 
Messages: 66
Inscription: Jeudi 25 Juin 2009, 13:06
Statut actuel: Actif et salarié | Enseignant

Re: [Résolu] Papier pointé et trame triangulaire

Messagepar sylcha » Mercredi 10 Février 2010, 19:12

Bonjour !

J'ai retouché la macro 'pointe' ci-dessous : elle ne respectait pas les dimensions passées en arguments... ça donne :

Code: Tout sélectionner
\newcommand{\pointe}[2]{
\begin{scope}
\clip (0,0) rectangle (#1,#2);
   \pgfmathparse{sqrt(3)/2}
   \let\ech\pgfmathresult
 \pgfmathparse{(2*#2)/sqrt(3)+1}
   \foreach \y in {1,...,\pgfmathresult}{
      \foreach \x in {0,...,#1}{
         \pgfmathparse{.5*mod(\y-1,2)}
         \filldraw[gray!50] (\x+\pgfmathresult,{(\y-1)*\ech}) circle (1pt);   
         }   
      }
\end{scope}
   }


en espérant avoir été utile...

sylvain.
sylcha
Utilisateur
 
Messages: 4
Inscription: Jeudi 13 Septembre 2007, 12:01
Statut actuel: Collège


Retourner vers LaTeX

 


  • Articles en relation
    Réponses
    Vus
    Dernier message

Qui est en ligne

Utilisateurs parcourant ce forum: Google Adsense [Bot], MSN [Bot], pzorba75 et 11 invités