lundi 28 janvier 2019

Cercle tangent extérieurement à 3 cercles

 Je rajoute une précision, communiquée par Juergen Gilg. C'est un sujet qui a été initié sur :
par l'auteur de pseudonyme  `chishimotoji'. De nombreux participants ont développé le sujet dont Juergen Gilg.


Juergen Gilg en collaboration avec Jean-François Burnol pour les calculs, propose une illustration d'un cas particulier du problème d'un cercle tangent à 3 cercles. Un triangle rectangle ABC étant donné, on trace les demi-cercles dont les diamètres sont les côtés, extérieurs au triangle et on détermine le centre et le rayon du cercle  tangent extérieurement aux demi-cercles. On dessine aussi le triangle dont les sommets sont les points de tangence.

Si Juergen Gilg est bien connu des lecteurs de ces pages, précisons que Jean-François Burnol est l'auteur de nombreux packages touchant aux mathématiques et en particulier sur les calculs avec les grands nombres, on aura un aperçu de ses travaux  déposés sur le CTAN en allant sur :


En utilisant le package animate d'Alexander Grahn,  vous aurez la possibilité de créer une animation interactive incluse dans un pdf ou au format SVG sur l'un des principaux navigateurs. Voici celles créées par Juergen Gilg :



\documentclass[dvipsnames]{article}
\usepackage{pstricks,pst-eucl,animate}

% Authors : Juergen Gilg and Jean-François Burnol

\begin{document}
\begin{center}
\begin{animateinline}[%
    controls,
    palindrome,
    begin={\begin{pspicture}(-5.5,-5.5)(9.5,12.5)},
    end={\end{pspicture}}
    ]{7}% frame rate = 2 image/s
\multiframe{20}{rA=4+0.2,rB=3+-0.05}{%
\pstVerb{%
%% Enter the coordinates of the points of the rectangled triangle
%% Chosen as within the given cercle.pdf (Pythagorean triple 3, 4, 5 for a, b, c)
/xA 0 def
/yA 0 def
/xB \rA\space def
/yB 0 def
/xC 0 def
/yC \rB\space  def
%% Midpoints of the sides
/mAx xB xC add 2 div def
/mAy yB yC add 2 div def
/mBx xA xC add 2 div def
/mBy yA yC add 2 div def
/mCx xA xB add 2 div def
/mCy yA yB add 2 div def
%% Calculating the radius of the half circles along the sides of the
%% rectangled triangle
/rAB xA xB sub 2 exp yA yB sub 2 exp add sqrt 2 div def
/AB rAB 2 mul def
/rAC xA xC sub 2 exp yA yC sub 2 exp add sqrt 2 div def
/AC rAC 2 mul def
/rBC xB xC sub 2 exp yB yC sub 2 exp add sqrt 2 div def
/BC rBC 2 mul def
/DENOM BC 5 mul AB 3 mul add AC 3 mul add def
%% JFB formula
%% X = 2 AB (AB + BC) / (5 BC + 3 AB + 3 AC)
%% Y = 2 AC (AC + BC) / (5 BC + 3 AB + 3 AC)
%% R = 2 (BC + AB) (BC + AC) /  (5 BC + 3 AB + 3 AC)
/x0 AB BC add AB mul 2 mul DENOM div def
/y0 AC BC add AC mul 2 mul DENOM div def
/r0 BC AB add BC AC add mul 2 mul DENOM div def
%% JFB formula for the tangent points
%% P1 = (2(a+c)c, -(a+b+c)c) / (3a + b + 2c)
%% P2 = (-(a+b+c)b, 2(a+b)b) / (3a + 2b + c)
%% P3 = ((a+b+c)(a+c), (a+b+c)(a+b))/ (3a + 2b + 2c)
/p1x BC AB add AB mul 2 mul BC 3 mul AC add AB 2 mul add div def
/p1y BC AC add AB add AB mul BC 3 mul AC add AB 2 mul add div neg def
/p2x BC AC add AB add AC mul BC 3 mul AC 2 mul add AB add div neg def
/p2y BC AC add AC mul 2 mul BC 3 mul AC 2 mul add AB add div def
/p3x BC AC add AB add BC AB add mul BC 3 mul AC 2 mul add AB 2 mul add div def
/p3y BC AC add AB add BC AC add mul BC 3 mul AC 2 mul add AB 2 mul add div def
}
%% Setting the nodes of the points of the triangle
\pstGeonode[PointSymbol=none,PosAngle={225,-45,90}](!xA yA){A}(!xB yB){B}(!xC yC){C}
%\pspolygon[linecolor=blue,linejoin=1](A)(B)(C)
%% Setting the nodes of the midpoints of the triangle sides
\pstMiddleAB[PointSymbol=none,PointName=none]{A}{B}{MAB}
\pstMiddleAB[PointSymbol=none,PointName=none]{A}{C}{MAC}
\pstMiddleAB[PointSymbol=none,PointName=none]{B}{C}{MBC}
%% Full circles along the sides of the triangle (not needed!)
%\pscircle(MAB){!rAB}
%\pscircle(MAC){!rAC}
%\pscircle(MBC){!rBC}
%% Drawing the half circles along the sides of the triangle
\pstArcOAB[linecolor=lightgray]{MAB}{A}{B}
\pstArcOAB[linecolor=lightgray]{MAC}{C}{A}
\pstArcOAB[linecolor=lightgray]{MBC}{B}{C}
%% JFB circle and tangent points
\pnode(!x0 y0){O}
\pnode(!p1x p1y){P1}
\pnode(!p2x p2y){P2}
\pnode(!p3x p3y){P3}
\pscircle[linecolor=Green](O){!r0}
\psdot[linecolor=Green](O)\uput[-90](O){\textcolor{Green}{$O$}}
\psdot[linecolor=red](P1)\uput[-90](P1){$P_1$}
\psdot[linecolor=red](P2)\uput[180](P2){$P_2$}
\psdot[linecolor=red](P3)\uput[90](P3){$P_3$}
\pspolygon[linejoin=1,linecolor=red,linewidth=0.5pt](P1)(P2)(P3)
\psline[linecolor=Green]{->}(O)(P3)
\pstMiddleAB[PointSymbol=none,PointName=none]{O}{P3}{rad}
\uput{7pt}[0](rad){\footnotesize\textcolor{Green}{$r$}}
\pspolygon[linecolor=blue,linejoin=1](A)(B)(C)
}
\end{animateinline}
\end{center}
\end{document}



dimanche 27 janvier 2019

Nouvelle version de pst-marble 1.1

La nouvelle version de pst-marble (1.1) est disponible sur le serveur du CTAN :
Les changements sont décrits dans le fichier : CHANGES-1.md
Cette version est incompatible avec la précédente car Aubrey Jaffer a simplifié l'écriture des commandes de base des actions, en a renommé certaines et ajouté de nouvelles, ceci afin de permettre à tous les éventuels utilisateurs, en particulier à ceux qui ne sont pas familiers du langange postscript, d'expérimenter sans difficulté la simulation de la création de papiers marbrés avec ce package.

Cependant les exemples créés avec la version précédente sont aisément adaptables. La superbe documentation écrite par Gilg Juergen reprend tous les exemples de la version 1.0, vous pourrez constater que les commandes sont maintenant plus simples à écrire, d'autres exemples sont inclus en supplément de la documentation.
Juergen Gilg a réalisé une animation au format SVG  en utilisant le package animate d'Alexander Grahn :

Voici 3 exemples qui sont sur le CTAN et dont j'ai rajouté une commande pour inverser les couleurs originales dans deux d'entre eux.

\documentclass[pstricks]{standalone}
\usepackage{pst-marble}
\begin{document}
\begin{pspicture}(-5,-5)(5,5)
\psMarble[
colors={
  [0.176 0.353 0.129]
  [0.635 0.008 0.094]
  [0.078 0.165 0.518]
  [0.824 0.592 0.031]
  [0.059 0.522 0.392]
  [0.816 0.333 0.475]
},
actions={
      0    0 600 colors 4 get drop
   -200  -90 100 colors 5 get drop
   -200 -200 200 colors 0 get drop
   -200  200 200 colors 1 get drop
    200 -200 200 colors 2 get drop
    200  200 200 colors 3 get drop
% Commenting vortex gives a fine result ...
  0 0 -32e3 750 vortex
  250 0 [ 120 80 ] 20 -100 20 stir
   0 -500 850 -30 15 colors 2 get 5 50 arc-drops
   0 -500 840 -30 16 colors 1 get 5 50 arc-drops
   0 -500 850 -30 15 colors 5 get 5 50 arc-drops
   0    0 150   0 15 10 [105 160 99] 35 20 spiral-drops
}]
\psMarble[drawcontours,linewidth=0.2,bckg=false,
actions={
      0    0 600 [0 0 0] drop
   -200  -90 100 [0 0 0] drop
   -200 -200 200 [0 0 0] drop
   -200  200 200 [0 0 0] drop
    200 -200 200 [0 0 0] drop
    200  200 200 [0 0 0] drop
  0 0 -32e3 750 vortex
  250 0 [ 120 80 ] 20 -100 20 stir
   0 -500 850 -30 15 [0 0 0] 5 50 arc-drops
   0 -500 840 -30 16 [0 0 0] 5 50 arc-drops
   0 -500 850 -30 15 [0 0 0] 5 50 arc-drops
   0    0 150   0 15 10 [0 0 0] 35 20 spiral-drops
}]
\end{pspicture}
\end{document}

\documentclass[pstricks]{standalone}
\usepackage{pst-marble}
\begin{document}
\pstVerb{
/inverse-color {
    /rgb exch def
    [ rgb {1 exch sub } forall ]
} bind def }%
\begin{pspicture}(-6,-6)(6,6)
\psMarble[
          viscosity=-1000,bckg=false,
colors={
  [0.176 0.353 0.129] inverse-color
  [0.635 0.008 0.094] inverse-color
  [0.078 0.165 0.518] inverse-color
  [0.824 0.592 0.031] inverse-color
  [0.059 0.522 0.392] inverse-color
  [0.816 0.333 0.475] inverse-color
},
actions={ 1.2 1.2 scale
  0 0 35 colors 35 concentric-rings
  0 350 shift
  180 [ 20 50 25 tines ] 40 200 31 rake
  90 {0.75 mul sin -120 mul} wiggle
  180 [ 3 600 -150 tines ] 40 200 31 rake
  90 {0.75 mul sin 240 mul} wiggle
  180 [ 3 600 150 tines ] 40 200 31 rake
  90 {0.75 mul sin -120 mul} wiggle
}]
\end{pspicture}
\end{document}

\documentclass[pstricks]{standalone}
\usepackage{pst-marble}
\begin{document}
\begin{pspicture}(-5,-7)(5,7)
\pstVerb{
/inverse-color {
    /rgb exch def
    [ rgb {1 exch sub } forall ]
} bind def }%
\psMarble[
      colors={
[0.98 0.89 0.56]   inverse-color
[0.357 0.525 0.13] inverse-color
[0.2 0.05 0.015]   inverse-color
[0.07 0.41 0.255]  inverse-color
[0.87 0.63 0.051]  inverse-color
[0.98 0.89 0.56]   inverse-color
},
    actions={
0 100 50 colors 25  concentric-rings
 /signe 1 def
  100 100 1000 {/radius exch def
  0 0 [radius] 10 60 signe mul 50 stir
    /signe signe neg def
    } for
     90 [ 7 200 200 tines ] 40 200 31 rake
    -90 [ 7 200 100 tines ] 40 200 31 rake
     0 {2 mul sin 20 mul} wiggle
   }](10,14)
\end{pspicture}
\end{document}



lundi 21 janvier 2019

Horloge numérique par Thomas Soell

Faisant suite au sujet ouvert par Juergen Gilg sur :
https://tex.stackexchange.com/questions/470303/clever-setup-of-multiframe-with-diverse-conditions-within-animate-package

Thomas Söll a réalisé une horloge, chronomètre avec des afficheurs à diode 7 segments de toute beauté. On peut choisir pour affichage de départ le jour de la semaine, l'heure, les minutes et les secondes. La couleur et l'inclinaison des chiffres sont paramétrables ainsi que la couleur des digits éteints.
Les animations sont réalisées sur le fichier pdf grâce au package animate d'Alexander Grahn. Juergen Gilg me signale qu'il doit être possible de créer des animations interactives au format SVG sur le navigateur Chrome.
Les fichiers de Thomas sont dans ce répertoire :
Voici quelques images du travail de Thomas extraites de son document et une animation au format Gif.

dimanche 20 janvier 2019

Afficheur alphanumérique à diodes par Juergen Gilg

Sur le site :
https://tex.stackexchange.com/questions/470303/clever-setup-of-multiframe-with-diverse-conditions-within-animate-package
Juergen a initié un projet sur une animation d'un afficheur numérique 7 segments. De nombreux contributeurs ont répondu et enrichi ce sujet.


Il propose ici un afficheur alphanumérique avec des LED à tête ronde, voici 2 exemples :

Les fichiers et les animations (réalisées avec le package animate d'Alexander Grahn) incluses dans les pdf  sont dans le répertoire :
Le fichier zippé contient tous les fichiers.