Dessiner des motifs "séquentiels"

Tout ce qui concerne le langage TeX/LaTeX et ses variantes. Ce langage est utilisable sur le forum via les balises tex.
[participation réservée aux utilisateurs inscrits]
Règles du forum
Merci de soigner la rédaction de vos messages et de consulter ce sujet avant de poster. Pensez également à utiliser la fonction recherche du forum.
tnnico
Utilisateur confirmé
Utilisateur confirmé
Messages : 85
Inscription : jeudi 25 juin 2009, 14:06

Dessiner des motifs "séquentiels"

Message non lu par tnnico »

Bonjour à tous,

Je souhaite dessiner des motifs qui se transforment avec une règle simple à chaque étape.
Mais je n'arrive pas à les dessiner de manière efficace, c'est à dire sans tout dessiner.
Ce n'est pas très clair, aussi voilà ce que je voudrais obtenir avec des boucles permettant de dessiner autant d'étapes que nécessaire.
d752514e016f4bdae28f211101af78a5397b50ae.svg
Avec un code qui permet de faire plus d'étapes facilement\dots

Code : Tout sélectionner

\begin{tikzpicture}[semithick,scale=.25]
	\def\ldep{0}
	\foreach \i in {1,2,3}{
		\pgfmathparse{\i+1}
		\def\nbli{\pgfmathresult}
		\foreach \j in {-\i,...,\i}{
			\draw (\j,-\ldep) rectangle +(1,1);
		}
		\foreach \j in {\ldep+1,...,\ldep+\i+1}{
			\draw (0,-\j) rectangle +(1,1);
		}
		\pgfmathparse{\ldep+\i+1}
		\def\ldep{\pgfmathresult}
		}
\end{tikzpicture}
Merci d'avance pour vos réponses.
projetmbc
Utilisateur chevronné
Utilisateur chevronné
Messages : 2287
Inscription : samedi 29 décembre 2007, 00:58

Re: Dessiner des motifs "séquentiels"

Message non lu par projetmbc »

Bonsoir.

Il existe un package polyomino qui devrait pouvoir faire le travail...
tnnico
Utilisateur confirmé
Utilisateur confirmé
Messages : 85
Inscription : jeudi 25 juin 2009, 14:06

Re: Dessiner des motifs "séquentiels"

Message non lu par tnnico »

Bonjour à tous,

le package polyomino ne me convient pas, car je voudrais dessiner toute sorte de patterns évolutifs.

En fait mon seul problème est que je n'arrive pas à modifier les variables notamment lorsqu'elles sont dans une boucle.

J'ai essayé avec \tikzmath{\ldep=\ldep+\i+1} puis la même chose avec \pgfmathparse, je pense que là c'est le \def\ldep\pgfmathresult qui ne convient pas...
evariste_G
Utilisateur chevronné
Utilisateur chevronné
Messages : 1490
Inscription : vendredi 19 décembre 2008, 19:13
Statut actuel : Enseignant
Localisation : Bordeaux

Re: Dessiner des motifs "séquentiels"

Message non lu par evariste_G »

Bonjour.

Je vous propose ce code :
eae9892acf3e90fd76a69c0f4a5a6b2c90b16359.svg
tnnico
Utilisateur confirmé
Utilisateur confirmé
Messages : 85
Inscription : jeudi 25 juin 2009, 14:06

Re: Dessiner des motifs "séquentiels"

Message non lu par tnnico »

Bonjour et merci pour votre réponse,

c'est presque ce que je voudrais, sauf que je voudrais le faire dans un seul environnement tikzpicture.

Par exemple ce genre de code :

Code : Tout sélectionner

\documentclass[11pt,a4paper]{article}
\usepackage[latin1]{inputenc}
\usepackage{xspace}

\usepackage[french]{babel}

\usepackage{tikz}
\usetikzlibrary{calc}

\newcommand{\drawpattern}[2]{ % #1 = nombre de carrés à droite et à gauche
							  % #2 = ligne de début du motif
    	\draw (0,\#2) rectangle (+1,-1);
        \foreach\x in {1,...,#1} {
        	\draw (\x,#2) rectangle +(1,-1);
        	\draw (-\x+1,#2) rectangle +(-1,-1);
        	\draw (0,-\x-#2) rectangle +(1,-1);
        }
}
 
\begin{document}

\begin{tikzpicture}[scale=.3]
	\foreach \ligne in {0,3,8}{ 
		\drawpattern{1}{\ligne}
	}
\end{tikzpicture}

\end{document}
De plus, le deuxième paramètre de la commande \drawpattern est superflu et je voudrais pouvoir le calculer avec une variable (c'était la variable \ldep dans ma première question).

Encore merci !
evariste_G
Utilisateur chevronné
Utilisateur chevronné
Messages : 1490
Inscription : vendredi 19 décembre 2008, 19:13
Statut actuel : Enseignant
Localisation : Bordeaux

Re: Dessiner des motifs "séquentiels"

Message non lu par evariste_G »

Il suffit de reprendre le code que je vous ai proposé, et de remplacer l'environnement tikzpicture par l'environnement scope :

Code : Tout sélectionner

\begin{scope} ... \end{scope}
quitte à modifier quelques paramètres (en fonction de ce que vous voulez, car je ne comprends pas trop votre objectif précis).
tnnico
Utilisateur confirmé
Utilisateur confirmé
Messages : 85
Inscription : jeudi 25 juin 2009, 14:06

Re: Dessiner des motifs "séquentiels"

Message non lu par tnnico »

Bonjour et merci pour votre réponse.

En fait, j'ai du mal à utiliser des variables avec tikz.

Je voudrais créer une commande \drawpattern avec un seul argument égal au nombre de motifs à dessiner (3 dans mon exemple),
de façon à pouvoir les dessiner dans un seul environnement tikzpicture en centrant les figures par rapport à l'axe de symétrie de celles-ci...

C'est vrai que ce n'est pas très clair, pour simplifier, dans mon exemple initial, la variable \ldep n'est pas calculée comme elle devrait (mais le calcul que je donne est le bon, ce sont les instructions de modification qui ne doivent pas l'être).
projetmbc
Utilisateur chevronné
Utilisateur chevronné
Messages : 2287
Inscription : samedi 29 décembre 2007, 00:58

Re: Dessiner des motifs "séquentiels"

Message non lu par projetmbc »

Bonjour.

Pour une utilisation où l'on veut et paramétrée, il faut transformer le code pour en faire un pic : voir la documentation officielle.

https://tikz.dev/tikz-pics