%% $Id: pstricks-add.pro 216 2021-09-10 12:28:13Z herbert $ %% % PostScript prologue for pstricks-add.tex. % % Version 0.23, 2009/12/17 % /tx@addDict 410 dict def tx@addDict begin %% realtime srand % set random generator % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% /GTriangle { gsave /mtrx CM def /colorA ED /colorB ED /colorC ED % save the colors /yA ED /xA ED % save the origin xA yA translate rotate % \psk@gangle /yB ED /xB ED /yC ED /xC ED % save other coordinates /ds [ % save data in a array 0 0 0 colorA aload pop % fd x y xr xg xb 0 xB xA sub yB yA sub colorB aload pop 0 xC xA sub yC yA sub colorC aload pop % 1 xC xB add yB colorA aload pop % for use with 4 points ABCD ] def newpath << /ShadingType 4 % single Gouraud /ColorSpace [ /DeviceRGB ] /DataSource ds >> shfill closepath mtrx setmatrix grestore} def % /RGBtoCMYK { % on stack r g b -> C M Y K 3 dict begin /Blue ED /Green ED /Red ED 1 Red sub % Cyan 1 Green sub % Magenta 1 Blue sub % Yellow 0 % Black end } def % /CMYKtoGRAY { % on stack c m y k -> gray exch 0.11 mul add exch 0.59 mul add exch 0.3 mul add dup 1 gt { pop 1 } if neg 1 add } def % /RGBtoGRAY { % on stack r g b -> gray 0.11 mul exch 0.59 mul add exch 0.3 mul add } def % /HSBtoGRAY { 6 dict begin /b exch def /s exch def 6 mul dup cvi dup /i exch def sub /f exch def /F [[0 1 f sub 1][f 0 1][1 0 1 f sub][1 f 0][1 f sub 1 0][0 1 f][0 1 1]] def F i get { s mul neg 1 add b mul} forall 0.11 mul exch 0.59 mul add exch 0.3 mul add end } def % %% convertisseur longueur d'onde ->R,G,B Manuel Luque %% lambda max=780 nanometres %% lambda min=380 nanometres %% adaptation de : %% http://www.physics.sfasu.edu/astro/color.html %% www.efg2.com/lab % /Gamma 0.8 def /calculateRGB { lambda 379 le {/Red 0 def /Green 0 def /Blue 0 def} if lambda 781 ge {/Red 0 def /Green 0 def /Blue 0 def} if lambda 380 ge {lambda 439 le { /R {lambda 440 sub neg 440 380 sub div} def /Red R factor mul Gamma exp def /G 0 def /Green G factor mul Gamma exp def /B 1 def /Blue B factor mul Gamma exp def} if } if lambda 440 ge { lambda 489 le { /G {lambda 440 sub 490 440 sub div} def /Green G factor mul Gamma exp def /R 0 def /Red 0 def /B 1 def /Blue B factor mul Gamma exp def } if } if lambda 490 ge {lambda 509 le { /B {lambda 510 sub neg 510 490 sub div} def /Blue B factor mul Gamma exp def /R 0 def /Red 0 def /G 1 def /Green G factor mul Gamma exp def } if } if lambda 510 ge {lambda 579 le { /R {lambda 510 sub 580 510 sub div } def /Red R factor mul Gamma exp def /Blue 0 def /G 1 def /Green G factor mul Gamma exp def } if } if lambda 580 ge {lambda 644 le { /G {lambda 645 sub neg 645 580 sub div } def /Green G factor mul Gamma exp def /Blue 0 def /R 1 def /Red R factor mul Gamma exp def } if } if lambda 645 ge { lambda 780 le { /Red 1 factor mul Gamma exp def /Blue 0 def /Green 0 def } if } if } def % /factor { lambda 380 ge {lambda 419 le { 0.3 0.7 lambda 380 sub mul 420 380 sub div add} if } if lambda 420 ge {lambda 700 le { 1 } if } if lambda 701 ge {lambda 780 le { 0.3 0.7 780 lambda sub mul 780 700 sub div add} if } if } def % /wavelengthToRGB { % the wavelength in nm must be on top of the stack cvi /lambda exch def % no floating point here calculateRGB } def % now the colors are saved in Red Green Blue % /wavelengthToGRAY { % the wavelength in nm must be on top of the stack cvi /lambda exch def % no floating point here calculateRGB Red Green Blue RGBtoGRAY } def % now the gray color is on the stack % /wavelengthToCMYK { % the wavelength in nm must be on top of the stack cvi /lambda exch def % no floating point here gsave calculateRGB Red Green Blue RGBtoCMYK /Black ED /Yellow ED /Magenta ED /Cyan ED grestore } def % now the colors are saved in Cyan Magenta Yellow Black % /axfill { 8 dict begin /xw exch def /nl exch def /C1 exch def /y1 exch def/x1 exch def /C0 exch def /y0 exch def/x0 exch def << /ShadingType 2 /ColorSpace /DeviceRGB /Coords [ x0 y0 x1 y1 ] /EmulatorHints [ xw 2 div dup ] /Function << /FunctionType 2 /Domain [0 1] /C0 C0 /C1 C1 /N 1 >> >> shfill end } bind def % %/amplHand {.8} def %/dtHand 2 def /varHand { rand sin amplHand mul add } def /MovetoByHand { moveto } def %/MovetoByHand { /y0 ED /x0 ED x0 y0 moveto } def /LinetoByHand { 4 dict begin /y1 ED /x1 ED currentpoint /y0 ED /x0 ED x0 x1 sub dup mul y0 y1 sub dup mul add sqrt /dEnd ED 0 dtHand dEnd { dup x1 x0 sub mul dEnd div x0 add varHand exch y1 y0 sub mul dEnd div y0 add varHand lineto } for % /x0 x1 def /y0 y1 def end } def % end % % END pstricks-add.pro