% ---------------------------------------------------------------------------- %
%% \file tock.tex
%% \author Sebastien Beaugrand
%% \sa http://beaugrand.chez.com/
%% \copyright CeCILL 2.1 Free Software license
% ---------------------------------------------------------------------------- %
% #!/usr/bin/octave -q
% global l = 19;
% global n = str2num(argv(){1});
%
% function y = f(x)
%   global l;
%   global n;
%   h = (1 + 0.5/cos(pi/n))*l*tan(pi/n/2) + x*tan(pi/n);
%   r = sqrt(h*h + x*x);
%   y = r*sin(pi/2*(31/17 - 28/17/n) + 3/17*asin(x/r)) - (l/2+x)*tan(pi/n);
% endfunction
%
% [ecart, fval, info] = fzero(@f, [-5;10]);
% printf("\\ecart=%.6fcm\n", ecart);
%
% h = (1 + 0.5/cos(pi/n))*l*tan(pi/n/2) + ecart*tan(pi/n);
% rayon = sqrt(h*h + ecart*ecart);
% printf("\\rayon=%.6fcm\n", rayon);
%
% ainit = pi/n + asin(ecart/rayon);
% printf("\\def\\ainit{%.6f}\n", ainit*180/pi);
%
% aincr = (pi - 2*ainit)/17;
% printf("\\def\\aincr{%.6f}\n", aincr*180/pi);
%
% hinit = (l/2 + ecart)/cos(pi/n) - l/2/cos(pi/n/2);
% printf("\\hinit=%.6fcm\n", hinit);
%
% hincr = rayon*tan(aincr);
% printf("\\hincr=%.6fcm\n", hincr);
%
% quinze = l/2*sin(pi/n/4);
% printf("\\quinze=%.6fcm\n", quinze);
%
% yorig = -(l/2+ecart)/cos(pi/n);
% printf("\\yorig=%.6fcm\n", yorig);
% ---------------------------------------------------------------------------- %
% ./tock.m 4
% ./tock.m 6
% latex tock.tex
% dvipdf -dAutoRotatePages=/None tock.dvi tock.pdf
% pdfjam -o tockA3.pdf --paper a3paper tock.pdf
% pdfjam -o tockA2.pdf --paper a2paper tock.pdf
% ---------------------------------------------------------------------------- %
\documentclass[a4paper]{article}
\usepackage{vmargin}
\setmarginsrb{5mm}{5mm}{5mm}{5mm}{0cm}{0cm}{0cm}{0cm}
\pagestyle{empty}
\usepackage{multido}
\usepackage{pstricks}

\begin{document}
\newcount\numero
\newcommand{\coin}{%
  \numero=0
  \multido{\r=\ainit+\aincr,\i=0+1}{18}{%
    \ifnum\i<8
      \rput{\r}(\the\rayon;\r){%
        \ifnum\numero=0
          \pscircle[linewidth=2pt](0,0){\the\cercle}
          \rput(0,0){18}
        \else
          \ifnum\numero=7
            \pscircle(0,0){\the\cercle}
            \rput{-45}(0,0){\number\numero}
          \else
            \pscircle(0,0){\the\cercle}
            \rput(0,0){\number\numero}
          \fi
        \fi
        \global\advance\numero1
      }
    \fi
    \ifnum\i>10
      \rput{\r}(\the\rayon;\r){%
        \pscircle(0,0){\the\cercle}
        \rput{-180}{\number\numero}
        \global\advance\numero1
      }
    \fi
  }
  \rput(\quinze,\the\hinit){%
    \pscircle(0,0){\the\cercle}
    \rput{\aquinze}(0,0){\number\numero}
    \global\advance\numero1
  }
  \advance\hinit-\the\hincr
  \rput(0,\the\hinit){%
    \pscircle(0,0){\the\cercle}
    \rput(0,0){\number\numero}
    \global\advance\numero1
  }
  \advance\hinit2\hincr
  \multido{\d=\the\hinit+\the\hincr}{4}{%
    \rput(0,\d){%
      \pscircle(0,0){\the\cercle}
      \rput(0,0){\number\numero}
      \global\advance\numero1
    }
  }
  \advance\hinit-\the\hincr
  \rput(-\quinze,\the\hinit){%
    \pscircle(0,0){\the\cercle}
    \rput{-\aquinze}(0,0){17}
  }
}
\large
\SpecialCoor
\degrees[360]
\newlength\taille \taille=19cm
\newlength\centre \centre=\taille
\divide\centre2
\newlength\ecart
\newlength\rayon
\newlength\hinit
\newlength\hincr
\newlength\quinze
\newlength\yorig
\newlength\cercle
\ecart=6.540213cm
\rayon=21.018675cm
\def\ainit{63.129273}
\def\aincr{3.161262}
\hinit=12.401561cm
\hincr=1.160872cm
\quinze=1.853358cm
\yorig=-22.684287cm
\def\aquinze{22.5}
\cercle=0.5cm
\rput(\the\centre,-13.85){%
  \multido{\i=45+90}{4}{%
    \rput{\i}(0,0){\rput(0,\yorig){\coin}}
  }
}
\newpage
\ecart=-0.712105cm
\rayon=7.652416cm
\def\ainit{24.660545}
\def\aincr{7.686995}
\hinit=0.312263cm
\hincr=1.032879cm
\quinze=1.239999cm
\yorig=-10.147387cm
\def\aquinze{15}
\cercle=0.45cm
\rput(\the\centre,-13.85){%
  \multido{\i=0+60}{6}{%
    \rput{\i}(0,0){\rput(0,\yorig){\coin}}
  }
}
\end{document}