La revue Quadrature n°92 représente en couverture un tore faisant apparaître deux familles de cercles de Villarceau :
http://www.quadrature.info/index.php?page=zoom&photo=numero92.jpg
l'image a été réalisée par Boris Asancheyev.
C'est cette image que j'ai essayé de calculer et de reproduire avec PSTricks (révision 16/02/2015)
\documentclass{article}
\usepackage{pst-solides3d}
% Manuel Luque : 16 février 2015
% manuel.luque27@gmail.com
% gswin64c -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -o pst-rubansV-essais-2.pdf pst-rubansV-essais-2.ps
% or even:
% gswin64c -sDEVICE=pdfwrite -o pst-rubansV-essais-2.pdf - < pst-rubansV-essais-2.ps
\begin{document}
\begin{center}
\begin{pspicture}(-5,-5)(5,5)
\psframe*(-5,-5)(5,5)
% \psframe[fillstyle=hlines,hatchangle=0](-5,-5)(5,5)
\psset{viewpoint=100 0 40 rtp2xyz,Decran=100}
\pstVerb{
/nu 72 def /nv 36 def %
/vmax 360 def
/vmin 0 def
/umax 360 def
/umin 0 def
/Ri1 3 def /ri1 1.5 def
/CalcCoordinates{%2 dict begin
% /v exch def /u exch def
Ri1 ri1 v cos mul add u cos mul % x
Ri1 ri1 v cos mul add u sin mul % y
ri1 v sin mul % z
% end
} def
/du umax umin sub nu div def
/dv vmax vmin sub nv div def
/sommets0 [
vmin dv vmax {% méridien après méridien
/v exch def
% les sommets le long d'un méridien
/u umin def
nu 1 add {
[CalcCoordinates]
/u u du add def
}repeat
}for
] def
%
/faces0 { % avant l'ajout du centre
0 1 nv 0 sub {
/k1 exch def
k1 nu 1 add mul 1 nu k1 1 add mul k1 add 1 sub {/i exch def
[
i 1 add
i
i nu add 1 add
i nu add 2 add
]
} for
} for}
def
%
/Sommets % après l'ajout du centre
[
0 1 nv 1 sub {
/k1 exch def
k1 nu 1 add mul 1 nu k1 1 add mul k1 add 1 sub {/i exch def
[/pointsSommets [
sommets0 i 1 add get aload pop
sommets0 i get aload pop
sommets0 i nu add 1 add get aload pop
sommets0 i nu add 2 add get aload pop
] def
pointsSommets aload pop pointsSommets isobarycentre3d]
} for
} for]
def
%
/SOMMETS {
0 1 Sommets length 1 sub {/iL exch def
Sommets iL get aload pop
} for
} def
%
/FACES {
0 5 [SOMMETS] length 3 idiv 5 sub {/iF exch def
[iF iF 4 add iF 1 add]
[iF 1 add iF 4 add iF 2 add ]
[iF 2 add iF 4 add iF 3 add ]
[iF iF 3 add iF 4 add ]
} for
} def
}%
\psSolid[object=new,sommets=SOMMETS,faces=FACES,fillcolor=yellow,grid,
% une bande
% fcol=0 4 nu mul dup nv 1 sub mul {/i exch def i (bleu) i 2 add (bleu)}for
% toutes les bandes paires
fcol=0 4 nu 4 mul 4 sub {/j1 exch def j1 4 nu mul dup nv 1 sub mul j1 add {/i1 exch def i1 (bleu) i1 2 add (bleu)}for} for
]
\end{pspicture}
\end{center}
\end{document}
Aucun commentaire:
Enregistrer un commentaire