mercredi 26 avril 2017

Le triple Fidget Spinner sous forme d'un package `pst-spinner'

Par rapport à la version précédente :
une erreur de calcul a été corrigée et la possibilité de personnaliser l'objet avec une image a été rajoutée, comme le montre cette animation :
Cette version est téléchargeable dans le répertoire :
Le fichier pst-spinner.zip contient tous les fichiers actuels. Certains devront être compilés pour obtenir les fichiers pdf correspondants.
Nouvel exemple personnalisé :
Il est dans le répertoire indiqué ci-dessus, ainsi qu'un fichier spinner-principe.pdf et son fichier source spinner-principe.tex illustrant le principe de construction de l'objet.
Pour ce troisième exemple, il faut enregistrer le listing suivant sous le nom de cercles-hsb.eps
dans le même répertoire que celui de compilation :

%!PS-Adobe-3.0 EPSF-3.0
%%BoundingBox: -155 -155 155 155
newpath
150 0 moveto
0 0 150 0 360 arc
closepath
0.9 setgray
fill
0 10 150 {/i exch def
newpath
i 0 moveto
0 0 i 0 360 arc
closepath
i 150 div 1 1 sethsbcolor
5 setlinewidth
stroke
} for

puis enregistrer le listing suivant, par exemple sous le nom de exemple3-pst-spinner.tex puis le compiler le fichier suivant avec la procédure habituelle : LaTeX=>DVIPS=>ps2pdf
Le package pst-spinner est à récupérer dans le répertoire indiqué au début.

\documentclass{article}
\usepackage{pst-spinner,animate}
\begin{document}
\begin{center}
\begin{animateinline}[controls,loop,
                     begin={\begin{pspicture}(-5,-5)(5,5)},
                     end={\end{pspicture}}]{25}% 25 images/s
\multiframe{72}{i=0+-5}{%
\psgrid[subgriddiv=5,%
      gridlabels=0,%
      gridwidth=1pt,%
      gridcolor=orange,
    subgridwidth=0.1pt,%
    subgridcolor=orange](-5,-5)(5,5)
\psFidgetSpinner[R=3.9,colorMask=blue,linewidth=0.05,mask,customize,customizeMask,image=cercles-hsb.eps,rotation=\i]
\rput(0,0){\textbf{PSTricks}}
}
\end{animateinline}
\end{center}
\end{document} 

Voici l'animation gif obtenue :







dimanche 23 avril 2017

Triple Fidget Spinner.avec PSTricks

Cet article a pour but de proposer un modèle de ce gadget très à la mode actuellement. Il existe sous différentes formes, avec 2, 3 pôles et même davantage. J’ai choisi le modèle le plus répandu : le triple Fidget Spinner. Les dimensions du modèle sont liées à celle des roulements à billes : diamètre extérieur 22 mm et diamètre intérieur  8 mm. L’axe composé d’un roulement à billes de qualité est au centre d’un triangle équilatéral aux sommets duquel sont placés des roulement à billes identiques à celui de l’axe mais de qualité quelconque ou des bagues de couleur. Le contour de l’objet est constitué d’arcs de cercles parfaitement raccordés.
La commande s’écrit : \psFidgetSpinner[options]. Les options sont décrites dans la documentation.

Les fichiers sont dans le répertoire :
Le fichier zippé contient tous les fichiers actuels.
Sous forme de package, voir la page suivante :


Voici 2 images et 2 animations :
Une petite expérience illustrée par les 2 animations ci-dessus. On tient le Fidget Spinner  entre le pouce et le majeur en le faisant tourner dans un sens puis on le retourne rapidement, vous constaterez que le sens de rotation s'inverse.

lundi 10 avril 2017

Mosaïque qui orne la tête de Méduse

Il s'agit d'un essai de reproduction de la mosaïque qui orne la tête de Méduse, mosaïque conservée au musée Paul Getty à Los Angeles :
 Mosaic-Floor-with-Head-of-Medusa1.jpg
 C'est la suite des articles précédents consacrés aux mosaïques :
http://pstricks.blogspot.fr/2017/04/arc-en-ciel-en-spirales.html
http://pstricks.blogspot.fr/2017/04/mosaiques-en-spirale-le-package.html
http://pstricks.blogspot.fr/2017/04/mosaiques-en-spirale-une-animation.html
http://pstricks.blogspot.fr/2017/03/mosaiques-en-spirale.html

La package pst-spiralmosaic est dans le répertoire :
Le listing :
\documentclass[12pt]{article}
\usepackage[a4paper,margin=2cm]{geometry}
\usepackage[latin1]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{lmodern}
\usepackage{pst-spiralmosaic,multido}
\usepackage[colorlinks]{hyperref}
% manuel.luque27@gmail.com
\title{Reproduction de la mosaïque qui orne la tête de Méduse}
\author{manuel.luque27@gmail.com}
\date{10 avril 2017}
\definecolor{marron}{rgb}{0.87,0.6,0.087}
\begin{document}
\maketitle
Il s'agit d'un essai de reproduction de la mosaïque qui orne la tête de Méduse. Mosaïque conservée au musée Paul Getty à Los Angeles :

\centerline{\footnotesize\url{http://www.thehistoryblog.com/wp-content/uploads/2016/04/Mosaic-Floor-with-Head-of-Medusa1.jpg}}

Dans mon exemple, ce sont des spirales d'Archimède qui génèrent la mosaïque avec le package \textsf{pst-spiralmosaic}, il reste à placer la tête de Méduse au centre.

\begin{center}
\def\mosaicA{\psSpiralMosaic[n=20,k=2,linestyle=none,backgroundcolor=white,colorA=marron,colorB=marron]}%
\def\mosaicB{\psSpiralMosaic[n=20,k=2,linestyle=none,backgroundcolor=blue,colorB=white,colorA=white]}%
\begin{pspicture}(-5.2,-5.2)(5.2,5.2)
\multido{\n=0.0+0.5,\I=1+1,\N=0.5+0.5}{10}{%
\psclip{\pscustom[linestyle=none]{\psarc(0,0){\n}{0}{360}\psarcn(0,0){\N}{360}{0}}}
\ifodd\I \mosaicA \else \mosaicB \fi\endpsclip%}
}%%
\pscircle[linewidth=0.1]{5.1}
\end{pspicture}
\end{center}
%\end{document}
2 variantes :
\begin{center}
\def\mosaicA{\psSpiralMosaic[n=20,k=2,linestyle=none,backgroundcolor=white,colorA=red,colorB=red]}%
\def\mosaicB{\psSpiralMosaic[n=20,k=2,linestyle=none,backgroundcolor=blue,colorB=white,colorA=white]}%
\begin{pspicture}(-5.2,-5.2)(5.2,5.2)
\multido{\n=0.0+0.5,\I=1+1,\N=0.5+0.5}{10}{%
\psclip{\pscustom[linestyle=none]{\psarc(0,0){\n}{0}{360}\psarcn(0,0){\N}{360}{0}}}
\ifodd\I \mosaicA \else \mosaicB \fi\endpsclip%}
}%%
\pscircle[linewidth=0.1]{5.1}
\end{pspicture}
\end{center}

\begin{center}
\def\mosaicA{\psSpiralMosaic[n=20,k=2,linestyle=none,backgroundcolor=white,colorA=red,colorB=red]}%
\def\mosaicB{\psSpiralMosaic[n=20,k=2,linestyle=none,backgroundcolor=blue,colorB=white,colorA=white]}%
\begin{pspicture}(-5.2,-5.2)(5.2,5.2)
\multido{\i=1+1}{8}{%
\pstVerb{/radius1 \i\space 2 div def /radius2 radius1 0.5 add def}%
\psclip{\pscustom[linestyle=none]{\psarc(0,0){!radius1}{0}{360}\psarcn(0,0){!radius2}{360}{0}}}
\ifodd\i\mosaicA \else\rput{!360 12 div}{\mosaicB}\fi
\endpsclip%}
}%%
\end{pspicture}
\end{center}
\end{document}

dimanche 9 avril 2017

Arc-en-ciel en spirales

La commande \psRainbowSpirals[options] fait partie du package ‘pst-spiralmosaic’. Elle comprend différentes options décrites dans la documentation : psRainbowSpirals.pdf

 Tous les fichiers sont dans le répertoire :
 Le fichier zippé contient tous les fichiers.
En voici une image et une animation :
Une variante de l'animation précédente :


vendredi 7 avril 2017

Mosaïques en spirale : le package + complèments

C'est la suite de Mosaïques en spirale
Le package pst-spiralmosaic.tex et pst-spiralmosaic.sty comprend 2 commandes \pst-spiralmosaic et une nouvelle commande \pst-spiralmosaicB dont voici quelques images :

une animation au format Gif. Dans le pdf de la documentation, les animations sont réalisées avec le package animate d'Alexander Grahn.

 Tous les fichiers sont dans le dossier :
Le fichier zippé contient tous les fichiers.
Le logiciel The Gimp permet d'effectuer des retouches intéressantes, par exemple avec le filtre artistique : effet de toile, la première image devient :

mardi 4 avril 2017

Mosaïques en spirale : une animation

Une application de :
 http://pstricks.blogspot.fr/2017/03/mosaiques-en-spirale.html





\documentclass{article}
\usepackage[paperwidth=10.4cm,paperheight=10.4cm,hmargin={0cm,0cm},vmargin={0cm,0cm},dvips]{geometry}
\usepackage{pstricks,multido}
% manuel.luque27@gmail.com
\makeatletter
\pst@addfams{pst-spiralmosaic}
\define@key[psset]{pst-spiralmosaic}{R0}{\edef\psk@pstSpiralMosaicRadius{#1 }}
\define@key[psset]{pst-spiralmosaic}{k}{\edef\psk@pstSpiralMosaicK{#1 }}
\define@key[psset]{pst-spiralmosaic}{n}{\edef\psk@pstSpiralMosaicN{#1 }}
\define@key[psset]{pst-spiralmosaic}{backgroundcolor}{\pst@getcolor{#1}\psbackgroundcolor}
\define@key[psset]{pst-spiralmosaic}{colorA}{\pst@getcolor{#1}\pscolorA}
\define@key[psset]{pst-spiralmosaic}{colorB}{\pst@getcolor{#1}\pscolorB}
\psset{R0=5,k=2,n=10,backgroundcolor=blue,colorA=green,colorB=yellow}
%
\def\psSpiralMosaic{\def\pst@par{}\pst@object{psSpiralMosaic}}
\def\psSpiralMosaic@i{%
    \begin@SpecialObj
\addto@pscode{
 /cm  {\pst@number\psunit mul} bind def
 /backgroundcolor {\pst@usecolor\psbackgroundcolor } def
 /colorA {\pst@usecolor\pscolorA } def
 /colorB {\pst@usecolor\pscolorB } def
 /R0 \psk@pstSpiralMosaicRadius def
 /k@ \psk@pstSpiralMosaicK  def
 /n@ \psk@pstSpiralMosaicN cvi def
n@ 2 mod 0 ne {/n@ n@ 1 add def} if
gsave
newpath
R0 cm 0 moveto
0 0 R0 cm 0 360 arc
closepath
backgroundcolor
fill
grestore
newpath
R0 cm 0 moveto
0 0 R0 cm 0 360 arc
closepath
clip
/t01 {r_0 360 mul n@ div neg} def
/t02 {r_0 1 add 360 mul n@ div neg} def
/RadiusA {n@ 360 div t mul r_0 add } def
/RadiusB {n@ 360 div t mul r_0 1 add add } def
/spiraleA {
RadiusA t cos mul cm RadiusA t sin mul cm moveto
t01 2 k@ 360 mul {/t exch def
RadiusA t     cos mul cm RadiusA t     sin mul cm lineto
 } for
} def
/spiraleB {
RadiusA t cos mul cm RadiusA t sin mul cm moveto
t01 -2 k@ -360 mul {/t exch def
RadiusA t cos mul cm RadiusA t sin mul cm lineto
 } for
} def
%
-3 2 n@ {/r_0 exch def
%
 gsave
% 2 spirales tournant a droite
newpath
/t t01 def
spiraleA
/t t02 def
k@ 360 mul -2 t02 {/t exch def
RadiusB t     cos mul cm RadiusB t     sin mul cm lineto
 } for
closepath
clip
%
1 2 n@ {/r_0 exch def
% 2 spirales tournant a gauche
newpath
/t t01 def
spiraleB
/t t02 def
k@ -360 mul 2 t02 {/t exch def
RadiusB t cos mul cm RadiusB t sin mul cm lineto
 } for
closepath
colorA
fill
} for
grestore
} for
%%%%%%%%%%%%%%%%%%%%%%%%%
-2 2 n@ {/r_0 exch def
gsave
newpath
/t t01 def
RadiusA t cos mul cm RadiusA t sin mul cm moveto
t01 2 k@ 360 mul {/t exch def
RadiusA t     cos mul cm RadiusA t     sin mul cm lineto
 } for
/t t02 def
k@ 360 mul -2 t02 {/t exch def
RadiusB t     cos mul cm RadiusB t     sin mul cm lineto
 } for
closepath
clip
%
0 2 n@ {/r_0 exch def
newpath
/t t01 def
RadiusA t cos mul cm RadiusA t sin mul cm moveto
t01 -2  k@ -360 mul {/t exch def
RadiusA t cos mul cm RadiusA t sin mul cm lineto
 } for
/t t02 def
k@ -360 mul 2 t02 {/t exch def
RadiusB t cos mul cm RadiusB t sin mul cm lineto
 } for
closepath
colorB
fill
} for
grestore
} for
\ifx\pslinestyle\@none\else
gsave
-3 1 n@ {/r_0 exch def
newpath
/t t01 def
spiraleA
\pst@usecolor\pslinecolor
\pst@number\pslinewidth SLW
stroke
newpath
/t t01 def
spiraleB
\pst@usecolor\pslinecolor
\pst@number\pslinewidth SLW
stroke
} for
grestore
\fi
 }%
\showpointsfalse
\end@SpecialObj
}
\makeatother
\title{Disque de mosaïque en spirale}
\author{manuel.luque27@gmail.com}
\date{27 mars 2017}
\begin{document}
%\maketitle
\begin{center}
\def\mosaic{\psSpiralMosaic[n=2,k=4,linestyle=solid,backgroundcolor=white,colorA=red,colorB=blue]}%
\def\anneauA{%
\psclip{\pscustom[linestyle=none]{\psarc(0,0){1}{0}{360}}}
\mosaic
\endpsclip}%
\def\anneauB{%
\psclip{\pscustom[linestyle=none]{\psarc(0,0){1}{0}{360}\psarcn(0,0){2}{360}{0}}}
\mosaic
\endpsclip}%
\def\anneauC{%
\psclip{\pscustom[linestyle=none]{\psarc(0,0){2}{0}{360}\psarcn(0,0){3}{360}{0}}}
\mosaic
\endpsclip}%
\def\anneauD{%
\psclip{\pscustom[linestyle=none]{\psarc(0,0){3}{0}{360}\psarcn(0,0){4}{360}{0}}}
\mosaic
\endpsclip}%
\def\anneauE{%
\psclip{\pscustom[linestyle=none]{\psarc(0,0){4}{0}{360}\psarcn(0,0){5}{360}{0}}}
\mosaic
\endpsclip}%
\multido{\i=0+-2}{180}{%
\begin{pspicture}(-5.2,-5.2)(5.2,5.2)
\psframe*(-5.2,-5.2)(5.2,5.2)
\rput{\i}{\anneauA}
\rput{!\i\space neg}{\anneauB}
\rput{\i}{\anneauC}
\rput{!\i\space neg}{\anneauD}
\rput{!\i}{\anneauE}
\multido{\I=1+1}{5}{\pscircle{\I}}
\end{pspicture}\newpage}
\end{center}
\end{document}