dimanche 8 février 2015

Tore découpé en cercles de Villarceau - suite 1

C'est un complément au précédent article :

http://pstricks.blogspot.fr/2015/02/tore-decoupe-en-cercles-de-villarceau.html

Comment distinguer un cercle :
ou obtenir un ensemble de cercles bicolore :



\documentclass{article}
\usepackage[latin1]{inputenc}%
\usepackage[T1]{fontenc}
\usepackage[a4paper,margin=2cm]{geometry}
\usepackage{pst-solides3d}
% Manuel Luque
% manuel.luque27@gmail.com
\title{Tore découpé en cercles de Villarceau -2}
\date{8 février 2015}
\begin{document}
\maketitle
\[
\left\{
\begin{array}[m]{l}
x=\sqrt{R^2-r^2}\sin(t)\sin\theta+\big(R+r\cos(t)\big)\cos\theta\\[1em]
y=\sqrt{R^2-r^2}\sin(t)\cos\theta-\big(R+r\cos(t)\big)\sin\theta\\[1em]
z=R\sin(t)
\end{array}
\right.
\]
%\newpage
\begin{center}
\psset{unit=0.75}
% Cercles de Villarceau dans un sens
\begin{pspicture}(-6,-6)(6,6)
%\psframe*[linecolor=black](-6,-6)(6,6)
\psframe(-6,-6)(6,6)
\psset[pst-solides3d]{viewpoint=50 0 30 rtp2xyz,Decran=50,lightsrc=1000 0 10 rtp2xyz}
\psset{solidmemory}
\codejps{
/RayonMajeur 3.5 def /rayonmineur 1.5 def
/TOREVILLARCEAU{
/biface false def
0 360 0 360 [60 60]
{/y exch def
 /x exch def pop pop
         RayonMajeur dup mul rayonmineur dup mul sub sqrt x sin mul y sin mul rayonmineur RayonMajeur x cos mul add y cos mul add % y
         RayonMajeur dup mul rayonmineur dup mul sub sqrt x sin mul y cos mul rayonmineur RayonMajeur x cos mul add y sin mul sub % x
         rayonmineur x sin mul % z
          }
  false % true
  newsurfaceparametree
  } def
/SOMMETS {TOREVILLARCEAU solidgetsommets aload pop} def
/faces1 {TOREVILLARCEAU solidgetfaces} def
/FACES {0 2 faces1 length 2 sub {/i exch def
faces1 i get} for
  } def
 }%
\psSolid[object=new,sommets=SOMMETS,faces=FACES,hollow,fillcolor=cyan,incolor=gray!50,grid,lightintensity=5]
\end{pspicture}

% Cercles de Villarceau dans l'autre sens

\begin{pspicture}(-6,-6)(6,6)
\psframe*[linecolor=black](-6,-6)(6,6)
\psset[pst-solides3d]{viewpoint=50 0 30 rtp2xyz,Decran=50,lightsrc=1000 0 10 rtp2xyz}
\psset{solidmemory}
\codejps{
/RayonMajeur 3.5 def /rayonmineur 1.5 def
/TOREVILLARCEAU{
/biface false def
0 360 0 360 [60 60]
{/y exch def
 /x exch def pop pop
         RayonMajeur dup mul rayonmineur dup mul sub sqrt x sin mul y sin mul rayonmineur RayonMajeur x cos mul add y cos mul add % y
         RayonMajeur dup mul rayonmineur dup mul sub sqrt x sin mul y cos mul rayonmineur RayonMajeur x cos mul add y sin mul sub neg % x
         rayonmineur x sin mul % z
          }
  false % true
  newsurfaceparametree
  } def
%(toreV3636) writesolidfile
/SOMMETS {TOREVILLARCEAU solidgetsommets aload pop} def
/faces1 {TOREVILLARCEAU solidgetfaces} def
/FACES {0 2 faces1 length 2 sub {/i exch def
faces1 i get} for
  } def
 }%
\psSolid[object=new,sommets=SOMMETS,faces=FACES,hollow,incolor=red,fillcolor=white,grid]
\end{pspicture}
\end{center}
\newpage
\begin{center}
\begin{pspicture}(-6,-6)(6,6)
\psframe*[linecolor=black](-6,-6)(6,6)
\psset[pst-solides3d]{viewpoint=50 0 30 rtp2xyz,Decran=50,lightsrc=1000 0 10 rtp2xyz}
\psset{solidmemory}
\codejps{
/n1 60 def /n2 60 def
/RayonMajeur 3.5 def /rayonmineur 1.5 def
/TOREVILLARCEAU{
/biface false def
0 360 0 360 [n1 n2]
{/y exch def
 /x exch def pop pop
         RayonMajeur dup mul rayonmineur dup mul sub sqrt x sin mul y sin mul rayonmineur RayonMajeur x cos mul add y cos mul add % y
         RayonMajeur dup mul rayonmineur dup mul sub sqrt x sin mul y cos mul rayonmineur RayonMajeur x cos mul add y sin mul sub % x
         rayonmineur x sin mul % z
          }
  false % true
  newsurfaceparametree
  } def
/SOMMETS {TOREVILLARCEAU solidgetsommets aload pop} def
/faces1 {TOREVILLARCEAU solidgetfaces} def
/FACES {0 2 faces1 length 2 sub {/i exch def
faces1 i get} for
  } def
 }%
\psSolid[object=new,sommets=SOMMETS,faces=FACES,
         hollow,fillcolor=red,incolor=white,grid,
         fcol=0 n1 2 div cvi n1 n2 mul 2 div cvi 1 sub {(blue)}for]
\end{pspicture}
\end{center}
\newpage
\begin{center}
\begin{pspicture}(-6,-6)(6,6)
\psframe*[linecolor=black](-6,-6)(6,6)
\psset[pst-solides3d]{viewpoint=50 0 30 rtp2xyz,Decran=50,lightsrc=1000 0 10 rtp2xyz}
\psset{solidmemory}
\codejps{
/n1 60 def /n2 60 def
/RayonMajeur 3.5 def /rayonmineur 1.5 def
/TOREVILLARCEAU{
/biface false def
0 360 0 360 [n1 n2]
{/y exch def
 /x exch def pop pop
         RayonMajeur dup mul rayonmineur dup mul sub sqrt x sin mul y sin mul rayonmineur RayonMajeur x cos mul add y cos mul add % y
         RayonMajeur dup mul rayonmineur dup mul sub sqrt x sin mul y cos mul rayonmineur RayonMajeur x cos mul add y sin mul sub % x
         rayonmineur x sin mul % z
          }
  false % true
  newsurfaceparametree
  } def
/SOMMETS {TOREVILLARCEAU solidgetsommets aload pop} def
/faces1 {TOREVILLARCEAU solidgetfaces} def
/FACES {0 2 faces1 length 2 sub {/i exch def
faces1 i get} for
  } def
 }%
\psSolid[object=new,sommets=SOMMETS,faces=FACES,
         hollow,
%         fillcolor=red,
         incolor=white,
         grid,
         fcol=0 1 n2 2 div cvi{/iC exch def
                  iC n1 2 div cvi n1 n2 mul 2 div cvi iC add 1 sub {dup 2 mod 0 eq{(blue)}{(red)}ifelse}for}for]
\end{pspicture}
\end{center}
\end{document}

              

Aucun commentaire:

Enregistrer un commentaire