Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Boucle et PSTricks

33 views
Skip to first unread message

lionmarron

unread,
May 2, 2013, 5:20:11 PM5/2/13
to
Bonjour

PSTricks permet de definir la valeur de l'unit� de longueur par d�faut
ce qui permet de modifier l'�chelle d'un graphisme en une seule
op�ration, toutefois, ce qui semble induire quelques limitations, pour
que �a marche il faut ne pas sp�cifier l'unit�.

La question est la suivante : � l'int�rieur d'une boucle, peut-on
modifier une longueur dont on ne sp�cifie pas l'unit� autrement qu'avec
multido (ou autrement qu'au d�but de la boucle) ?

Voici un exemple qui illustre le probl�me :

\documentclass[a4paper]{article}
\usepackage{pstricks}
\usepackage{multido}
\usepackage{ifthen}
\begin{document}
\newlength{\ya}\newlength{\yb}\newlength{\yc}
\newlength{\yd}\newlength{\ye}\newlength{\yf}
\setlength{\ya}{0mm}\setlength{\yb}{1.5mm}\setlength{\yc}{4.5mm}
\setlength{\yd}{6mm}\setlength{\ye}{4.5mm}\setlength{\yf}{1.5mm}
\newcounter{k}\setcounter{k}{1}%
\begin{pspicture}(2,0)(10,20)
\psset{unit=3mm}
\whiledo{\thek<25}{%%%%%% BOUCLE k %%%%%%
\stepcounter{k}%
\addtolength{\ya}{4.5mm}\addtolength{\yb}{4.5mm}\addtolength{\yc}{4.5mm}
\addtolength{\yd}{4.5mm}\addtolength{\ye}{4.5mm}\addtolength{\yf}{4.5mm}
\multido{\na=1.0+2, \nb=2.0+2, \nc=2.0+2, \nd=1.0+2, \ne=0.0+2,
\nf=0.0+2}{24}{%
\pspolygon[](\na,\ya)(\nb,\yb)(\nc,\yc)(\nd,\yd)(\ne,\ye)(\nf,\yf)}
\addtolength{\ya}{4.5mm}\addtolength{\yb}{4.5mm}\addtolength{\yc}{4.5mm}
\addtolength{\yd}{4.5mm}\addtolength{\ye}{4.5mm}\addtolength{\yf}{4.5mm}
\multido{\na=2.0+2, \nb=3.0+2, \nc=3.0+2, \nd=2.0+2, \ne=1.0+2,
\nf=1.0+2}{24}{%
\pspolygon[](\na,\ya)(\nb,\yb)(\nc,\yc)(\nd,\yd)(\ne,\ye)(\nf,\yf)}
}%k
\end{pspicture}
\end{document}

Ce n'est pas vraiment un ECM mais j'ai essay� de ne pas faire trop long.

Dans la boucle k je ne vois pas comment utiliser multido �tant donn� que
les longueurs commen�ant par y sont incr�ment�es non seulement au d�but
mais �galement au milieu de la boucle.

Suis-je pass� � c�t� de quelque chose de + ou - simple, ou bien ne
peut-on pas faire autrement ?

--
lionmarron

lionmarron

unread,
May 3, 2013, 2:04:29 AM5/3/13
to
Le 02/05/2013 23:20, lionmarron a �crit :
> Suis-je pass� � c�t� de quelque chose de + ou - simple, ou bien ne
> peut-on pas faire autrement ?
>
Finalement j'ai trouv� la solution suivante. Pardon pour le bruit.

\documentclass[a4paper]{article}
\usepackage{pstricks}
\usepackage{multido}
\usepackage{ifthen}
\begin{document}
\begin{pspicture}(2,0)(10,20)
\psset{unit=3mm}%%% n --> x %%% N --> y %%%
\multido{\Na=0.0+3.0, \Nb=0.5+3.0, \Nc=1.5+3.0, \Nd=2.0+3.0,
\Ne=1.5+3.0, \Nf=0.5+3.0}{25}{%
\multido{\na=1.0+2, \nb=2.0+2, \nc=2.0+2, \nd=1.0+2, \ne=0.0+2,
\nf=0.0+2}{24}{%
\pspolygon[](\na,\Na)(\nb,\Nb)(\nc,\Nc)(\nd,\Nd)(\ne,\Ne)(\nf,\Nf)}
}%
\multido{\Na=1.5+3.0, \Nb=2.0+3.0, \Nc=3.0+3.0, \Nd=3.5+3.0,
\Ne=3.0+3.0, \Nf=2.0+3.0}{25}{%
\multido{\na=2.0+2, \nb=3.0+2, \nc=3.0+2, \nd=2.0+2, \ne=1.0+2,
\nf=1.0+2}{24}{%
\pspolygon[](\na,\Na)(\nb,\Nb)(\nc,\Nc)(\nd,\Nd)(\ne,\Ne)(\nf,\Nf)}
}%
\end{pspicture}
\end{document}

--
lionmarron

Herbert Voss

unread,
May 4, 2013, 4:57:39 AM5/4/13
to
On 03.05.2013 08:04, lionmarron wrote:> Le 02/05/2013 23:20, lionmarron
a �crit :
>> Suis-je pass� � c�t� de quelque chose de + ou - simple, ou bien ne
>> peut-on pas faire autrement ?
>>
> Finalement j'ai trouv� la solution suivante.


\documentclass[a4paper]{article}
\usepackage{pst-poly}
\usepackage{multido}
\begin{document}

\begin{pspicture}(2,0)(10,20)
\psset{unit=0.3,yunit=0.876}
\multido{\iRow=0+2,\iiRow=0+1}{40}{%
\multido{\iCol=0+2}{25}{%
\rput(!\iCol\space \iiRow\space 2 mod 0 gt {1 add}if \iRow
){\PstHexagon[unit=1.141,PolyRotation=30]}
}}
\end{pspicture}


\end{document}

lionmarron

unread,
May 4, 2013, 4:52:10 PM5/4/13
to
Merci � Herbert Voss pour sa solution (quoique je n'ai pas pu la
comprendre).

Je peux pas lui r�pondre en anglais ni en allemand bien s�r. Par
ailleurs j'ai regard� la doc de pst-poly et � mon avis c'est du solide.
D'habitude je trouve les docs en anglais trop bavarde (normal lorsqu'il
faut traduire les mots un par un), mais l� c'est le genre de doc pour
laquelle il ne me faudrait pas seulement une traduction, mais peut-�tre
aussi, ou autant que possible, une traduction avec commentaires. (Enfin
�a me para�tra peut-�tre diff�rent avec le temps.)

--
lionmarron
0 new messages