summaryrefslogtreecommitdiff
path: root/graphics/pstricks/contrib/pst-solides3d/dvips/pst-solides3d.pro
diff options
context:
space:
mode:
Diffstat (limited to 'graphics/pstricks/contrib/pst-solides3d/dvips/pst-solides3d.pro')
-rw-r--r--graphics/pstricks/contrib/pst-solides3d/dvips/pst-solides3d.pro124
1 files changed, 89 insertions, 35 deletions
diff --git a/graphics/pstricks/contrib/pst-solides3d/dvips/pst-solides3d.pro b/graphics/pstricks/contrib/pst-solides3d/dvips/pst-solides3d.pro
index d65e081716..b797130a8d 100644
--- a/graphics/pstricks/contrib/pst-solides3d/dvips/pst-solides3d.pro
+++ b/graphics/pstricks/contrib/pst-solides3d/dvips/pst-solides3d.pro
@@ -1,18 +1,21 @@
%!
% PostScript prologue for pst-solides3d.tex.
-% Version 4.27, 2018/12/27
+% Version 4.29, 2023/11/02
%
%% COPYRIGHT 2009-2017 by Jean-Paul Vignault
-%% opacity changes and fixes by Herbert Voss
+%% opacity changes and fixes by Herbert Voss C 2021
%%
%% 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.
%
-/SolidesDict 100 dict def
-/SolidesbisDict 100 dict def
+
+/SolidesDict 200 dict def
SolidesDict begin
+systemdict /charpath known not { /charpath { pop pop } def } if
+
+
%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% %% les variables globales gerees par PSTricks %%
%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -33,7 +36,7 @@ SolidesDict begin
%% /hauteurlignedeniveau 1 def
%% /couleurlignedeniveau {rouge} def
%% /linewidthlignedeniveau 4 def
-%% /solidgrid true def
+%%/solidgrid false def
/aretescachees true def
/defaultsolidmode 2 def
%
@@ -4800,12 +4803,8 @@ end
%% /couleurlignedeniveau {rouge} def
%% /linewidthlignedeniveau 4 def
-/solidgridOn {
- /solidgrid true def
-} def
-/solidgridOff {
- /solidgrid false def
-} def
+/solidgridOn { /solidgrid true def } def
+/solidgridOff { /solidgrid false def } def
%% syntaxe : solid i string solidputfcolor
%% syntaxe : solid str outputcolors
@@ -4852,7 +4851,7 @@ end
%% syntaxe : solid table (couleur) solidaddface -> -
%% on ne se preoccupe pas des faces internes
/solidaddface {
-6 dict begin
+8 dict begin
dup isstring {
/lac@uleur exch def
} {
@@ -5598,11 +5597,11 @@ end
%% syntaxe : solid array solidputoutcolors --> -
/solidputoutcolors {
-4 dict begin
+8 dict begin
/newcolorstable exch def
/solid exch def
solid issolid not {
- (Error : mauvais type d argument dans solidputoutcolors) ==
+ (Error : mauvais type d argument dans solidputoutcolors) ==
quit
} if
/n newcolorstable length def
@@ -5938,7 +5937,7 @@ end
%% array, le tableau des indices des faces a numeroter, est optionnel
%% si bool=true, on ne numerote que les faces visibles
/solidnumfaces {
-5 dict begin
+10 dict begin
dup isbool {
/bool exch def
} {
@@ -5954,13 +5953,12 @@ end
currentdict /option known not {
/option [0 1 n 1 sub {} for] def
} if
-
0 1 option length 1 sub {
/i exch def
/j option i get def
j ( ) cvs sol j bool cctextp3d
} for
-end
+ end
} def
%%%%% ### creusesolid ###
@@ -9239,7 +9237,7 @@ end
%% syntaxe : z0 r0 z1 [n1 n2] newcone -> solid
%% syntaxe : a b {f} {sommet} [n1 n2] newcone -> solid
/newcone {
-11 dict begin
+25 dict begin
[ [/n /N] [1 6] [1 8] [1 10] [3 12] [5 18] ] gestionsolidmode
dup xcheck {
%% cas general
@@ -9757,6 +9755,56 @@ end
solidfuz
end
} def
+%
+/newellipsoid {
+14 dict begin
+/CalcCoordinates{
+ a v cos mul u cos mul
+ b v cos mul u sin mul
+ c v sin mul
+ } def
+ ngrid aload pop
+ /nv exch def
+ /nu exch def
+ base aload pop
+ /vmax exch def
+ /vmin exch def
+ /umax exch def
+ /umin exch def
+1 setlinejoin
+/du umax umin sub nu div def
+/dv vmax vmin sub nv div def
+ /S [
+ 0 1 nu {
+ /i exch def
+ 0 1 nv {
+ /j exch def
+ /u umin i du mul add def
+ /v vmin j dv mul add def
+ CalcCoordinates
+ } for
+ } for
+ ] def
+%
+ /F [
+ 0 1 nu 1 sub {
+ /i exch def
+ 0 1 nv 1 sub {
+ /j exch def
+ [
+ j 1 add i nv 1 add mul add
+ j 0 ne {
+ j i nv 1 add mul add
+ } if
+ j nv 1 add add i nv 1 add mul add
+ j nv 2 add add i nv 1 add mul add
+ ]
+ } for
+ } for
+ ] def
+ S F generesolid
+end
+} def
%%%%% ### readsolidfile ###
%% syntaxe : str readsolidfile -> solid
@@ -10237,12 +10285,12 @@ end
%% syntaxe : str x y show_dim --> str x y llx lly wx wy
%% attention, doit laisser la pile intacte
/show_dim {
- 3 copy pop pop
- newpath
- 0 0 moveto
- true charpath flattenpath pathbbox
- closepath
- newpath
+ 3 copy pop pop
+ newpath
+ 0 0 moveto
+ true charpath flattenpath pathbbox
+ closepath
+ newpath
} def
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -10261,13 +10309,9 @@ end
end
} def
-/pstrickactionR2 {
- exec exch exec exch
-} def
+/pstrickactionR2 { exec exch exec exch } def
-/pstrickactionR {
- exec
-} def
+/pstrickactionR { exec } def
/gere_pst-deffunction {
counttomark
@@ -10987,13 +11031,13 @@ grestore
} ifelse
} def
/pst-plan- {pst-plan-plantype} def
-
+%
%x0 y0 z0 [normalvect] norm2plan
/pst-plan-plantype {
dup plan2eq /eqpl@n exch def
/plan-@k true def
} def
-
+%
/pst-plan {
% args definition
args (pst-plan-) definition append cvx exec
@@ -11048,14 +11092,13 @@ grestore
solidshowbase {l@pl@n projectionsifacevisible planshowbase} if
solidshowbase3d {l@pl@n projectionsifacevisible planshowbase3d} if
} def
-
-
+%
/pst-plan-normalpoint {
/plan-@k false def
norm2plan
dup plan2eq /eqpl@n exch def
} def
-
+%
/pst-plan-equation {
/plan-@k false def
dup isarray {
@@ -11130,7 +11173,18 @@ gsave
grestore
end
} def
+%
+/pst-ellipsoid {
+ 10 dict begin
+% [a b c] bubblesort /abc exch def
+% /c abc 0 get def /b abc 1 get def /a abc 2 get def newellipsoid
+ [a b c] /abc exch def
+ /c abc 2 get def /b abc 1 get def /a abc 0 get def newellipsoid
+ gere_pstricks_opt
+ end
+} def
+%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%% procedures pour \psProjection %%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%