jeudi 2 juin 2016

Le triangle de Reuleaux - 5 : une deuxième propriété du triangle curviligne équilatéral dans le carré

C’est la deuxième propriété énoncée par Franz Reuleaux (dans la traduction de A. Debize), la première a été traitée ici :

http://pstricks.blogspot.fr/2016/05/le-triangle-de-reuleaux-3-une-propriete.html

« Pour trouver la trajectoire polaire correspondant au triangle, nous pouvons recourir à une inversion du couple, c’est-à-dire imaginer que le triangle soit maintenu fixe et que le carré ait, autour de lui, un mouvement de rotation à droite. On voit alors immédiatement que la trajectoire polaire est le lieu des sommets O de l’angle droit du triangle rectangle dont l’hypoténuse est PR, c’est-à-dire une circonférence décrite sur PB comme diamètre. Cette circonférence doit être prise comme trajectoire jusqu’au point 2’, milieu du côté QR. On obtient ensuite, exactement de la même manière, les autres arcs de la trajectoire, 2’.3’ et 3’.1, ce dernier aboutissant au point 0. D’après cela, la trajectoire polaire correspondant au triangle curviligne est également un triangle curviligne équilatéral, dont les côtés sont des arcs de cercle, décrits des points milieux des côtés PQ, QR et RP du triangle rectiligne PQR, avec la moitié de la longueur de ces côtés comme rayon.
Dans le mouvement relatif des deux figures, il y a successivement roulement de l’arc 1.2’ sur 1.2, de 2’.3’ sur 2.3, de 3’.1 sur 4.4, etc.
Pour revenir à sa position initiale, le pôle doit parcourir, sur les deux trajectoires, des chemins égaux, c’est-à-dire parcourir trois fois les quatre côtés du carré curviligne 1.2.3.4, et quatre fois les trois côtés du triangle curviligne 1.2’.3’. Après chaque révolution du triangle curviligne, le disque triangulaire se trouve avoir tourné de 90◦ par rapport au carré, de telle sorte qu’après le premier tour 1e sommet 1 du petit triangle curviligne est venu en 4, après le second en 3, après le troisième en 2, et qu’enfin, après le quatrième, il se trouve revenu en 0.1. »
En voici une animation réalisée avec PSTricks :


Dans le pdf, l'animation est réalisée grâce au package animate d'Alexander Grahn.

mardi 31 mai 2016

Le triangle de Reuleaux - 4 - Rotation du carré autour du triangle

Version 1

Version 2


Avec les codes ci-dessous, l'animation est incluse, après compilation, dans le pdf, grâce au package animate d'Alexander Grahn :

Version 1

\documentclass{article}
\usepackage[a4paper,hmargin=1cm]{geometry}
\usepackage{pst-plot,pstricks,pst-node}
\usepackage{animate}
\def\triangleReuleaux{%
\pnode(!-0.5 0){A}
\pnode(!3 sqrt 2 div 0.5 sub -0.5){B}
\pnode(!3 sqrt 2 div 0.5 sub 0.5){C}
\pnode(!3 sqrt 3 div 0.5 sub 0){G}
\pscustom[fillstyle=solid,fillcolor={[rgb]{0.5 0 0}},opacity=0.9,linecolor={[rgb]{0 0 0}}]{%
\psarc(A){1}{-30}{30}
\psarc(B){1}{90}{150}
\psarc(C){1}{210}{270}\closepath}}%
\def\FRAME{%
\psframe*[opacity=0.25](-.5,-.5)(.5,.5)%
\pscustom[fillstyle=solid,fillcolor={[rgb]{0 0 0.7}}]{%
\pspolygon(-0.5,0.5)(-0.5,-0.5)(0.5,-0.5)(0.5,0.5)
\moveto(-0.55,0.55)
\pspolygon(-0.55,0.55)(0.55,0.55)(0.55,-0.55)(-0.55,-0.55)}%
}
\def\CenterPath{%
\psparametricplot[linecolor=blue]{0.5236}{1.047197}{(-3+sqrt(3)*cos(t)+3*sin(t))/6+sqrt(3)/3-0.5|(-3+3*cos(t)+sqrt(3)*sin(t))/6}
\psparametricplot[linecolor=blue]{0.5236}{1.047197}{(3-sqrt(3)*cos(t)-3*sin(t))/6+sqrt(3)/3-0.5|(-3+3*cos(t)+sqrt(3)*sin(t))/6}
\psparametricplot[linecolor=blue]{0.5236}{1.047197}{(3-sqrt(3)*cos(t)-3*sin(t))/6+sqrt(3)/3-0.5|(3-3*cos(t)-sqrt(3)*sin(t))/6}
\psparametricplot[linecolor=blue]{0.5236}{1.047197}{(-3+sqrt(3)*cos(t)+3*sin(t))/6+sqrt(3)/3-0.5|(3-3*cos(t)-sqrt(3)*sin(t))/6}
}%
\pagestyle{empty}
\begin{document}

\begin{center}
\psset{unit=10,algebraic,linejoin=1}%
\begin{animateinline}[controls,loop,
                     begin={\begin{pspicture}(-0.9,-.9)(1.1,.9)},
                     end={\end{pspicture}}]{10}% 10 images/s
\multiframe{31}{iA=0+1}{%
\triangleReuleaux
\pstVerb{
/tan {dup sin exch cos div} bind def
% valable pour alpha entre 0 et 30
/alpha \iA\space def
alpha 0 eq {/alpha 0.0001 def} if
/xT alpha cos 0.5 sub def
/yT alpha sin def
/xK 3 sqrt 2 div 0.5 sub alpha sin sub def
/yK alpha cos 0.5 sub def
/bK yK xK alpha tan mul sub def
/bT yT xT alpha tan div add def
/xS alpha 2 mul sin 2 div bT bK sub mul def
/yS xS alpha tan mul bK add def
/SK xS xK sub dup mul yS yK sub dup mul add sqrt def
/xP xS xK xS sub SK div add def
/yP yS yK yS sub SK div add def
/ST xT xS sub dup mul yS yT sub dup mul add sqrt def
/xR xS xT xS sub ST div add def
/yR yS yT yS sub ST div add def
/xC xR xP add 2 div def
/yC yR yP add 2 div def
}%
\rput{!alpha }(!xC yC){\FRAME}
\pnode{C}\psdot[linecolor=blue](!xC yC)
\CenterPath}
\newframe
\multiframe{31}{iA=30+1}{%
\triangleReuleaux
\pstVerb{%
/tan {dup sin exch cos div} bind def
/xB 3 sqrt 2 div 0.5 sub def
/yB -0.5 def
% valable pour alpha entre 60 et 90
/alpha \iA\space def
/xT alpha sin neg xB add def
/yT alpha cos 0.5 sub def
/xK 3 sqrt -2 div 0.5 add alpha cos add neg def
/yK alpha sin neg 0.5 add def
/bK yK xK alpha tan div add def
/bT yT xT alpha tan mul sub def
/xP alpha 2 mul sin bK bT sub mul 2 div def
/yP xP alpha tan mul bT add def
/PK xK xP sub dup mul yK yP sub dup mul add sqrt def
/xR xP xK xP sub PK div add def
/yR yP yK yP sub PK div add def
/PT xT xP sub dup mul yT yP sub dup mul add sqrt def
/xQ xP xT xP sub PT div add def
/yQ yP yT yP sub PT div add def
/xC xR xQ add 2 div def
/yC yR yQ add 2 div def
}%
\rput{!alpha }(!xC yC){\FRAME}
\pnode(!xC yC){C}\psdot[linecolor=blue](!xC yC)
\CenterPath}
\newframe
\multiframe{31}{iA=60+1}{%
\triangleReuleaux
\pstVerb{
/Div {                         % control the division
  dup 0 eq { pop 0 lt { -1e30 }            % -y/0
                      {  1e30 } ifelse }    % +y/0
       { div } ifelse } def
/tan {dup sin exch cos Div} bind def
% valable pour alpha entre 60 et 90
/alpha \iA\space def
/xT alpha sin -0.5 add def
/yT alpha cos neg def
/xK alpha cos neg 3 sqrt 2 div add 0.5 sub def
/yK alpha sin neg 0.5 add def
/bK yK xK alpha tan div add def
/bT yT alpha tan xT mul sub def
/xP alpha 2 mul sin bK bT sub mul 2 div def
/yP xP alpha tan mul bT add def
/PK xP xK sub dup mul yP yK sub dup mul add sqrt def
/PT xP xT sub dup mul yP yT sub dup mul add sqrt def
/xQ xP xT xP sub PT div add def
/yQ yP yT yP sub PT div add def
/xR xP xK xP sub PK div add def
/yR yP yK yP sub PK div add def
/xC xR xQ add 2 div def
/yC yR yQ add 2 div def
}%
\ifnum\iA=90
\FRAME
\else
\rput{!alpha }(!xC yC){\FRAME}%
\fi
\pnode(!xC yC){C}\psdot[linecolor=blue](!xC yC)
\CenterPath}
\end{animateinline}
\end{center}
\end{document}


Version 2

\documentclass{article}
\usepackage[a4paper,hmargin=1cm]{geometry}
\usepackage{pst-plot,pstricks,pst-node}
\usepackage{animate}
\def\triangleReuleaux{%
\pnode(!-0.5 0){A}
\pnode(!3 sqrt 2 div 0.5 sub -0.5){B}
\pnode(!3 sqrt 2 div 0.5 sub 0.5){C}
\pnode(!3 sqrt 3 div 0.5 sub 0){G}
\pscustom[fillstyle=solid,fillcolor={[rgb]{0.5 0 0}},opacity=0.9,linecolor={[rgb]{0 0 0}}]{%
\psarc(A){1}{-30}{30}
\psarc(B){1}{90}{150}
\psarc(C){1}{210}{270}\closepath}}%
\def\FRAME{%
\psframe*[opacity=0.25](-.5,-.5)(.5,.5)%
\pscustom[fillstyle=solid,fillcolor={[rgb]{0 0 0.7}}]{%
\pspolygon(-0.5,0.5)(-0.5,-0.5)(0.5,-0.5)(0.5,0.5)
\moveto(-0.55,0.55)
\pspolygon(-0.55,0.55)(0.55,0.55)(0.55,-0.55)(-0.55,-0.55)}%
}
\def\CenterPath{%
\psparametricplot[linecolor=blue]{0.5236}{1.047197}{(-3+sqrt(3)*cos(t)+3*sin(t))/6+sqrt(3)/3-0.5|(-3+3*cos(t)+sqrt(3)*sin(t))/6}
\psparametricplot[linecolor=blue]{0.5236}{1.047197}{(3-sqrt(3)*cos(t)-3*sin(t))/6+sqrt(3)/3-0.5|(-3+3*cos(t)+sqrt(3)*sin(t))/6}
\psparametricplot[linecolor=blue]{0.5236}{1.047197}{(3-sqrt(3)*cos(t)-3*sin(t))/6+sqrt(3)/3-0.5|(3-3*cos(t)-sqrt(3)*sin(t))/6}
\psparametricplot[linecolor=blue]{0.5236}{1.047197}{(-3+sqrt(3)*cos(t)+3*sin(t))/6+sqrt(3)/3-0.5|(3-3*cos(t)-sqrt(3)*sin(t))/6}
}%
\def\EnveloppeTriangleCadre{
\psframe*[linecolor=cyan!20,opacity=0.2](-.5,-.5)(.5,.5)
\pscustom[fillstyle=solid,fillcolor=blue,linestyle=none]{
\psparametricplot{1.047197}{0.5236}{(1-cos(t)-sqrt(3)*sin(t))*0.5|(1-sin(t)-sqrt(3)*cos(t))*0.5}
\psline(!1 3 sqrt sub 2 div -0.5)(!1 3 sqrt sub neg 2 div -0.5)
\psparametricplot{0.5236}{1.047197}{-(1-cos(t)-sqrt(3)*sin(t))*0.5|(1-sin(t)-sqrt(3)*cos(t))*0.5}
\psline(!0.5 1 3 sqrt sub 2 div )(!0.5 1 3 sqrt sub neg 2 div)
\psparametricplot{1.047197}{0.5236}{-(1-cos(t)-sqrt(3)*sin(t))*0.5|-(1-sin(t)-sqrt(3)*cos(t))*0.5}
\psline(!1 3 sqrt sub neg 2 div 0.5)(!1 3 sqrt sub 2 div 0.5)
\psparametricplot{0.5236}{1.047197}{(1-cos(t)-sqrt(3)*sin(t))*0.5|-(1-sin(t)-sqrt(3)*cos(t))*0.5}
\psline(!-0.5 1 3 sqrt sub neg 2 div)(!-0.5 1 3 sqrt sub 2 div)
\moveto(! -0.6 0.6)
\psline(-0.6,0.6)(0.6,0.6)(0.6,-0.6)(-0.6,-0.6)(-0.6,0.6)
\closepath}}
\pagestyle{empty}
\begin{document}

\begin{center}
\psset{unit=10,algebraic,linejoin=1}%
\begin{animateinline}[controls,loop,
                     begin={\begin{pspicture}(-0.9,-.9)(1.1,.9)},
                     end={\end{pspicture}}]{10}% 10 images/s
\multiframe{31}{iA=0+1}{%
\triangleReuleaux
\pstVerb{
/tan {dup sin exch cos div} bind def
% valable pour alpha entre 0 et 30
/alpha \iA\space def
alpha 0 eq {/alpha 0.0001 def} if
/xT alpha cos 0.5 sub def
/yT alpha sin def
/xK 3 sqrt 2 div 0.5 sub alpha sin sub def
/yK alpha cos 0.5 sub def
/bK yK xK alpha tan mul sub def
/bT yT xT alpha tan div add def
/xS alpha 2 mul sin 2 div bT bK sub mul def
/yS xS alpha tan mul bK add def
/SK xS xK sub dup mul yS yK sub dup mul add sqrt def
/xP xS xK xS sub SK div add def
/yP yS yK yS sub SK div add def
/ST xT xS sub dup mul yS yT sub dup mul add sqrt def
/xR xS xT xS sub ST div add def
/yR yS yT yS sub ST div add def
/xC xR xP add 2 div def
/yC yR yP add 2 div def
}%
\rput{!alpha }(!xC yC){\EnveloppeTriangleCadre}
\pnode{C}\psdot[linecolor=blue](!xC yC)
\CenterPath}
\newframe
\multiframe{31}{iA=30+1}{%
\triangleReuleaux
\pstVerb{%
/tan {dup sin exch cos div} bind def
/xB 3 sqrt 2 div 0.5 sub def
/yB -0.5 def
% valable pour alpha entre 60 et 90
/alpha \iA\space def
/xT alpha sin neg xB add def
/yT alpha cos 0.5 sub def
/xK 3 sqrt -2 div 0.5 add alpha cos add neg def
/yK alpha sin neg 0.5 add def
/bK yK xK alpha tan div add def
/bT yT xT alpha tan mul sub def
/xP alpha 2 mul sin bK bT sub mul 2 div def
/yP xP alpha tan mul bT add def
/PK xK xP sub dup mul yK yP sub dup mul add sqrt def
/xR xP xK xP sub PK div add def
/yR yP yK yP sub PK div add def
/PT xT xP sub dup mul yT yP sub dup mul add sqrt def
/xQ xP xT xP sub PT div add def
/yQ yP yT yP sub PT div add def
/xC xR xQ add 2 div def
/yC yR yQ add 2 div def
}%
\rput{!alpha }(!xC yC){\EnveloppeTriangleCadre}
\pnode(!xC yC){C}\psdot[linecolor=blue](!xC yC)
\CenterPath}
\newframe
\multiframe{31}{iA=60+1}{%
\triangleReuleaux
\pstVerb{
/Div {                         % control the division
  dup 0 eq { pop 0 lt { -1e30 }            % -y/0
                      {  1e30 } ifelse }    % +y/0
       { div } ifelse } def
/tan {dup sin exch cos Div} bind def
% valable pour alpha entre 60 et 90
/alpha \iA\space def
/xT alpha sin -0.5 add def
/yT alpha cos neg def
/xK alpha cos neg 3 sqrt 2 div add 0.5 sub def
/yK alpha sin neg 0.5 add def
/bK yK xK alpha tan div add def
/bT yT alpha tan xT mul sub def
/xP alpha 2 mul sin bK bT sub mul 2 div def
/yP xP alpha tan mul bT add def
/PK xP xK sub dup mul yP yK sub dup mul add sqrt def
/PT xP xT sub dup mul yP yT sub dup mul add sqrt def
/xQ xP xT xP sub PT div add def
/yQ yP yT yP sub PT div add def
/xR xP xK xP sub PK div add def
/yR yP yK yP sub PK div add def
/xC xR xQ add 2 div def
/yC yR yQ add 2 div def
}%
\ifnum\iA=90
\EnveloppeTriangleCadre
\else
\rput{!alpha }(!xC yC){\EnveloppeTriangleCadre}%
\fi
\pnode(!xC yC){C}\psdot[linecolor=blue](!xC yC)
\CenterPath}
\end{animateinline}
\end{center}
\end{document} 

vendredi 27 mai 2016

Le triangle de Reuleaux - 3 : une propriété du triangle curviligne équilatéral dans le carré

Dans son livre “Principes fondamentaux d’une théorie générale des machines” Franz Reuleaux donne quelques propriétés du triangle curviligne équilatéral tournant dans un carré, en voici une telle qu’il l’énonce(dans la traduction de A. Debize) :
« Nous allons chercher à déterminer les trajectoires polaires, en supposant d’abord que la figure extérieure soit un carré. Pour trouver celle de ces trajectoires qui correspond au carré ABCD (fig. 102), imaginons qu’on imprime au triangle curviligne une rotation autour du pôle O. Dans la position initiale représentée sur la figure, ce point est le milieu de PQ et se trouve situé sur l’axe de symétrie RQ du carré. Si nous supposons maintenant que la rotation se fasse à gauche, le sommet P du triangle curviligne glissera, en descendant, le long du côté AD, tandis que 1e point B marchera vers C, sur le côté DC. Les normales en P et R se coupant toujours à angle droit, il en résulte que le pôle est
le lieu géométrique du sommet d’un triangle rectangle, dont l’hypoténuse glisse, par ses extrémités, sur les côtés d’un angle droit ; ce pôle est aussi toujours l’un des sommets d’un rectangle PDBO, dont la diagonale est constante et égale à PR. Par conséquent, la trajectoire polaire est un arc de cercle, décrit du point D, comme centre, avec un rayon égal à PR=PQ=AB, c’est-a-dire à la longueur du côté du carré. Cet arc doit être pris comme trajectoire jusqu’au point 2, pour lequel la distance de B au point C se trouve précisément réduite à celle qui sépare P de A. A partir de cette position, le
glissement de la corde PQ commence à se produire sur les côtés BA et AD; la trajectoire polaire correspondante est l’arc de cercle 2.5, identique au précédent; on obtient ensuite l’arc 5.4  et, finalement, l’arc 4.1 ou 4.0. La trajectoire polaire du carré est, par conséquent, un carré curviligne, qui se compose de quatre arcs de cercle, décrits des sommets du carré primitif, comme centres, avec la longueur du côté de ce carré pour rayon. »
En voici une animation dont les images ont été calculées avec PSTricks.


Dans le fichier pdf suivant, l'animation a été réalisée avec la package animate d'Alexander Grahn :

Triangle-Reuleaux

Si vous compilez le fichier TeX, le fichier fig102.eps (inclus dans l'archive) suivant doit être placé dans le même répertoire :



samedi 21 mai 2016

Le triangle de Reuleaux - 2 (version trajet un peu plus long)




\documentclass{article}
\usepackage[a4paper,hmargin=1cm]{geometry}
\usepackage{pst-plot,pstricks,pst-node}
% manuel.luque27@gmail.com
\usepackage{animate}
\begin{document}

\begin{center}
\def\triangleReuleauxA{
\pnode(!0 3  sqrt 3 div){A}
\pnode(!-0.5 3 sqrt 6 div neg){B}
\pnode(!0.5 3 sqrt 6 div neg){C}
\pspolygon[showpoints,linecolor=magenta](A)(B)(C)
\psline(A)\psline(B)\psline(C)
\pscustom[fillstyle=solid,fillcolor={[rgb]{0 0.5 0}},opacity=0.6]{%
\psarc(A){1}{240}{300}
\psarc(B){1}{0}{60}
\psarc(C){1}{120}{180}\closepath}%
\psdot[linecolor=red](0,0)
}%
\def\triangleReuleauxB{
\pnode(!0 1){A}
\pnode(!3 sqrt -2 div 0.5){B}
\pnode(0,0){C}
\pnode(! 3 sqrt 6 div neg 0.5){G}
\pspolygon[showpoints,linecolor=magenta](A)(B)(C)
\psline(G)(A)\psline(G)(B)\psline(G)(C)
\pscustom[fillstyle=solid,fillcolor={[rgb]{0 0.5 0}},opacity=0.6]{
\psarc(A){1}{210}{270}
\psarc(B){1}{-30}{30}
\psarc(C){1}{90}{150}\closepath}
\psdot[linecolor=red](G)}%
\begin{animateinline}[controls,palindrome,
                     begin={\begin{pspicture}(-4,-3)(14,4)},
                     end={\end{pspicture}}]{10}% 10 images/s
\multiframe{60}{i=30+-1}{
\psset{unit=4}
\rput(0,-0.02264973070){%
      \psframe*[linecolor=yellow!20,unit=0.1](-7,-5)(35,7)
      \psgrid[subgriddiv=0,gridcolor=blue,griddots=5,gridlabels=0pt,unit=0.1](-7,-5)(35,7)
                        }%
\pstVerb{/psxyG {/alpha exch def
         alpha DegtoRad alpha sin 3 sqrt div sub     % x
         3 sqrt 3 div alpha cos 3 sqrt div sub       % y
     } def
     /dGA 1 3 sqrt div def
     }%
\rput{!\i}(!\i\space neg psxyG){\psset{linecolor=blue}\triangleReuleauxA}
%\psframe[linestyle=none,fillstyle=hlines,hatchwidth=.6pt,hatchsep=2pt](!-0.7 3  sqrt 3 div)(!2.8 3  sqrt 3 div 0.02 add)
%\psline(!-0.7 3  sqrt 3 div)(!2.8 3  sqrt 3 div)
\psframe[linestyle=none,fillstyle=hlines,hatchwidth=.6pt,hatchsep=2pt](!-0.7 3  sqrt 3 div 1 sub)(!3.5 3 sqrt 3 div 1.02 sub)
\psline(!-0.7 3  sqrt 3 div 1 sub)(!3.5 3 sqrt 3 div 1 sub)
\parametricplot[linecolor=red]{-30}{\i\space neg}{t DegtoRad t sin 3 sqrt div sub 3 sqrt 3 div t cos 3 sqrt div sub}
% lieu du sommet A
\parametricplot[linecolor=magenta]{-30}{\i\space neg}{/xG t DegtoRad t sin 3 sqrt div sub def
                                                  /yG 3 sqrt 3 div t cos 3 sqrt div sub def
                                                   dGA t sin mul xG add
                                                   dGA t cos mul yG add}
}%
\newframe
\multiframe{61}{i=0+-1}{
\psset{unit=4}
\rput(0,-0.02264973070){%
      \psframe*[linecolor=yellow!20,unit=0.1](-7,-5)(35,7)
      \psgrid[subgriddiv=0,gridcolor=blue,griddots=5,gridlabels=0pt,unit=0.1](-7,-5)(35,7)
                        }%
\pstVerb{
     /xG1 3.14159 6 div 1 2 3 sqrt mul div sub def
     /yG1 3 sqrt 3 div 0.5 sub def
     /xC1 3.15159 6 div def
     /yC1 3 sqrt 3 div 1 sub def
     /d12 xC1 xG1 sub dup mul yC1 yG1 sub dup mul add sqrt def
     /dGA 1 3 sqrt div def
     }%
\rput{\i}(!xC1 yC1){\psset{linecolor=blue}\triangleReuleauxB}
%\psframe[linestyle=none,fillstyle=hlines,hatchwidth=.6pt,hatchsep=2pt](!-0.7 3  sqrt 3 div)(!2.8 3  sqrt 3 div 0.02 add)
%\psline(!-0.7 3  sqrt 3 div)(!2.8 3  sqrt 3 div)
\psframe[linestyle=none,fillstyle=hlines,hatchwidth=.6pt,hatchsep=2pt](!-0.7 3  sqrt 3 div 1 sub)(!3.5 3 sqrt 3 div 1.02 sub)
\psline(!-0.7 3  sqrt 3 div 1 sub)(!3.5 3 sqrt 3 div 1 sub)
\parametricplot[linecolor=red]{-30}{30}{t DegtoRad t sin 3 sqrt div sub  3 sqrt 3 div t cos 3 sqrt div sub}
\psarcn[linecolor=red](!xC1 yC1){!d12}{120}{!\i\space 120 add}
% lieu du sommet A
\parametricplot[linecolor=magenta]{-30}{30}{/xG t DegtoRad t sin 3 sqrt div sub def
                                        /yG 3 sqrt 3 div t cos 3 sqrt div sub def
                                         dGA t sin mul xG add
                                         dGA t cos mul yG add}
\psarcn[linecolor=magenta](!xC1 yC1){1}{90}{!\i\space 90 add}
}%
\newframe
\multiframe{61}{i=30+-1,I=0+-1}{
\psset{unit=4}
\rput(0,-0.02264973070){%
      \psframe*[linecolor=yellow!20,unit=0.1](-7,-5)(35,7)
      \psgrid[subgriddiv=0,gridcolor=blue,griddots=5,gridlabels=0pt,unit=0.1](-7,-5)(35,7)
                        }%
\pstVerb{/psxyG {/alpha exch def
         alpha DegtoRad alpha sin 3 sqrt div sub     % x
         3 sqrt 3 div alpha cos 3 sqrt div sub       % y
     } def
     /xG1 3.14159 6 div 1 2 3 sqrt mul div sub def
     /yG1 3 sqrt 3 div 0.5 sub def
     /xC1 3.15159 6 div def
     /yC1 3 sqrt 3 div 1 sub def
     /d12 xC1 xG1 sub dup mul yC1 yG1 sub dup mul add sqrt def
     /dGA 1 3 sqrt div def
     }%
\rput{!\i}(!\i\space neg psxyG exch xC1 2 mul add exch){\psset{linecolor=blue}\triangleReuleauxA}
%\psframe[linestyle=none,fillstyle=hlines,hatchwidth=.6pt,hatchsep=2pt](!-0.7 3  sqrt 3 div)(!2.8 3  sqrt 3 div 0.02 add)
%\psline(!-0.7 3  sqrt 3 div)(!2.8 3  sqrt 3 div)
\psframe[linestyle=none,fillstyle=hlines,hatchwidth=.6pt,hatchsep=2pt](!-0.7 3  sqrt 3 div 1 sub)(!3.5 3 sqrt 3 div 1.02 sub)
\psline(!-0.7 3  sqrt 3 div 1 sub)(!3.5 3 sqrt 3 div 1 sub)
\parametricplot[linecolor=red]{-30}{30}{t DegtoRad t sin 3 sqrt div sub  3 sqrt 3 div t cos 3 sqrt div sub}
\psarcn[linecolor=red](!xC1 yC1){!d12}{120}{60}
\parametricplot[linecolor=red]{-30}{\i\space neg}{t DegtoRad t sin 3 sqrt div sub xC1 2 mul add  3 sqrt 3 div t cos 3 sqrt div sub}
% lieu du sommet A
\parametricplot[linecolor=magenta]{-30}{30}{/xG t DegtoRad t sin 3 sqrt div sub def
                                        /yG 3 sqrt 3 div t cos 3 sqrt div sub def
                                         dGA t sin mul xG add
                                         dGA t cos mul yG add}
\psarcn[linecolor=magenta](!xC1 yC1){1}{90}{30}
\parametricplot[linecolor=magenta]{-30}{\i\space neg}{/xG t DegtoRad t sin 3 sqrt div sub def
                                          /yG 3 sqrt 3 div t cos 3 sqrt div sub def
                                           0.5 t cos mul 3 sqrt 6 div neg t sin mul add xG xC1 2 mul add add
                                           -0.5 t sin mul 3 sqrt 6 div neg t cos mul add yG add}
}%
\newframe
\multiframe{61}{i=0+-1}{
\psset{unit=4}
\rput(0,-0.02264973070){%
      \psframe*[linecolor=yellow!20,unit=0.1](-7,-5)(35,7)
      \psgrid[subgriddiv=0,gridcolor=blue,griddots=5,gridlabels=0pt,unit=0.1](-7,-5)(35,7)
                        }%
\pstVerb{
     /xG1 3.14159 6 div 1 2 3 sqrt mul div sub def
     /yG1 3 sqrt 3 div 0.5 sub def
     /xC1 3.15159 6 div def
     /yC1 3 sqrt 3 div 1 sub def
     /d12 xC1 xG1 sub dup mul yC1 yG1 sub dup mul add sqrt def
     /dGA 1 3 sqrt div def
     }%
\rput{\i}(!xC1 3 mul yC1){\psset{linecolor=blue}\triangleReuleauxB}
%\psframe[linestyle=none,fillstyle=hlines,hatchwidth=.6pt,hatchsep=2pt](!-0.7 3  sqrt 3 div)(!2.8 3  sqrt 3 div 0.02 add)
%\psline(!-0.7 3  sqrt 3 div)(!2.8 3  sqrt 3 div)
\psframe[linestyle=none,fillstyle=hlines,hatchwidth=.6pt,hatchsep=2pt](!-0.7 3  sqrt 3 div 1 sub)(!3.5 3 sqrt 3 div 1.02 sub)
\psline(!-0.7 3  sqrt 3 div 1 sub)(!3.5 3 sqrt 3 div 1 sub)
\parametricplot[linecolor=red]{-30}{30}{t DegtoRad t sin 3 sqrt div sub  3 sqrt 3 div t cos 3 sqrt div sub}
\psarcn[linecolor=red](!xC1 yC1){!d12}{120}{60}
\parametricplot[linecolor=red]{-30}{30}{t DegtoRad t sin 3 sqrt div sub xC1 2 mul add  3 sqrt 3 div t cos 3 sqrt div sub}
\psarcn[linecolor=red](!xC1 3 mul yC1){!d12}{120}{!\i\space 120 add}
% lieu du sommet A
\parametricplot[linecolor=magenta]{-30}{30}{/xG t DegtoRad t sin 3 sqrt div sub def
                                        /yG 3 sqrt 3 div t cos 3 sqrt div sub def
                                         dGA t sin mul xG add
                                         dGA t cos mul yG add}
\psarcn[linecolor=magenta](!xC1 yC1){1}{90}{30}
\parametricplot[linecolor=magenta]{-30}{30}{/xG t DegtoRad t sin 3 sqrt div sub def
                                         /yG 3 sqrt 3 div t cos 3 sqrt div sub def
                                          0.5 t cos mul 3 sqrt 6 div neg t sin mul add xG xC1 2 mul add add
                                          -0.5 t sin mul 3 sqrt 6 div neg t cos mul add yG add}
                                          }%
\newframe
\multiframe{61}{i=30+-1}{
\psset{unit=4}
\rput(0,-0.02264973070){%
      \psframe*[linecolor=yellow!20,unit=0.1](-7,-5)(35,7)
      \psgrid[subgriddiv=0,gridcolor=blue,griddots=5,gridlabels=0pt,unit=0.1](-7,-5)(35,7)
                        }%
\pstVerb{/psxyG {/alpha exch def
         alpha DegtoRad alpha sin 3 sqrt div sub     % x
         3 sqrt 3 div alpha cos 3 sqrt div sub       % y
     } def
     /xG1 3.14159 6 div 1 2 3 sqrt mul div sub def
     /yG1 3 sqrt 3 div 0.5 sub def
     /xC1 3.15159 6 div def
     /yC1 3 sqrt 3 div 1 sub def
     /d12 xC1 xG1 sub dup mul yC1 yG1 sub dup mul add sqrt def
     /dGA 1 3 sqrt div def
     }%
\rput{!\i}(!\i\space neg psxyG exch xC1 4 mul add exch){\psset{linecolor=blue}\triangleReuleauxA}
%\psframe[linestyle=none,fillstyle=hlines,hatchwidth=.6pt,hatchsep=2pt](!-0.7 3  sqrt 3 div)(!2.8 3  sqrt 3 div 0.02 add)
%\psline(!-0.7 3  sqrt 3 div)(!2.8 3  sqrt 3 div)
\psframe[linestyle=none,fillstyle=hlines,hatchwidth=.6pt,hatchsep=2pt](!-0.7 3  sqrt 3 div 1 sub)(!3.5 3 sqrt 3 div 1.02 sub)
\psline(!-0.7 3  sqrt 3 div 1 sub)(!3.5 3 sqrt 3 div 1 sub)
\parametricplot[linecolor=red]{-30}{30}{t DegtoRad t sin 3 sqrt div sub  3 sqrt 3 div t cos 3 sqrt div sub}
\psarcn[linecolor=red](!xC1 yC1){!d12}{120}{60}
\parametricplot[linecolor=red]{-30}{30}{t DegtoRad t sin 3 sqrt div sub xC1 2 mul add  3 sqrt 3 div t cos 3 sqrt div sub}
\psarcn[linecolor=red](!xC1 3 mul yC1){!d12}{120}{60}
% lieu du sommet A
\parametricplot[linecolor=magenta]{-30}{30}{/xG t DegtoRad t sin 3 sqrt div sub def
                                        /yG 3 sqrt 3 div t cos 3 sqrt div sub def
                                         dGA t sin mul xG add
                                         dGA t cos mul yG add}
\psarcn[linecolor=magenta](!xC1 yC1){1}{90}{30}
\parametricplot[linecolor=magenta]{-30}{30}{/xG t DegtoRad t sin 3 sqrt div sub def
                                          /yG 3 sqrt 3 div t cos 3 sqrt div sub def
                                           0.5 t cos mul 3 sqrt 6 div neg t sin mul add xG xC1 2 mul add add
                                           -0.5 t sin mul 3 sqrt 6 div neg t cos mul add yG add}
\parametricplot[linecolor=red]{-30}{\i\space neg}{t DegtoRad t sin 3 sqrt div sub xC1 4 mul add  3 sqrt 3 div t cos 3 sqrt div sub}
\parametricplot[linecolor=magenta]{30}{\i\space}{/xG t DegtoRad t sin 3 sqrt div sub def
                                          /yG 3 sqrt 3 div t cos 3 sqrt div sub def
                                          /xP1 0.5 t cos mul 3 sqrt 6 div neg t sin mul add xG xC1 2 mul add add def
                                          /yP1 -0.5 t sin mul 3 sqrt 6 div neg t cos mul add yG add def
                                          6 xC1 mul xP1 sub
                                          yP1
                                          }
}%
\newframe
\multiframe{61}{i=0+-1}{
\psset{unit=4}
\rput(0,-0.02264973070){%
      \psframe*[linecolor=yellow!20,unit=0.1](-7,-5)(35,7)
      \psgrid[subgriddiv=0,gridcolor=blue,griddots=5,gridlabels=0pt,unit=0.1](-7,-5)(35,7)
                        }%
\pstVerb{
     /xG1 3.14159 6 div 1 2 3 sqrt mul div sub def
     /yG1 3 sqrt 3 div 0.5 sub def
     /xC1 3.15159 6 div def
     /yC1 3 sqrt 3 div 1 sub def
     /d12 xC1 xG1 sub dup mul yC1 yG1 sub dup mul add sqrt def
     /dGA 1 3 sqrt div def
     }%
\rput{\i}(!xC1 5 mul yC1){\psset{linecolor=blue}\triangleReuleauxB}
%\psframe[linestyle=none,fillstyle=hlines,hatchwidth=.6pt,hatchsep=2pt](!-0.7 3  sqrt 3 div)(!2.8 3  sqrt 3 div 0.02 add)
%\psline(!-0.7 3  sqrt 3 div)(!2.8 3  sqrt 3 div)
\psframe[linestyle=none,fillstyle=hlines,hatchwidth=.6pt,hatchsep=2pt](!-0.7 3  sqrt 3 div 1 sub)(!3.5 3 sqrt 3 div 1.02 sub)
\psline(!-0.7 3  sqrt 3 div 1 sub)(!3.5 3 sqrt 3 div 1 sub)
\parametricplot[linecolor=red]{-30}{30}{t DegtoRad t sin 3 sqrt div sub  3 sqrt 3 div t cos 3 sqrt div sub}
\psarcn[linecolor=red](!xC1 yC1){!d12}{120}{60}
\parametricplot[linecolor=red]{-30}{30}{t DegtoRad t sin 3 sqrt div sub xC1 2 mul add  3 sqrt 3 div t cos 3 sqrt div sub}
\psarcn[linecolor=red](!xC1 3 mul yC1){!d12}{120}{60}
\parametricplot[linecolor=red]{-30}{30}{t DegtoRad t sin 3 sqrt div sub xC1 4 mul add  3 sqrt 3 div t cos 3 sqrt div sub}
\psarcn[linecolor=red](!xC1 5 mul yC1){!d12}{120}{!\i\space 120 add}
% lieu du sommet A
\parametricplot[linecolor=magenta]{-30}{30}{/xG t DegtoRad t sin 3 sqrt div sub def
                                        /yG 3 sqrt 3 div t cos 3 sqrt div sub def
                                         dGA t sin mul xG add
                                         dGA t cos mul yG add}
\psarcn[linecolor=magenta](!xC1 yC1){1}{90}{30}
\parametricplot[linecolor=magenta]{-30}{30}{/xG t DegtoRad t sin 3 sqrt div sub def
                                            /yG 3 sqrt 3 div t cos 3 sqrt div sub def
                                            0.5 t cos mul 3 sqrt 6 div neg t sin mul add xG xC1 2 mul add add
                                            -0.5 t sin mul 3 sqrt 6 div neg t cos mul add yG add}
\parametricplot[linecolor=magenta]{30}{-30}{/xG t DegtoRad t sin 3 sqrt div sub def
                                          /yG 3 sqrt 3 div t cos 3 sqrt div sub def
                                          /xP1 0.5 t cos mul 3 sqrt 6 div neg t sin mul add xG xC1 2 mul add add def
                                          /yP1 -0.5 t sin mul 3 sqrt 6 div neg t cos mul add yG add def
                                          6 xC1 mul xP1 sub
                                          yP1}
\psarcn[linecolor=magenta](!xC1 5 mul yC1){1}{150}{!\i\space 150 add}
}%
\end{animateinline}
\end{center}
\end{document}

vendredi 20 mai 2016

Le triangle de Reuleaux - 2



Si on fait rouler le triangle (curviligne) de Reuleaux entre 2 planchettes horizontales, on peut voir les différentes phases du mouvement : roulement sans glissement d'un côté sur le sol, puis pivotement autour du premier sommet en contact avec le sol, ensuite roulement sans glissement du côté suivant etc.

Voici une animation réalisée avec PSTricks, on y voit le mouvement du triangle de Reuleaux ainsi que ceux du centre de gravité et de l'un des sommets.

Le code suivant permet, après compilation, une animation dans le fichier pdf, pas à pas si on le souhaite, grâce au package animate d'Alexander Grahn. Ce code est très touffu et il faut certainement le retravailler pour en faire quelque chose de plus court.

\documentclass{article}
\usepackage[a4paper,hmargin=1cm]{geometry}
\usepackage{pst-plot,pstricks,pst-node}
% manuel.luque27@gmail.com
\usepackage{animate}
\begin{document}

\begin{center}
\def\triangleReuleauxA{
\pnode(!0 3  sqrt 3 div){A}
\pnode(!-0.5 3 sqrt 6 div neg){B}
\pnode(!0.5 3 sqrt 6 div neg){C}
\pspolygon[showpoints,linestyle=none,linecolor=magenta](A)(B)(C)
\pscustom[fillstyle=solid,fillcolor={[rgb]{0 0.5 0}},opacity=0.6]{%
\psarc(A){1}{240}{300}
\psarc(B){1}{0}{60}
\psarc(C){1}{120}{180}\closepath}%
\psdot[linecolor=red](0,0)
}%
\def\triangleReuleauxB{
\pnode(!0 1){A}
\pnode(!3 sqrt -2 div 0.5){B}
\pnode(0,0){C}
\pspolygon[showpoints,linestyle=none,linecolor=magenta](A)(B)(C)
\pscustom[fillstyle=solid,fillcolor={[rgb]{0 0.5 0}},opacity=0.6]{
\psarc(A){1}{210}{270}
\psarc(B){1}{-30}{30}
\psarc(C){1}{90}{150}\closepath}
\psdot[linecolor=red](! 3 sqrt 6 div neg 0.5)}%
\begin{animateinline}[controls,palindrome,
                     begin={\begin{pspicture}(-4,-3)(13,4)},
                     end={\end{pspicture}}]{10}% 10 images/s
\multiframe{60}{i=30+-1}{
\psset{unit=5}
\rput(0,-0.02264973070){%
      \psframe*[linecolor=yellow!20,unit=0.1](-7,-5)(25,7)
      \psgrid[subgriddiv=0,gridcolor=blue,griddots=5,gridlabels=0pt,unit=0.1](-7,-5)(25,7)
                        }%
\pstVerb{/psxyG {/alpha exch def
         alpha DegtoRad alpha sin 3 sqrt div sub     % x
         3 sqrt 3 div alpha cos 3 sqrt div sub       % y
     } def
     /dGA 1 3 sqrt div def
     }%
\rput{!\i}(!\i\space neg psxyG){\psset{linecolor=blue}\triangleReuleauxA}
\psframe[linestyle=none,fillstyle=hlines,hatchwidth=.6pt,hatchsep=2pt](!-0.7 3  sqrt 3 div)(!2.5 3  sqrt 3 div 0.02 add)
\psline(!-0.7 3  sqrt 3 div)(!2.5 3  sqrt 3 div)
\psframe[linestyle=none,fillstyle=hlines,hatchwidth=.6pt,hatchsep=2pt](!-0.7 3  sqrt 3 div 1 sub)(!2.5 3 sqrt 3 div 1.02 sub)
\psline(!-0.7 3  sqrt 3 div 1 sub)(!2.5 3 sqrt 3 div 1 sub)
\parametricplot[linecolor=red]{-30}{\i\space neg}{t DegtoRad t sin 3 sqrt div sub 3 sqrt 3 div t cos 3 sqrt div sub}
% lieu du sommet A
\parametricplot[linecolor=magenta]{-30}{\i\space neg}{/xG t DegtoRad t sin 3 sqrt div sub def
                                                  /yG 3 sqrt 3 div t cos 3 sqrt div sub def
                                                   dGA t sin mul xG add
                                                   dGA t cos mul yG add}
}%
\newframe
\multiframe{61}{i=0+-1}{
\psset{unit=5}
\rput(0,-0.02264973070){%
      \psframe*[linecolor=yellow!20,unit=0.1](-7,-5)(25,7)
      \psgrid[subgriddiv=0,gridcolor=blue,griddots=5,gridlabels=0pt,unit=0.1](-7,-5)(25,7)
                        }%
\pstVerb{
     /xG1 3.14159 6 div 1 2 3 sqrt mul div sub def
     /yG1 3 sqrt 3 div 0.5 sub def
     /xC1 3.15159 6 div def
     /yC1 3 sqrt 3 div 1 sub def
     /d12 xC1 xG1 sub dup mul yC1 yG1 sub dup mul add sqrt def
     /dGA 1 3 sqrt div def
     }%
\rput{\i}(!xC1 yC1){\psset{linecolor=blue}\triangleReuleauxB}
\psframe[linestyle=none,fillstyle=hlines,hatchwidth=.6pt,hatchsep=2pt](!-0.7 3  sqrt 3 div)(!2.5 3  sqrt 3 div 0.02 add)
\psline(!-0.7 3  sqrt 3 div)(!2.5 3  sqrt 3 div)
\psframe[linestyle=none,fillstyle=hlines,hatchwidth=.6pt,hatchsep=2pt](!-0.7 3  sqrt 3 div 1 sub)(!2.5 3 sqrt 3 div 1.02 sub)
\psline(!-0.7 3  sqrt 3 div 1 sub)(!2.5 3 sqrt 3 div 1 sub)
\parametricplot[linecolor=red]{-30}{30}{t DegtoRad t sin 3 sqrt div sub  3 sqrt 3 div t cos 3 sqrt div sub}
\psarcn[linecolor=red](!xC1 yC1){!d12}{120}{!\i\space 120 add}
% lieu du sommet A
\parametricplot[linecolor=magenta]{-30}{30}{/xG t DegtoRad t sin 3 sqrt div sub def
                                        /yG 3 sqrt 3 div t cos 3 sqrt div sub def
                                         dGA t sin mul xG add
                                         dGA t cos mul yG add}
\psarcn[linecolor=magenta](!xC1 yC1){1}{90}{!\i\space 90 add}
}%
\newframe
\multiframe{61}{i=30+-1,I=0+-1}{
\psset{unit=5}
\rput(0,-0.02264973070){%
      \psframe*[linecolor=yellow!20,unit=0.1](-7,-5)(25,7)
      \psgrid[subgriddiv=0,gridcolor=blue,griddots=5,gridlabels=0pt,unit=0.1](-7,-5)(25,7)
                        }%
\pstVerb{/psxyG {/alpha exch def
         alpha DegtoRad alpha sin 3 sqrt div sub     % x
         3 sqrt 3 div alpha cos 3 sqrt div sub       % y
     } def
     /xG1 3.14159 6 div 1 2 3 sqrt mul div sub def
     /yG1 3 sqrt 3 div 0.5 sub def
     /xC1 3.15159 6 div def
     /yC1 3 sqrt 3 div 1 sub def
     /d12 xC1 xG1 sub dup mul yC1 yG1 sub dup mul add sqrt def
     /dGA 1 3 sqrt div def
     }%
\rput{!\i}(!\i\space neg psxyG exch xC1 2 mul add exch){\psset{linecolor=blue}\triangleReuleauxA}
\psframe[linestyle=none,fillstyle=hlines,hatchwidth=.6pt,hatchsep=2pt](!-0.7 3  sqrt 3 div)(!2.5 3  sqrt 3 div 0.02 add)
\psline(!-0.7 3  sqrt 3 div)(!2.5 3  sqrt 3 div)
\psframe[linestyle=none,fillstyle=hlines,hatchwidth=.6pt,hatchsep=2pt](!-0.7 3  sqrt 3 div 1 sub)(!2.5 3 sqrt 3 div 1.02 sub)
\psline(!-0.7 3  sqrt 3 div 1 sub)(!2.5 3 sqrt 3 div 1 sub)
\parametricplot[linecolor=red]{-30}{30}{t DegtoRad t sin 3 sqrt div sub  3 sqrt 3 div t cos 3 sqrt div sub}
\psarcn[linecolor=red](!xC1 yC1){!d12}{120}{60}
\parametricplot[linecolor=red]{-30}{\i\space neg}{t DegtoRad t sin 3 sqrt div sub xC1 2 mul add  3 sqrt 3 div t cos 3 sqrt div sub}
% lieu du sommet A
\parametricplot[linecolor=magenta]{-30}{30}{/xG t DegtoRad t sin 3 sqrt div sub def
                                        /yG 3 sqrt 3 div t cos 3 sqrt div sub def
                                         dGA t sin mul xG add
                                         dGA t cos mul yG add}
\psarcn[linecolor=magenta](!xC1 yC1){1}{90}{30}
\parametricplot[linecolor=magenta]{-30}{\i\space neg}{/xG t DegtoRad t sin 3 sqrt div sub def
                                          /yG 3 sqrt 3 div t cos 3 sqrt div sub def
                                           0.5 t cos mul 3 sqrt 6 div neg t sin mul add xG xC1 2 mul add add
                                           -0.5 t sin mul 3 sqrt 6 div neg t cos mul add yG add}
}%
\newframe
\multiframe{61}{i=0+-1}{
\psset{unit=5}
\rput(0,-0.02264973070){%
      \psframe*[linecolor=yellow!20,unit=0.1](-7,-5)(25,7)
      \psgrid[subgriddiv=0,gridcolor=blue,griddots=5,gridlabels=0pt,unit=0.1](-7,-5)(25,7)
                        }%
\pstVerb{
     /xG1 3.14159 6 div 1 2 3 sqrt mul div sub def
     /yG1 3 sqrt 3 div 0.5 sub def
     /xC1 3.15159 6 div def
     /yC1 3 sqrt 3 div 1 sub def
     /d12 xC1 xG1 sub dup mul yC1 yG1 sub dup mul add sqrt def
     /dGA 1 3 sqrt div def
     }%
\rput{\i}(!xC1 3 mul yC1){\psset{linecolor=blue}\triangleReuleauxB}
\psframe[linestyle=none,fillstyle=hlines,hatchwidth=.6pt,hatchsep=2pt](!-0.7 3  sqrt 3 div)(!2.5 3  sqrt 3 div 0.02 add)
\psline(!-0.7 3  sqrt 3 div)(!2.5 3  sqrt 3 div)
\psframe[linestyle=none,fillstyle=hlines,hatchwidth=.6pt,hatchsep=2pt](!-0.7 3  sqrt 3 div 1 sub)(!2.5 3 sqrt 3 div 1.02 sub)
\psline(!-0.7 3  sqrt 3 div 1 sub)(!2.5 3 sqrt 3 div 1 sub)
\parametricplot[linecolor=red]{-30}{30}{t DegtoRad t sin 3 sqrt div sub  3 sqrt 3 div t cos 3 sqrt div sub}
\psarcn[linecolor=red](!xC1 yC1){!d12}{120}{60}
\parametricplot[linecolor=red]{-30}{30}{t DegtoRad t sin 3 sqrt div sub xC1 2 mul add  3 sqrt 3 div t cos 3 sqrt div sub}
\psarcn[linecolor=red](!xC1 3 mul yC1){!d12}{120}{!\i\space 120 add}
% lieu du sommet A
\parametricplot[linecolor=magenta]{-30}{30}{/xG t DegtoRad t sin 3 sqrt div sub def
                                        /yG 3 sqrt 3 div t cos 3 sqrt div sub def
                                         dGA t sin mul xG add
                                         dGA t cos mul yG add}
\psarcn[linecolor=magenta](!xC1 yC1){1}{90}{30}
\parametricplot[linecolor=magenta]{-30}{30}{/xG t DegtoRad t sin 3 sqrt div sub def
                                         /yG 3 sqrt 3 div t cos 3 sqrt div sub def
                                          0.5 t cos mul 3 sqrt 6 div neg t sin mul add xG xC1 2 mul add add
                                          -0.5 t sin mul 3 sqrt 6 div neg t cos mul add yG add}
}%
\end{animateinline}
\end{center}
\end{document}




mercredi 18 mai 2016

Le triangle de Reuleaux - 1

Le triangle curviligne a été décrit par Franz Reuleaux dans son ouvrage : “Cinématique : Principes fondamentaux d’une théorie générale des machines” traduit par A. Debize en 1877. Ce livre a été numérisé par Google, il est librement disponible.
Le chapitre 25 est consacré aux figures de largeur constante, il ne comprend aucun calcul mais des raisonnements et des constructions géométriques, il débute ainsi :
« En partant du principe établi au § 21, nous sommes conduits, par voie de synthèse, à une série d’autres couples d’éléments, dont quelques-uns doivent faire ici l’objet d’un examen spécial. Si à une figure plane on mène deux tangentes parallèles AB et CD (fig. 99), la distance c de ces tangentes est la mesure de la dimension de la figure, dans la direction des normales d’appui. Cette dimension, qui constitue ce qu’on peut appeler la largeur de la figure, est, en général, une grandeur variable. Mais on peut imaginer des figures dans lesquelles la largeur soit constante, c’est-à-dire dans lesquelles tous les
couples de tangentes parallèles et formant appui, en sens contraires, aient la même distance; 1e cercle en fournit un exemple.
Si à une figure jouissant de cette propriété on mène deux couples de tangentes de ce genre, ces lignes toucheront la figure en quatre points et constitueront ainsi des appuis susceptibles d’empêcher toute translation, ainsi qu’il a été démontré au § 18. Mais nous savons également que ces appuis ne s’opposent pas à la rotation de la figure et que, de plus, cette rotation ne peut avoir lieu qu’autour d’un seul point; ce qui revient à dire que les normales aux quatre points d’appui se coupent toutes en un même point, ou que les normales d’appui coïncident, comme l’indique la fig. 100, où la normale en a passe par c et celle en d par b. Puisqu’en effet la largeur de la figure est constante, on doit en conclure que, pour tous les changements de position de cette figure, à l’intérieur du quadrilatère des tangentes, le système d’appuis subsiste, et que, par suite, d’après le § 2l, il doit exister un pôle unique. Il résulte également de là que les figures de largeur constante jouissent de cette propriété caractéristique que, sur le rayon de courbure de chaque élément du contour, se trouve situé, non-seulement le centre de courbure correspondant, mais encore celui de l’élément opposé. Les quatre tangentes limitent, dans le plan, un carré, ou, plus généralement, un losange ABCD. On peut conclure de là que toute figure de largeur constante est desmodromique dans un losange qui l’entoure, et que, par suite, elle peut servir à former, avec ce losange, un couple d’éléments. »


Il existe bien sûr de très nombreux schémas, animations en 2D et 3D sur internet et ce triangle et les polygones de Reuleaux ont été étudiés par de très nombreux auteurs : en voici deux, l’un d'Eric Weisstein parce qu’il y a beaucoup de renseignements théoriques sur les propriétés du triangle :
http://mathworld.wolfram.com/ReuleauxTriangle.html
et l’autre de Jean-Bernard Roux, parce ce qu’il contient des explications et des calculs très concrets pour faire tourner le triangle dans le carré. :
http://rouxjeanbernard.ch/AM/html/amch87.html

Le magazine ``Dossier pour la SCIENCE''  N°91 d'Avril-Juin 2016 contient un article intitulé ``De l'importance d'être constant... dans sa largeur'' où il est question du triangle de Reuleaux, des polygones de Reuleaux et de compléments mathématiques en rapport avec le titre de l'article.
http://www.pourlascience.fr/ewb_pages/d/dossierpourlascience.php

Voici deux adaptations réalisées avec PSTricks :
Le code ci-dessous permet une animation dans le fichier pdf grâce au package animate d'Alexander Grahn.
https://www.ctan.org/tex-archive/macros/latex/contrib/animate

\documentclass{article}
\usepackage{pst-plot,pstricks,pst-node,pst-text}
\usepackage{amsmath,amssymb}
\usepackage[latin1]{inputenc}%
\usepackage[T1]{fontenc}
\usepackage{animate}
\begin{document}
\begin{center}
\def\triangleReuleaux{
\pnode(!3 sqrt -3 div 0){A}
\pnode(!3 sqrt 6 div -0.5){B}
\pnode(!3 sqrt 6 div 0.5){C}
%\pspolygon(A)(B)(C)
%\psdots(A)(B)(C)
\pscustom[linestyle=none,fillstyle=solid,fillcolor={[rgb]{0.15 0.15 0.15}},opacity=0.7]{
\psarc(A){1}{-30}{30}
\psarc(B){1}{90}{150}
\psarc(C){1}{210}{270}\closepath}
\pscustom[linecolor=red]{%
\psarc(A){0.998}{-30}{30}
\psarc(B){0.998}{90}{150}
\psarc(C){0.998}{210}{270}\closepath}
\psdot[linecolor=red](!0 0)
}%
\def\CenterPath{
\psparametricplot[linecolor=red]{0.5236}{1.047197}{(-3+sqrt(3)*cos(t)+3*sin(t))/6|(-3+3*cos(t)+sqrt(3)*sin(t))/6}
\psparametricplot[linecolor=red]{0.5236}{1.047197}{(3-sqrt(3)*cos(t)-3*sin(t))/6|(-3+3*cos(t)+sqrt(3)*sin(t))/6}
\psparametricplot[linecolor=red]{0.5236}{1.047197}{(3-sqrt(3)*cos(t)-3*sin(t))/6|(3-3*cos(t)-sqrt(3)*sin(t))/6}
\psparametricplot[linecolor=red]{0.5236}{1.047197}{(-3+sqrt(3)*cos(t)+3*sin(t))/6|(3-3*cos(t)-sqrt(3)*sin(t))/6}
}%
\def\EnveloppeTriangleCadre{
\psframe*[linecolor=cyan!20](-.5,-.5)(.5,.5)
\pscustom[fillstyle=solid,fillcolor=blue,linestyle=none]{
\psparametricplot{1.047197}{0.5236}{(1-cos(t)-sqrt(3)*sin(t))*0.5|(1-sin(t)-sqrt(3)*cos(t))*0.5}
\psline(!1 3 sqrt sub 2 div -0.5)(!1 3 sqrt sub neg 2 div -0.5)
\psparametricplot{0.5236}{1.047197}{-(1-cos(t)-sqrt(3)*sin(t))*0.5|(1-sin(t)-sqrt(3)*cos(t))*0.5}
\psline(!0.5 1 3 sqrt sub 2 div )(!0.5 1 3 sqrt sub neg 2 div)
\psparametricplot{1.047197}{0.5236}{-(1-cos(t)-sqrt(3)*sin(t))*0.5|-(1-sin(t)-sqrt(3)*cos(t))*0.5}
\psline(!1 3 sqrt sub neg 2 div 0.5)(!1 3 sqrt sub 2 div 0.5)
\psparametricplot{0.5236}{1.047197}{(1-cos(t)-sqrt(3)*sin(t))*0.5|-(1-sin(t)-sqrt(3)*cos(t))*0.5}
\psline(!-0.5 1 3 sqrt sub neg 2 div)(!-0.5 1 3 sqrt sub 2 div)
\moveto(! -0.6 0.6)
\psline(-0.6,0.6)(0.6,0.6)(0.6,-0.6)(-0.6,-0.6)(-0.6,0.6)
\closepath}%
\psgrid[subgriddiv=0,gridcolor=blue,griddots=5,gridlabels=0pt,unit=0.1](-5,-5)(5,5)}
\psset{unit=10,algebraic,linejoin=1}%
\begin{animateinline}[controls,loop,
                     begin={\begin{pspicture}(-.7,-.7)(.7,.7)},
                     end={\end{pspicture}}]{20}% 20 images/s
\multiframe{30}{iA=60+-1,IA=0+-1}{%
\EnveloppeTriangleCadre%
\pstVerb{%
/posxy1 {/alpha exch def
       -3 3 sqrt alpha cos mul add 3 alpha sin mul add 6 div % x
       -3 3 alpha cos mul add 3 sqrt alpha sin mul add 6 div % y
       } def}%
 \rput{\IA}(!\iA\space posxy1){\triangleReuleaux}\CenterPath}
\newframe
\multiframe{30}{iA=30+1,IA=-30+-1}{%
\EnveloppeTriangleCadre%
\pstVerb{%
/posxy2 {/alpha exch def
       3 3 sqrt alpha cos mul sub -3 alpha sin mul add 6 div % x
       -3 3 alpha cos mul add 3 sqrt alpha sin mul add 6 div % y
       } def}%
 \rput{\IA}(!\iA\space posxy2){\triangleReuleaux}\CenterPath}
\newframe
\multiframe{30}{iA=60+-1,IA=-60+-1}{%
\EnveloppeTriangleCadre%
\pstVerb{%
/posxy3 {/alpha exch def
       3 3 sqrt alpha cos mul sub -3 alpha sin mul add 6 div % x
       3 3 alpha cos mul sub 3 sqrt alpha sin mul sub 6 div % y
       } def}%
 \rput{\IA}(!\iA\space posxy3){\triangleReuleaux}\CenterPath}
\newframe
\multiframe{30}{iA=30+1,IA=30+-1}{%
\EnveloppeTriangleCadre%
\pstVerb{%
/posxy4 {/alpha exch def
       -3 3 sqrt alpha cos mul add 3 alpha sin mul add 6 div % x
        3 3 alpha cos mul sub 3 sqrt alpha sin mul sub 6 div % y
       } def}%
\rput{\IA}(!\iA\space posxy4){\triangleReuleaux}\CenterPath}
\end{animateinline}
\end{center}
\newpage

\begin{center}
\font\bigpala=pplb at 0.5 cm
\def\triangleReuleaux{
\pnode(!3 sqrt -3 div 0){A}
\pnode(!3 sqrt 6 div -0.5){B}
\pnode(!3 sqrt 6 div 0.5){C}
%\pspolygon(A)(B)(C)
%\psdots(A)(B)(C)
%\pscircle(0,0){!3 sqrt 3 div}
\pscustom{
%\pscustom[linestyle=none,fillstyle=solid,fillcolor=gray!50!blue!50]{
\psarc(A){1}{-30}{30}
\psarc(B){1}{90}{150}
\psarc(C){1}{210}{270}\closepath}
\pstextpath[c]{\psarc[linestyle=none](A){0.9}{-30}{30}}{\bigpala Triangle de Reuleaux}
\pstextpath[c]{\psarc[linestyle=none](B){0.9}{90}{150}}{\bigpala Triangle de Reuleaux}
\pstextpath[c]{\psarc[linestyle=none](C){0.9}{210}{270}}{\bigpala Triangle de Reuleaux}
\psdot(!0 0)
}%
\def\CenterPath{
\psparametricplot{0.5236}{1.047197}{(-3+sqrt(3)*cos(t)+3*sin(t))/6|(-3+3*cos(t)+sqrt(3)*sin(t))/6}
\psparametricplot{0.5236}{1.047197}{(3-sqrt(3)*cos(t)-3*sin(t))/6|(-3+3*cos(t)+sqrt(3)*sin(t))/6}
\psparametricplot{0.5236}{1.047197}{(3-sqrt(3)*cos(t)-3*sin(t))/6|(3-3*cos(t)-sqrt(3)*sin(t))/6}
\psparametricplot{0.5236}{1.047197}{(-3+sqrt(3)*cos(t)+3*sin(t))/6|(3-3*cos(t)-sqrt(3)*sin(t))/6}
}%
\def\EnveloppeTriangleCadre{
\pscustom{
\psparametricplot{1.047197}{0.5236}{(1-cos(t)-sqrt(3)*sin(t))*0.5|(1-sin(t)-sqrt(3)*cos(t))*0.5}
\psline(!1 3 sqrt sub 2 div -0.5)(!1 3 sqrt sub neg 2 div -0.5)
\psparametricplot{0.5236}{1.047197}{-(1-cos(t)-sqrt(3)*sin(t))*0.5|(1-sin(t)-sqrt(3)*cos(t))*0.5}
\psline(!0.5 1 3 sqrt sub 2 div )(!0.5 1 3 sqrt sub neg 2 div)
\psparametricplot{1.047197}{0.5236}{-(1-cos(t)-sqrt(3)*sin(t))*0.5|-(1-sin(t)-sqrt(3)*cos(t))*0.5}
\psline(!1 3 sqrt sub neg 2 div 0.5)(!1 3 sqrt sub 2 div 0.5)
\psparametricplot{0.5236}{1.047197}{(1-cos(t)-sqrt(3)*sin(t))*0.5|-(1-sin(t)-sqrt(3)*cos(t))*0.5}
\psline(!-0.5 1 3 sqrt sub neg 2 div)(!-0.5 1 3 sqrt sub 2 div)
\moveto(! -0.6 0.6)
\psline(-0.6,0.6)(0.6,0.6)(0.6,-0.6)(-0.6,-0.6)(-0.6,0.6)
\closepath
}}
\psset{unit=10,algebraic,linejoin=1}%
\begin{animateinline}[controls,loop,
                     begin={\begin{pspicture}(-.7,-.7)(.7,.7)},
                     end={\end{pspicture}}]{20}% 20 images/s
\multiframe{30}{iA=60+-1,IA=0+-1}{%
\EnveloppeTriangleCadre%
\pstVerb{%
/posxy1 {/alpha exch def
       -3 3 sqrt alpha cos mul add 3 alpha sin mul add 6 div % x
       -3 3 alpha cos mul add 3 sqrt alpha sin mul add 6 div % y
       } def}%
 \rput{\IA}(!\iA\space posxy1){\triangleReuleaux}\CenterPath}
\newframe
\multiframe{30}{iA=30+1,IA=-30+-1}{%
\EnveloppeTriangleCadre%
\pstVerb{%
/posxy2 {/alpha exch def
       3 3 sqrt alpha cos mul sub -3 alpha sin mul add 6 div % x
       -3 3 alpha cos mul add 3 sqrt alpha sin mul add 6 div % y
       } def}%
 \rput{\IA}(!\iA\space posxy2){\triangleReuleaux}\CenterPath}
\newframe
\multiframe{30}{iA=60+-1,IA=-60+-1}{%
\EnveloppeTriangleCadre%
\pstVerb{%
/posxy3 {/alpha exch def
       3 3 sqrt alpha cos mul sub -3 alpha sin mul add 6 div % x
       3 3 alpha cos mul sub 3 sqrt alpha sin mul sub 6 div % y
       } def}%
 \rput{\IA}(!\iA\space posxy3){\triangleReuleaux}\CenterPath}
\newframe
\multiframe{30}{iA=30+1,IA=-90+-1}{%
\EnveloppeTriangleCadre%
\pstVerb{%
/posxy4 {/alpha exch def
       -3 3 sqrt alpha cos mul add 3 alpha sin mul add 6 div % x
        3 3 alpha cos mul sub 3 sqrt alpha sin mul sub 6 div % y
       } def}%
\rput{\IA}(!\iA\space posxy4){\triangleReuleaux}\CenterPath}
\end{animateinline}
\end{center}
\end{document} 

mercredi 4 mai 2016

Représenter le spectre continu de la lumière visible avec le package pst-spectrum - version 2

Par rapport à la version précédente : pst-spectrum version 1
il y a maintenant la possibilité de choisir un certain nombre de longueurs d'onde avec l'option [lambda=...] pour afficher sur l'échelle du spectre la couleur correspondante ainsi que le code RGB de la couleur. Quelques exemples illustrant cette option :
\psCIEspectrum[gamma=1,begin=360,end=750,lambda=425 465 550 620](-7.6,-1)(8,1)

Le reste est sans changement : pst-spectrum.zip