diff options
author | Karl Berry <karl@freefriends.org> | 2011-08-08 23:07:57 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2011-08-08 23:07:57 +0000 |
commit | c28a7257988da7e621324bf732f3367a2f45cbd2 (patch) | |
tree | 9465f93310fa4e3bc8d6b243093198ef7203991b /Master/texmf-dist/tex/generic | |
parent | 7425adb75ffbe957eaf75d7eef2e7e78bd3924d2 (diff) |
new pstricks package pst-rubans 1.20 (7jun11)
git-svn-id: svn://tug.org/texlive/trunk@23464 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex/generic')
-rw-r--r-- | Master/texmf-dist/tex/generic/pst-rubans/pst-rubans.tex | 353 |
1 files changed, 353 insertions, 0 deletions
diff --git a/Master/texmf-dist/tex/generic/pst-rubans/pst-rubans.tex b/Master/texmf-dist/tex/generic/pst-rubans/pst-rubans.tex new file mode 100644 index 00000000000..69861418c98 --- /dev/null +++ b/Master/texmf-dist/tex/generic/pst-rubans/pst-rubans.tex @@ -0,0 +1,353 @@ +%% Package `pst-rubans.tex' +%% +%% This program can be redistributed and/or modified under +%% the terms of the LaTeX Project Public License Distributed +%% from CTAN archives in directory macros/latex/base/lppl.txt. +%% +%% DESCRIPTION: +%% `pst-rubans' is a PSTricks package for +%% drawing 3 dimensional bands. +%% +%% +%% Authors : Manuel Luque <Manuel.Luque27@gmail.com> +%% Herbert Voss <hvoss@tug.org> +%% +\csname PSTRubansLoaded\endcsname +\let\PSTRubansLoaded\endinput +% +% Require PSTricks and pst-solides3d +\ifx\PSTricksLoaded\endinput\else\input pstricks.tex\fi +\ifx\PSTGradLoaded\endinput \else\input pst-solides3d.tex\fi +\ifx\PSTXKeyLoaded\endinput \else\input pst-xkey.tex\fi +% +\def\fileversion{1.2} +\def\filedate{2011/02/10} +% +\message{`PST-Rubans' v\fileversion, \filedate\space (ML/CJ/DG/HV)} +\edef\PstAtCode{\the\catcode`\@} \catcode`\@=11\relax +% +\pst@addfams{pst-rubans} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% Definition des differentes variables pour PSTricks +%% ruban en helice circulaire +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\define@key[psset]{pst-rubans}{dZ}{\def\pst@rubans@dZ{#1}} % hauteur du ruban +\psset[pst-rubans]{dZ=0.5} % hauteur du ruban +\define@key[psset]{pst-rubans}{spires}{\def\pst@rubans@spires{#1}} % +\psset[pst-rubans]{spires=10} % nombre de spires d'un ruban +\define@key[psset]{pst-rubans}{rubans}{\def\pst@rubans@rubans{#1}} % +\psset[pst-rubans]{rubans=1} % nombre de spires d'un ruban + +\def\pshelices{\pst@object{pshelices}} +%% usage : \pshelices[options](x,y,z) +\def\pshelices@i{\@ifnextchar({\pshelices@ii}{\pshelices@ii(0,0,0)}} +\def\pshelices@ii(#1,#2,#3){% + \pst@killglue% + \begingroup% + \use@par% +\pstVerb{ +/dz \pst@rubans@dZ\space def +/initvar_SpiralHelice { + /rubans \pst@rubans@rubans\space def + /phase {360 rubans div} bind def + /Rayon \pst@solides@R\space def + /Hauteur \pst@solides@h\space def + /PHI 0 def + /x@0 Rayon PHI cos mul def + /y@0 Rayon PHI sin mul def + /z@0 0 def + /pulsation {6.28319 Hauteur div \pst@rubans@spires\space mul} bind def + /x@1 {Rayon t@ pulsation mul 57.295 mul PHI add cos mul} def + /y@1 {Rayon t@ pulsation mul 57.295 mul PHI add sin mul} def + /z@1 {t@} def + /dA {Hauteur \pst@solides@resolution\space div} bind def + /tableau_des_sommets [ + rubans { + dA dA Hauteur{/t@ exch def + x@0 y@0 z@0 + x@1 y@1 z@1 + x@1 y@1 z@1 dz add + x@0 y@0 z@0 dz add + /x@0 x@1 def + /y@0 y@1 def + /z@0 z@1 def + } for + /PHI PHI phase add def + /x@0 Rayon PHI cos mul def + /y@0 Rayon PHI sin mul def + /z@0 0 def + } repeat ] def + /Sommets {tableau_des_sommets aload pop} def + /NbrePoints tableau_des_sommets length 3 div cvi def + /Faces {0 4 NbrePoints 4 sub { + /Ni exch def + [ Ni Ni 1 add Ni 2 add Ni 3 add] + } for + } def + /Faces_internes {0 4 NbrePoints 4 sub { + /Ni exch def + [Ni 3 add Ni 2 add Ni 1 add Ni] + } for + } def +} def +initvar_SpiralHelice +}% +%\psSolid[object=new,sommets=Sommets,fillcolor=\psincolor,faces={Faces_internes}](#1,#2,#3)% + \psSolid[object=new,sommets=Sommets,faces={Faces},hollow](#1,#2,#3)% + \endgroup% + \ignorespaces% +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% ruban en helice torique +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\define@key[psset]{pst-rubans}{dPHI}{\def\pst@rubans@dPHI{#1}} % hauteur du ruban +\psset[pst-rubans]{dPHI=5} % hauteur du ruban en degrés + +\def\psSpiralRing{\pst@object{psSpiralRing}} +%% usage : \psSpiralRing[options] +\def\psSpiralRing@i{\@ifnextchar({\psSpiralRing@ii}{\psSpiralRing@ii(0,0,0)}} +\def\psSpiralRing@ii(#1,#2,#3){% +% \pst@killglue% + \begingroup% + \use@par% + \pstVerb{% + /ri \pst@solides@rO\space def % rayon intérieur + /rm \pst@solides@rI\space def % rayon moyen + /spires \pst@rubans@spires\space def + /dPHI \pst@rubans@dPHI\space def + /initvar_SpiralRing { + /THETA {PHI spires 2 mul mul} def + /x@ {rm ri THETA cos mul add PHI cos mul} def + /y@ {rm ri THETA cos mul add PHI sin mul} def + /z@ {ri THETA sin mul} def + /dt@ {360 \pst@solides@resolution\space div} bind def + /PHI 0 def + /tableau_des_sommets [ + 0 dt@ 360 dt@ sub{/t@ exch def + /PHI t@ def /THETA0 THETA def + x@ y@ z@ + /PHI t@ dt@ add def /THETA1 THETA def + x@ y@ z@ %/x1 x def /y1 y def /z1 z def % S2 + /PHI PHI dPHI add def + rm ri THETA1 cos mul add PHI cos mul + rm ri THETA1 cos mul add PHI sin mul + ri THETA1 sin mul % S3 + /PHI PHI dt@ sub def + rm ri THETA0 cos mul add PHI cos mul + rm ri THETA0 cos mul add PHI sin mul + ri THETA0 sin mul % S4 + } for + ] + def + /Sommets {tableau_des_sommets aload pop} def + /NbrePoints tableau_des_sommets length 3 div cvi def + /Faces_internes {0 4 NbrePoints 4 sub { + /Ni exch def + [ Ni Ni 1 add Ni 2 add Ni 3 add] + } for + } def + /Faces {0 4 NbrePoints 4 sub { + /Ni exch def + [Ni 3 add Ni 2 add Ni 1 add Ni] + } for + } def +} def +initvar_SpiralRing +}% +%\psSolid[object=new,sommets=Sommets,fillcolor=\psincolor,faces={Faces_internes}](#1,#2,#3)% +\psSolid[object=new,sommets=Sommets,faces={Faces},hollow](#1,#2,#3)% + \endgroup% + \ignorespaces} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% ruban en helice spherique +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + +\def\psSphericalSpiral{\pst@object{psSphericalSpiral}} +%% usage : \psSphericalSpiral[options] +\def\psSphericalSpiral@i{\@ifnextchar({\psSphericalSpiral@ii}{\psSphericalSpiral@ii(0,0,0)}} +\def\psSphericalSpiral@ii(#1,#2,#3){% + \pst@killglue% + \begingroup% + \use@par% +\pstVerb{% +/initvar_SpiralSpherical { + /Rayon \pst@solides@R\space def + /spires \pst@rubans@spires\space def + /dPHI \pst@rubans@dPHI\space def + /THETA {PHI spires 2 mul mul} def + /x@ {Rayon THETA cos mul PHI cos mul} def + /y@ {Rayon THETA sin mul PHI cos mul} def + /z@ {Rayon PHI sin mul} def + /dt@ {180 \pst@solides@resolution\space div} bind def + /PHI -90 def + x@ y@ z@ /x0 x@ def /y0 y@ def /z0 z@ def % S1 + /tableau_des_sommets [ + -90 dt@ 90 dPHI sub{/t@ exch def + /PHI t@ def /THETA0 THETA def + x@ y@ z@ + /PHI t@ dt@ add def /THETA1 THETA def + x@ y@ z@ %/x1 x def /y1 y def /z1 z def % S2 + /PHI PHI dPHI add def +% x1 y1 z % S3 + Rayon THETA1 cos mul PHI cos mul + Rayon THETA1 sin mul PHI cos mul + z@ + /PHI PHI dt@ sub def + Rayon THETA0 cos mul PHI cos mul + Rayon THETA0 sin mul PHI cos mul + z@ % S4 + } for + ] + def + /Sommets {tableau_des_sommets aload pop} def + /NbrePoints tableau_des_sommets length 3 div cvi def + /Faces {0 4 NbrePoints 4 sub { + /Ni exch def + [ Ni Ni 1 add Ni 2 add Ni 3 add] + } for + } def + /Faces_internes {0 4 NbrePoints 4 sub { + /Ni exch def + [Ni 3 add Ni 2 add Ni 1 add Ni] + } for + } def +} def +initvar_SpiralSpherical +}% +%\psSolid[object=new,sommets=Sommets,fillcolor=\psincolor,faces={Faces_internes}](#1,#2,#3)% +\psSolid[object=new,sommets=Sommets,faces={Faces},hollow](#1,#2,#3)% + \endgroup% + \ignorespaces% +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% ruban en helice sur un paraboloide +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\define@key[psset]{pst-rubans}{p}{\def\pst@rubans@p{#1}} % parametre de la parabole +\psset[pst-rubans]{p=2} + +\def\psSpiralParaboloid{\pst@object{psSpiralParaboloid}} +%% usage : \psSpiralParaboloid[options] +\def\psSpiralParaboloid@i{\@ifnextchar({\psSpiralParaboloid@ii}{\psSpiralParaboloid@ii(0,0,0)}} +\def\psSpiralParaboloid@ii(#1,#2,#3){% +% \pst@killglue% + \begingroup% + \use@par% +\pstVerb{% + /dz@ \pst@rubans@dZ\space def % hauteur du ruban + /p@ {\pst@rubans@p\space 2 mul} bind def % paramètre de la parabole x 2 + /Hauteur \pst@solides@h\space def +/initvar_SpiralParaboloid { + /pulsation {6.28319 Hauteur div \pst@rubans@spires\space mul} bind def + /x@ {z@ p@ mul sqrt t@ pulsation mul 57.295 mul cos mul} def + /y@ {z@ p@ mul sqrt t@ pulsation mul 57.295 mul sin mul} def + /dH {Hauteur \pst@solides@resolution\space div} bind def + /tableau_des_sommets [ + 0 dH Hauteur {/H@ exch def + /z@ H@ def + /t@ H@ def + x@ y@ z@ % S1 + /t@ t@ dH add def + /z@ t@ def + x@ y@ z@ % S2 + /z@ z@ dz@ add def + x@ y@ z@ % S3 + /z@ H@ dz@ add def + /t@ H@ def + x@ y@ z@ % S4 + } for + ] + def + /Sommets {tableau_des_sommets aload pop} def + /NbrePoints tableau_des_sommets length 3 div cvi def + /Faces {0 4 NbrePoints 4 sub { + /Ni exch def + [ Ni Ni 1 add Ni 2 add Ni 3 add] + } for + } def + /Faces_internes {0 4 NbrePoints 4 sub { + /Ni exch def + [Ni 3 add Ni 2 add Ni 1 add Ni] + } for + } def +} def +initvar_SpiralParaboloid +}% +%\psSolid[object=new,sommets=Sommets,fillcolor=\psincolor,faces={Faces_internes}](#1,#2,#3)% +\psSolid[object=new,sommets=Sommets,faces={Faces},hollow](#1,#2,#3)% + \endgroup% + \ignorespaces% +} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\def\psSpiralCone{\pst@object{psSpiralCone}} +%% usage : \psSpiralCone[options](x,y,z) +\def\psSpiralCone@i{\@ifnextchar({\psSpiralCone@ii}{\psSpiralCone@ii(0,0,0)}} +\def\psSpiralCone@ii(#1,#2,#3){% + \begingroup% + \use@par% +\pstVerb{/dz \pst@rubans@dZ\space def +/initvar_SpiralHelice_Conique { + /rubans \pst@rubans@rubans\space def + /phase {360 rubans div} bind def + /Rayon \pst@solides@R\space def + /Hauteur \pst@solides@h\space def + /PHI 0 def + /t@0 Hauteur 2 div neg def + /x@0 Rayon Hauteur 2 div div t@0 mul PHI cos mul def + /y@0 Rayon Hauteur 2 div div t@0 mul PHI sin mul def + /z@0 t@0 def + /pulsation {6.28319 Hauteur div \pst@rubans@spires\space mul} bind def + /x@1 {Rayon Hauteur 2 div div t@ mul t@ pulsation mul 57.295 mul PHI add cos mul} def + /y@1 {Rayon Hauteur 2 div div t@ mul t@ pulsation mul 57.295 mul PHI add sin mul} def + /z@1 {t@} def + /dA {Hauteur \pst@solides@resolution\space div} bind def + /tableau_des_sommets [ + rubans { + Hauteur 2 div neg dA Hauteur 2 div {/t@ exch def + t@ abs dA gt { + x@0 y@0 z@0 % S0 + x@1 y@1 z@1 % S1 + /COEFF z@1 dz add z@1 div def + x@1 COEFF mul y@1 COEFF mul z@1 dz add % S2 + x@0 COEFF mul y@0 COEFF mul z@0 dz add % S3 + /x@0 x@1 def + /y@0 y@1 def + /z@0 z@1 def + } if + } for + /PHI PHI phase add def + /t@0 Hauteur 2 div neg def + /x@0 Rayon Hauteur 2 div div t@0 mul PHI cos mul def + /y@0 Rayon Hauteur 2 div div t@0 mul PHI sin mul def + /z@0 t@0 def + } repeat + ] + def + /Sommets {tableau_des_sommets aload pop} def + /NbrePoints tableau_des_sommets length 3 div cvi def + /Faces {0 4 NbrePoints 4 sub { + /Ni exch def + [ Ni Ni 1 add Ni 2 add Ni 3 add] + } for + } def + /Faces_internes {0 4 NbrePoints 4 sub { + /Ni exch def + [Ni 3 add Ni 2 add Ni 1 add Ni] + } for + } def +} def +initvar_SpiralHelice_Conique +}% +\psSolid[object=new,sommets=Sommets,faces={Faces},hollow](#1,#2,#3)% + \endgroup% + \ignorespaces% +} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\catcode`\@=\PstAtCode\relax +\endinput |