From fed9568042a15eccfe2f65969a4daaf85ca85659 Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Wed, 14 Feb 2018 21:36:11 +0000 Subject: pst-antiprism (14feb18) git-svn-id: svn://tug.org/texlive/trunk@46643 c570f23f-e606-0410-a88d-b1316a301751 --- .../dvips/pst-antiprism/pst-antiprism.pro | 154 +++++++++++++++++++++ 1 file changed, 154 insertions(+) create mode 100644 Master/texmf-dist/dvips/pst-antiprism/pst-antiprism.pro (limited to 'Master/texmf-dist/dvips') diff --git a/Master/texmf-dist/dvips/pst-antiprism/pst-antiprism.pro b/Master/texmf-dist/dvips/pst-antiprism/pst-antiprism.pro new file mode 100644 index 00000000000..e9098dba8b3 --- /dev/null +++ b/Master/texmf-dist/dvips/pst-antiprism/pst-antiprism.pro @@ -0,0 +1,154 @@ +%% $Id: pst-antiprism.pro 522 2017-08-23 09:03:52Z herbert $ +%% PostScript prologue for pst-antiprism.tex. +%% +%% Version 0.02, 2018/02/12 +%% +%% For distribution, see pst-antiprism.tex. +%% +%% +/ps@antiprism { 12 dict begin + /n exch def % cotè du polygone + /a exch def % length on the antiprism side + /angle 360 n div def + % hauteur entre les 2 plans + /h a 1 1 angle 4 div cos 2 mul dup mul div sub sqrt mul 2 div def + % rayon du cercle circonscrit au polygone + /r a 2 div angle 2 div sin div def + % Les sommets des polygones réguliers supérieur et inférieur, alternativement + % inscrit dans un cercle de rayon 1 + /sommets [ % 0->2n-1 + 0 1 n 1 sub { + /k exch def + angle k mul cos r mul + angle k mul sin r mul + h + k 0.5 add angle mul cos r mul + k 0.5 add angle mul sin r mul + h neg + } for + meshbases { % les centres de 2 faces polygonales + 0 0 h % né 2n + 0 0 h neg % né 2n+1 + } if + ] def + % les faces + /faces [ + /i 0 def + n { + [0 i add 1 i add 2 i add ] + /i i 2 add def + } repeat + /i 0 def + n { + [1 i add 3 i add 2 i add ] + /i i 2 add def + } repeat + meshbases { + % les faces sup et inf en triangles + /i 0 def + n 1 sub { + [2 n mul 0 i add 2 i add ] + /i i 2 add def + } repeat + [2 n mul 2 n mul 2 sub 0 ] + /i 0 def + n 1 sub { + [2 n mul 1 add 3 i add 1 i add ] + /i i 2 add def + } repeat + [2 n mul 1 add 1 2 n mul 1 sub ] + }{ % face polygonale sup + [ 0 2 2 n mul 2 sub {} for ] + % face polygonale inf + [ 1 2 2 n mul 1 sub {} for ] + } ifelse + ] def + faces n 1 sub get 2 0 put + faces 2 n mul 1 sub get 1 1 put + faces 2 n mul 1 sub get 2 0 put + % dans le cas oé les bases ne sont pas étoilées + % base sup = 2n + % base inf = 2n+1 + %facessup faces 2 n mul get + %facesinf faces 2 n mul 1 get + %facestemp faces 0 2 n 1 sub getintervall + % + meshbases {}{ + /faces1 faces faces length 2 sub 2 getinterval def + /faces2 faces 0 faces length 2 sub getinterval def + /faces [faces1 aload pop faces2 aload pop] def + } ifelse + sommets faces generesolid +end +} def +% +/ps@antiprism-fan { + 10 dict begin + /n exch def + % coté du polygone + /a exch def % length on the antiprism side + /angle 360 n div def + % hauteur entre les 2 plans + /h a + 1 + 1 + angle 4 div cos 2 mul dup mul div sub sqrt mul 2 div def +% rayon du cercle circonscrit au polygone +/r a 2 div angle 2 div sin div def +% Les sommets des polygones réguliers supérieur et inférieur, alternativement +% inscrit dans un cercle de rayon r +/sommets [ % 0->2n-1 +0 1 n 1 sub {/k exch def + angle k mul cos r mul + angle k mul sin r mul + h + k 0.5 add angle mul cos r mul + k 0.5 add angle mul sin r mul + h neg + } for +% les centres de 2 faces polygonales + 0 0 h % n° 2n + 0 0 h neg % n° 2n+1 + ] def +% les faces +/faces [ +0 2 n 2 mul 3 sub {/i exch def +[ + i + i 1 add + 2 n mul 1 add + 2 n mul + ] +[ + i 1 add + i 2 add + 2 n mul + 2 n mul 1 add + ] +} for +[ + 2 n mul + 2 n mul 2 sub 2 n mul 1 sub 2 n mul 1 add +] +[ + 2 n mul 1 sub + 0 + 2 n mul + 2 n mul 1 add +] +] def +sommets faces generesolid +end +} def +% +/pst-antiprism-fan { + a n@ ps@antiprism-fan + gere_pstricks_opt +} def +% +/pst-antiprism { + a n@ ps@antiprism + gere_pstricks_opt +} def +% +% \ No newline at end of file -- cgit v1.2.3