\documentclass[12pt]{article}
\usepackage[tiling]{pst-fill}
\usepackage{multido}
\usepackage[latin1]{inputenc}
\usepackage[francais]{babel}
\usepackage{pst-key}
\makeatletter
\define@key{psset}{R0}{\edef\psk@pstExpansionRadius{#1}}
\define@key{psset}{factor}{\edef\psk@pstExpansionFactor{#1}}
\define@key{psset}{iterations}{\edef\psk@pstExpansioniterations{#1}}
\setkeys{psset}{R0=0.1,factor=1.2,iterations=22}
\def\ExpansionRadiale{\pst@object{ExpansionRadiale}}
\def\ExpansionRadiale@i{\@ifnextchar[{\ExpansionRadiale@do}{\ExpansionRadiale@do[]}}
\def\ExpansionRadiale@do[#1]{{\pst@killglue
\setkeys{psset}{#1}\begin@ClosedObj
\addto@pscode{
/R0 \psk@pstExpansionRadius\space 28.45 mul def /factor \psk@pstExpansionFactor\space def /iterations \psk@pstExpansioniterations\space def
/ARROWS { newpath
0 0 Radius1 -7.5 7.5 arc
Radius2 7.5 cos mul Radius2 7.5 sin mul lineto
0 0 Radius2 7.5 15 arc
Radius3 0 lineto
Radius2 -15 cos mul Radius2 -15 sin mul lineto
0 0 Radius2 -15 -7.5 arc
closepath
fill
} def
0 1 12 {
/Rot exch def
0 2 iterations { /Exposant exch def
/Radius1 R0 factor Exposant exp mul def
/Radius2 R0 factor Exposant 1 add exp mul def
/Radius3 R0 factor Exposant 2 add exp mul def
ARROWS
} for
30 rotate
} for
}\showpointsfalse
\end@ClosedObj
}}
\def\ReverseRotation{\pst@object{ReverseRotation}}
\def\ReverseRotation@i{\@ifnextchar[{\ReverseRotation@do}{\ReverseRotation@do[]}}
\def\ReverseRotation@do[#1]{{\pst@killglue
\setkeys{psset}{#1}\begin@ClosedObj
\addto@pscode{
/R0 \psk@pstExpansionRadius\space 28.45 mul def /factor \psk@pstExpansionFactor\space def /iterations \psk@pstExpansioniterations\space def
/ARROWS { newpath
0 0 Radius2 0 15 arc
Radius3 15 cos mul Radius3 15 sin mul lineto
/Ri Radius1 Radius2 add 2 div def
Ri 30 cos mul Ri 30 sin mul
lineto
Radius0 15 cos mul Radius0 15 sin mul lineto
Radius1 15 cos mul Radius1 15 sin mul lineto
0 0 Radius1 15 0 arcn
Radius1 0 lineto
Radius2 0 lineto
closepath
fill
} def
0 1 12 {
/Rot exch def
0 3 iterations { /Exposant exch def
/Radius0 R0 factor Exposant exp mul def
/Radius1 R0 factor Exposant 1 add exp mul 0.96 mul def
/Radius2 R0 factor Exposant 2 add exp mul 1.04 mul def
/Radius3 R0 factor Exposant 3 add exp mul def
ARROWS
} for
30 rotate
} for}\def\pst@linetype{2}\showpointsfalse
\end@ClosedObj}}
\makeatother
\pagestyle{empty}
\title{Transformations r\'eversibles}
\author{Roger N.Shepard}
\date{3 juillet 2\,003}
\begin{document}
\maketitle
\thispagestyle{empty}
\begin{center}
Figures reproduites du livre de \\
Roger N.\textsc{Shepard},\\
L'\oe{}il qui pense\\
Visions, illusions, perceptions
\end{center}
\begin{flushright}
\'Editions du
Seuil (1\,992) page 87.
\end{flushright}
Ces figures sont donn\'ees uniquement dans un cadre didactique, afin
d'illustrer l'utilisation de PSTricks pour leur r\'ealisation.
On remarquera, que ces transformations ont \'et\'e fortement inspir\'ees
des figures hautement plus artistiques de M.C. Escher.
\section{Translation}
\def\ReverseA{{\psset{unit=1}\pspicture(2,1)
\pspolygon*(0,0.25)(1,0.25)(1,0)(2,0.5)(1,1)(1,0.75)(0,0.75)
\endpspicture}}
\psframebox{\pspicture(12,7)
\psboxfill{\ReverseA}
\psframe[linestyle=none,fillstyle=boxfill](12,7)
\endpspicture}
\section{Expansion}
On peut param\'etrer le rayon initial
\verb+[R0]+, le facteur d'expansion \verb+[factor]+ et le nombre
d'it\'erations \verb+[iterations]+. La commande s'\'ecrit :
\begin{verbatim}
\ExpansionRadiale[R0=0.1,factor=1.2,iterations=22]
\end{verbatim}
Ce sont les valeurs par d\'efaut qui sont indiqu\'ees.
\begin{center}
\psframebox{\begin{pspicture}*(-6,-6)(6,6)
\pscircle*{0.1}
\ExpansionRadiale
\end{pspicture}}
\end{center}
\newpage
\section{Rotation}
\begin{verbatim}
\ReverseRotation[factor=1.15,iterations=32]
\end{verbatim}
\begin{center}
\begin{pspicture}(-5,-5.4)(5,5.4)
\begin{psclip}{\pscircle{5.4}}
\pscircle*{0.1}
\ReverseRotation[factor=1.15,iterations=32]
\end{psclip}
\end{pspicture}
\end{center}
\section{Rotation avec expansion}
\end{document}

—
Syracuse — Dernière modification : 4 juillet 2003 (0.08s - 3949204 - 8 janvier 2009)