%!PS-Adobe-3.0 EPSF-3.0 UG590-7R %%BoundingBox: 70 82 795 580 %START PDFDE011.EPS /pdfmark07 where {pop} {userdict /pdfmark07 /cleartomark load put} ifelse /languagelevel where {pop languagelevel} {1} ifelse 2 lt { userdict (<<) cvn ([) cvn load put userdict (>>) cvn (]) cvn load put} if [ /Title (PostScript pictures: http://130.149.60.45/~farbmetrik/UG59/) /author (compare K. Richter "Computergrafik ...": ISBN 3-8007-1775-1) /Subject (goto: http://www.ps.bam.de or http://130.149.60.445/~farbmetrik) /Keywords (image reproduction, colour devices) /Creator (klaus.richter@me.com) /CreationDate (D:2014060112000) /ModDate (D:2014060112000) /DOCINFO pdfmark07 [ /View [ /FitB ] /DOCVIEW pdfmark07 %END PDFDE011 %SETCMYK_OLV.PS /setcmyk_olvcolor %transfer cmyk to olv {/ncolor exch def /ycolor exch def /mcolor exch def /ccolor exch def ncolor 0 eq {1 ccolor sub 1 mcolor sub 1 ycolor sub setrgbcolor } {ccolor 0 eq mcolor 0 eq and ycolor 0 eq and {%only black n 1 ncolor sub dup dup setrgbcolor } {%cmy and black n 1 ccolor sub 1 ncolor sub mul 1 mcolor sub 1 ncolor sub mul 1 ycolor sub 1 ncolor sub mul setrgbcolor } ifelse } ifelse } bind def % !AUSTAUSCH Times-Roman -> Times-Roman-ISOLatin1=Times-I /Times-Roman findfont dup length dict begin {1 index /FID ne {def} {pop pop} ifelse }forall /Encoding ISOLatin1Encoding def currentdict end /Times-ISOL1 exch definefont pop /Times-Italic findfont dup length dict begin {1 index /FID ne {def} {pop pop} ifelse }forall /Encoding ISOLatin1Encoding def currentdict end /TimesI-ISOL1 exch definefont pop /Times-Bold findfont dup length dict begin {1 index /FID ne {def} {pop pop} ifelse }forall /Encoding ISOLatin1Encoding def currentdict end /TimesB-ISOL1 exch definefont pop /Times-BoldItalic findfont dup length dict begin {1 index /FID ne {def} {pop pop} ifelse }forall /Encoding ISOLatin1Encoding def currentdict end /TimesBI-ISOL1 exch definefont pop /Courier findfont dup length dict begin {1 index /FID ne {def} {pop pop} ifelse }forall /Encoding ISOLatin1Encoding def currentdict end /Courier-ISOL1 exch definefont pop /Courier-Bold findfont dup length dict begin {1 index /FID ne {def} {pop pop} ifelse }forall /Encoding ISOLatin1Encoding def currentdict end /CourierB-ISOL1 exch definefont pop /FS {findfont exch scalefont setfont} bind def /MM {72 25.4 div mul} def /str {8 string } bind def /TS {200 /Times-ISOL1 FS} bind def /TK {250 /Times-ISOL1 FS} bind def /TM {300 /Times-ISOL1 FS} bind def /TG {350 /Times-ISOL1 FS} bind def /TIS {200 /TimesI-ISOL1 FS} bind def /TIK {250 /TimesI-ISOL1 FS} bind def /TIM {300 /TimesI-ISOL1 FS} bind def /TIG {350 /TimesI-ISOL1 FS} bind def /TBS {200 /TimesB-ISOL1 FS} bind def /TBK {250 /TimesB-ISOL1 FS} bind def /TBM {300 /TimesB-ISOL1 FS} bind def /TBG {350 /TimesB-ISOL1 FS} bind def /TBIS {200 /TimesBI-ISOL1 FS} bind def /TBIK {250 /TimesBI-ISOL1 FS} bind def /TBIM {300 /TimesBI-ISOL1 FS} bind def /TBIG {350 /TimesBI-ISOL1 FS} bind def /SSK {140 /Symbol FS} bind def /SS {200 /Symbol FS} bind def /SK {250 /Symbol FS} bind def /SM {290 /Symbol FS} bind def /SG {350 /Symbol FS} bind def /CSS {115 /Courier-ISOL1 FS} bind def /CSK {140 /Courier-ISOL1 FS} bind def /CS {200 /Courier-ISOL1 FS} bind def /CK {250 /Courier-ISOL1 FS} bind def /CM {300 /Courier-ISOL1 FS} bind def /CG {350 /Courier-ISOL1 FS} bind def /CBSS {115 /CourierB-ISOL1 FS} bind def /CBSK {140 /CourierB-ISOL1 FS} bind def /CBS {200 /CourierB-ISOL1 FS} bind def /CBK {250 /CourierB-ISOL1 FS} bind def /CBM {300 /CourierB-ISOL1 FS} bind def /CBG {350 /CourierB-ISOL1 FS} bind def /ns {350 /Times-ISOL1 FS show} bind def /ks {350 /TimesI-ISOL1 FS show} bind def /bs {350 /TimesB-ISOL1 FS show} bind def /js {350 /TimesBI-ISOL1 FS show} bind def /ss {350 /Symbol FS show} bind def /is {300 /Times-ISOL1 FS 0 -90 rmoveto show 0 90 rmoveto} bind def /es {300 /Times-ISOL1 FS 0 200 rmoveto show 0 -200 rmoveto} bind def /ib {300 /TimesB-ISOL1 FS 0 -90 rmoveto show 0 90 rmoveto} bind def /eb {300 /TimesB-ISOL1 FS 0 200 rmoveto show 0 -200 rmoveto} bind def /ip {300 /Times-ISOL1 FS 50 50 rmoveto (\267) show 50 -50 rmoveto} bind def %20% kleiner /ns2 {300 /Times-ISOL1 FS show TM} bind def /ks2 {300 /TimesI-ISOL1 FS show TM} bind def /bs2 {300 /TimesB-ISOL1 FS show TM} bind def /js2 {300 /TimesBI-ISOL1 FS show TM} bind def /ss2 {300 /Symbol FS show TM} bind def /is2 {250 /Times-ISOL1 FS 0 -70 rmoveto show 0 70 rmoveto TM} bind def /es2 {250 /Times-ISOL1 FS 0 160 rmoveto show 0 -160 rmoveto TM} bind def /ib2 {250 /TimesB-ISOL1 FS 0 -70 rmoveto show 0 70 rmoveto TM} bind def /eb2 {250 /TimesB-ISOL1 FS 0 160 rmoveto show 0 -160 rmoveto TM} bind def /ip2 {250 /Times-ISOL1 FS 40 40 rmoveto (\267) show 40 -40 rmoveto TM} bind def %40% kleiner /ns4 {250 /Times-ISOL1 FS show TK} bind def /ks4 {250 /TimesI-ISOL1 FS show TK} bind def /bs4 {250 /TimesB-ISOL1 FS show TK} bind def /js4 {250 /TimesBI-ISOL1 FS show TK} bind def /ss4 {250 /Symbol FS show TK} bind def /is4 {200 /Times-ISOL1 FS 0 -60 rmoveto show 0 60 rmoveto TK} bind def /es4 {200 /Times-ISOL1 FS 0 130 rmoveto show 0 -130 rmoveto TK} bind def /ib4 {200 /TimesB-ISOL1 FS 0 -60 rmoveto show 0 60 rmoveto TK} bind def /eb4 {200 /TimesB-ISOL1 FS 0 130 rmoveto show 0 -130 rmoveto TK} bind def /ip4 {200 /Times-ISOL1 FS 30 30 rmoveto (\267) show 30 -30 rmoveto TK} bind def %60% kleiner /ns6 {200 /Times-ISOL1 FS show TS} bind def /ks6 {200 /TimesI-ISOL1 FS show TS} bind def /bs6 {200 /TimesB-ISOL1 FS show TS} bind def /js6 {200 /TimesBI-ISOL1 FS show TS} bind def /ss6 {200 /Symbol FS show TS} bind def /is6 {160 /Times-ISOL1 FS 0 -50 rmoveto show 0 50 rmoveto TS} bind def /es6 {160 /Times-ISOL1 FS 0 110 rmoveto show 0 -110 rmoveto TS} bind def /ib6 {160 /TimesB-ISOL1 FS 0 -50 rmoveto show 0 50 rmoveto TS} bind def /eb6 {160 /TimesB-ISOL1 FS 0 110 rmoveto show 0 -110 rmoveto TS} bind def /ip6 {160 /Times-ISOL1 FS 25 25 rmoveto (\267) show 25 -25 rmoveto TS} bind def %XCHA01.PS BEG /rec %x, y width heigth {/heigth exch def /width exch def moveto width 0 rlineto 0 heigth rlineto width neg 0 rlineto closepath } bind def /colrecfi %x y width heigth c m y k {setcmyk_olvcolor rec fill} bind def /colrecst %x y width heigth c m y k {setcmyk_olvcolor rec stroke} bind def /rem %x, y width heigth {/heigth exch 0.5 mul def /width exch 0.5 mul def /yleftb exch heigth 0.5 mul add def /xleftb exch width 0.5 mul add def xleftb yleftb moveto width 0 rlineto 0 heigth rlineto width neg 0 rlineto closepath } bind def /colremfi %x y width heigth c m y k {setcmykcolor rem fill} bind def /colremst %x y width heigth c m y k {setcmykcolor rem stroke} bind def /tzr {0.0 1.0 1.0 0.0} bind def %Reproduktionsfarben /tzg {1.0 0.0 1.0 0.0} bind def /tzb {1.0 1.0 0.0 0.0} bind def /tzc {1.0 0.0 0.0 0.0} bind def /tzm {0.0 1.0 0.0 0.0} bind def /tzy {0.0 0.0 1.0 0.0} bind def /tzn {0.0 0.0 0.0 1.00} bind def %Graureihe /tzd {0.0 0.0 0.0 0.75} bind def /tzz {0.0 0.0 0.0 0.50} bind def /tzh {0.0 0.0 0.0 0.25} bind def /tzw {0.0 0.0 0.0 0.00} bind def /tfr {0.0 1.0 1.0 0.0 setcmyk_olvcolor} bind def %Reproduktionsfarben /tfg {1.0 0.0 1.0 0.0 setcmyk_olvcolor} bind def /tfb {1.0 1.0 0.0 0.0 setcmyk_olvcolor} bind def /tfc {1.0 0.0 0.0 0.0 setcmyk_olvcolor} bind def /tfm {0.0 1.0 0.0 0.0 setcmyk_olvcolor} bind def /tfy {0.0 0.0 1.0 0.0 setcmyk_olvcolor} bind def /tfrz {0.0 1.0 1.0 0.5 setcmyk_olvcolor} bind def %Reproduktionsfarben /tfgz {1.0 0.0 1.0 0.5 setcmyk_olvcolor} bind def /tfbz {1.0 1.0 0.0 0.5 setcmyk_olvcolor} bind def /tfcz {1.0 0.0 0.0 0.5 setcmyk_olvcolor} bind def /tfmz {0.0 1.0 0.0 0.5 setcmyk_olvcolor} bind def /tfyz {0.0 0.0 1.0 0.5 setcmyk_olvcolor} bind def /tfn {0.0 0.0 0.0 1.00 setcmyk_olvcolor} bind def %Graureihe /tfd {0.0 0.0 0.0 0.75 setcmyk_olvcolor} bind def /tfz {0.0 0.0 0.0 0.50 setcmyk_olvcolor} bind def /tfh {0.0 0.0 0.0 0.25 setcmyk_olvcolor} bind def /tfw {0.0 0.0 0.0 0.00 setcmyk_olvcolor} bind def /cvishow {cvi 10 string cvs show} def /cvsshow1 {10 mul cvi 0.1 mul 7 string cvs show} def /cvsshow2 {100 mul cvi 0.01 mul 7 string cvs show} def /cvsshow3 {1000 mul cvi 0.001 mul 7 string cvs show} def /cvsshow4 {10000 mul cvi 0.0001 mul 8 string cvs show} def /Vexp 500 array def /Vexpa 500 array def /Vexpb 500 array def /Yexp 500 array def /alpha 500 array def %%EndProlog gsave /lanind 1 def /lantex [(G) (E) (S) (F) (I) (J) (M)] def /showde {0 lanind eq {show} {pop} ifelse} bind def /showen {1 lanind eq {show} {pop} ifelse} bind def /showes {2 lanind eq {show} {pop} ifelse} bind def /showfr {3 lanind eq {show} {pop} ifelse} bind def /showit {4 lanind eq {show} {pop} ifelse} bind def /showjp {5 lanind eq {show} {pop} ifelse} bind def /showea {1 lanind le {show} {pop} ifelse} bind def /lanindf where {pop /lanind1 lanindf def /lanind2 lanindf def /lanindd laninddf def} {/lanind1 0 def /lanind2 0 def} ifelse /colormf where {pop /colorm1 colormf def /colorm2 colormf def /colormd colormdf def} {/colorm1 0 def} ifelse /deintpf where {pop /deintp1 deintpf def /deintp2 deintpf def /deintpd deintpdf def} {/deintp1 0 def} ifelse /xcolorf where {pop /xcolor1 xcolorf def /xcolor2 xcolorf def /xcolord xcolordf def} {/xcolor1 3 def} ifelse /xchartf where {pop /xchart1 xchartf def /xchart2 xchartf def /xchartd xchartdf def /xchartm xchart2f xchart1f sub 1 add def} {/xchart1 0 def /xchartm 6 def} ifelse /xchart3f where {pop /xchart3 xchart3f def} {/xchart3 0 def} ifelse /xchart4f where {pop /xchart4 xchart4f def} {/xchart4 0 def} ifelse /pchartf where {pop /pchart1 pchartf def /pchart2 pchartf def /pchartd pchartdf def} {/pchart1 3 def} ifelse /colsepf where {pop /colsep1 colsepf def /colsep2 colsepf def /colsepd colsepdf def} {/colsep1 0 def} ifelse /pmetamf where {pop /pmetam1 pmetamf def /pmetam2 pmetamf def /pmetamd pmetamdf def} {/pmetam1 0 def} ifelse %either defaul values for xchart=0 or values for xchart=1 /lanind lanind1 def % /colorm colorm1 def % /deintp deintp1 def % /xcolor xcolor1 def % /xchart xchart1 def % /pchart pchart1 def % /colsep colsep1 def % /pmetam pmetam1 def % colorm 0 eq deintp 0 eq and {/Txx (d) def /Fxx (d) def} if %colorm=0, deintp=0 colorm 0 eq deintp 1 eq and {/Txx (e) def /Fxx (e) def} if %colorm=0, deintp=1 colorm 1 eq deintp 0 eq and {/Txx (dd) def /Fxx (d) def} if %colorm=1, deintp=0 colorm 1 eq deintp 1 eq and {/Txx (de) def /Fxx (e) def} if %colorm=1, deintp=1 xchart 0 eq {/Txx (-) def /Fxx (-) def} if %always independent of intended output %********************************************************** /D13 1 3 div def /D841_108 841 108 div def /D4_29 4 29 div def /D6_29 6 29 div 3 exp def /FL 0.000001 def /FY 0.001 def /iai -1 def %count d_CIELAB all /i2i -1 def %count d_CIELAB<=XX /cvishow {cvi 6 string cvs show} def %75 85 moveto %lanind cvishow (-) show %colorm cvishow %deintp cvishow %xcolor cvishow %xchart cvishow %pchart cvishow %colsep cvishow (-L) show pmetam cvishow %Daten XYZ 104x3 x 21 = 312*21=6552, 312 colours a 21 data /XYZ 6552 array def %17 LIGHTNESS STEPS BETWEEN 10 and 90, distance 5 steps %16 RG-CRHOMA STEPS BETWEEN -40 and 40, distance 5 steps %16 YB-CHROMA STEPS BETWEEN -40 and 40, distance 5 steps %48 other steps (20,30), (30,20), (40,10) % (60,10), (70,20), (80,30) for hab=0,45,180,225,270,325 %6 OFFSET COLOURS %total 103 steps /L*i 104 array def /C*abi 104 array def /habi 104 array def /a*i 104 array def /b*i 104 array def /XYZ_min 22 array def /XYZ_max 22 array def %STOP0 00 1 102 {/i exch def L*i i 50 put C*abi i 30 put habi i 45 put a*i i 20 put b*i i 20 put } for /iout 0 def 00 1 16 {/i exch def %i=0,16 L*i i 10 i 5 mul add put C*abi i 0 put habi i 0 put } for %i=0,16 %RG 17 1 24 {/i exch def %i=17,24 L*i i 50 put C*abi i 40 i 17 sub 5 mul sub put habi i 180 put } for %i=17,24 25 1 32 {/i exch def %i=25,32 L*i i 50 put C*abi i 5 i 25 sub 5 mul add put habi i 0 put } for %i=25,32 %YB 33 1 40 {/i exch def %i=33,40 L*i i 50 put C*abi i 40 i 33 sub 5 mul sub put habi i 270 put } for %i=33,40 41 1 48 {/i exch def %i=41,48 L*i i 50 put C*abi i 5 i 41 sub 5 mul add put habi i 90 put } for %i=41,48 0 1 48 {/i exch def a*i i C*abi i get habi i get cos mul put b*i i C*abi i get habi i get sin mul put } for %STOPY /L*tab 6 array def /C*tab 6 array def /H*tab 6 array def /L*tab [20 30 40 60 70 80] def /C*tab [30 20 10 10 20 30] def /H*tab [000 045 090 135 180 225 270 325] def %4x8=48 colours, Nr. 49..96 0 1 7 {/j exch def %j=0,7 0 1 5 {/i exch def %i=0,5 /ij j 6 mul i add def /ij49 ij 49 add def L*i ij49 L*tab i get put C*abi ij49 C*tab i get put habi ij49 H*tab j get put } for %i=0,5 } for %j=0,7 49 1 97 {/i exch def a*i i C*abi i get habi i get cos mul put b*i i C*abi i get habi i get sin mul put } for %STOPX /ian 97 def %97..102 %OFFSET L*,a*,b*, see Kittelmann (2010), p. 32 %C=Cyan L*i ian 59 put a*i ian -31 put b*i ian 43 put %M=Magenta L*i ian 1 add 48 put a*i ian 1 add 75 put b*i ian 1 add -7 put %Y=Yellow L*i ian 2 add 90 put a*i ian 2 add -11 put b*i ian 2 add 96 put %R=Red L*i ian 3 add 48 put a*i ian 3 add 65 put b*i ian 3 add 52 put %G=Green L*i ian 4 add 51 put a*i ian 4 add -63 put b*i ian 4 add 37 put %B=Blue L*i ian 5 add 26 put a*i ian 5 add 31 put b*i ian 5 add 44 put %STOP0 97 1 102 {/i exch def %i=97,102 C*abi i a*i i get dup mul b*i i get dup mul add FL add sqrt put habi i b*i i get a*i i get 0.0001 add atan put } for %i=97,102 % achromatic (D65) /XLWD65100 95.04 def /YLWD65100 100.00 def /ZLWD65100 108.88 def /DecodeXYZ* {dup 6 29 div ge {dup dup mul mul} {4 29 div sub 108 841 div mul} ifelse} bind def %STOPA /XYZ60 104 array def /XYZ70 104 array def /XYZ80 104 array def /XYZ61 104 array def /XYZ71 104 array def /XYZ81 104 array def /XYZ62 104 array def /XYZ72 104 array def /XYZ82 104 array def /j 0 def 0 1 2 {/j exch def %j=0,2, change delta_L*,a*,b* /i 0 def 0 1 101 {/i exch def %i=0,101 /i21 i j 102 mul add 21 mul def /X*0 {L*i i get 16 add 116 div a*i i get 500 div add} bind def /Y*0 {L*i i get 16 add 116 div} bind def /Z*0 {L*i i get 16 add 116 div b*i i get 200 div sub} bind def %STOPZ XYZ i21 0 add XLWD65100 1000 mul put XYZ i21 1 add YLWD65100 1000 mul put XYZ i21 2 add ZLWD65100 1000 mul put XYZ i21 3 add X*0 DecodeXYZ* XLWD65100 mul 1000 mul put XYZ i21 4 add Y*0 DecodeXYZ* YLWD65100 mul 1000 mul put XYZ i21 5 add Z*0 DecodeXYZ* ZLWD65100 mul 1000 mul put %STOPZ0 j 0 eq {%j=0,change delta_L* /X*1 {L*i i get 1 add 16 add 116 div a*i i get 500 div add} bind def /Y*1 {L*i i get 1 add 16 add 116 div} bind def /Z*1 {L*i i get 1 add 16 add 116 div b*i i get 200 div sub} bind def XYZ60 i X*1 DecodeXYZ* XLWD65100 mul FY add 1000 mul put XYZ70 i Y*1 DecodeXYZ* YLWD65100 mul FY add 1000 mul put XYZ80 i Z*1 DecodeXYZ* ZLWD65100 mul FY add 1000 mul put } if %j=0,change delta_L* %STOPZ1 j 1 eq {%j=1,change delta_a* /X*1 {L*i i get 16 add 116 div a*i i get 1 add 500 div add} bind def /Y*1 {L*i i get 16 add 116 div} bind def /Z*1 {L*i i get 16 add 116 div b*i i get 200 div sub} bind def XYZ61 i X*1 DecodeXYZ* XLWD65100 mul FY add 1000 mul put XYZ71 i Y*1 DecodeXYZ* YLWD65100 mul FY add 1000 mul put XYZ81 i Z*1 DecodeXYZ* ZLWD65100 mul FY add 1000 mul put } if %j=1,change delta_a* j 2 eq {%j=2,change delta_b* /X*1 {L*i i get 16 add 116 div a*i i get 500 div add} bind def /Y*1 {L*i i get 16 add 116 div} bind def /Z*1 {L*i i get 16 add 116 div b*i i get 1 add 200 div sub} bind def XYZ62 i X*1 DecodeXYZ* XLWD65100 mul FY add 1000 mul put XYZ72 i Y*1 DecodeXYZ* YLWD65100 mul FY add 1000 mul put XYZ82 i Z*1 DecodeXYZ* ZLWD65100 mul FY add 1000 mul put } if %j=2,change delta_b* XYZ i21 09 add 1000 put XYZ i21 16 add j 102 mul i add put XYZ i21 17 add (CIELAB_S) put XYZ i21 18 add L*i i get 1000 mul put XYZ i21 19 add a*i i get 1000 mul put XYZ i21 20 add b*i i get 1000 mul put %XYZ i21 19 add a*i i get dup mul % b*i i get dup mul add FL add sqrt 1000 mul put %XYZ i21 20 add b*i i get a*i i get FL add atan 1000 mul put } for %i=0,101 } for %j=0,2 %STOPB /d_CIELCH_min 99998 def /d_C94LCH_min 99998 def /d_CCMLCH_min 99998 def /d_C00LCH_min 99998 def /d_C85LCH_min 99998 def /d_CIELCH_max 0 def /d_C94LCH_max 0 def /d_CCMLCH_max 0 def /d_C00LCH_max 0 def /d_C85LCH_max 0 def /xcmax 06 def /iim 305 def /ii2 305 300 sub def 0 1 xcmax {/xchart exch def %xcmax=0,x gsave 5 /Times-ISOL1 FS 175 85 moveto (UG590-7R) show 72 90 translate /yhoe 8500 def 0.02 MM dup scale 15 setlinewidth 0.0 0.0 0.0 0.0 setcmyk_olvcolor 0 0 moveto 12700 0 rlineto 0 yhoe rlineto -12700 0 rlineto closepath fill 0.0 0.0 0.0 1.0 setcmyk_olvcolor 0 0 moveto 12700 0 rlineto 0 yhoe rlineto -12700 0 rlineto closepath stroke /i1 xchart 50 mul def xchart xcmax lt {/i2 i1 49 add def} {/i2 i1 ii2 add def} ifelse i1 1 i2 {/i exch def %i=i1,i2 0 1 1 {/kj exch def %kj=0,1 /i10 i 10 mul def /i21 i 21 mul def /XW XYZ i21 0 add get 0.001 mul def %XW /YW XYZ i21 1 add get 0.001 mul def %YW /ZW XYZ i21 2 add get 0.001 mul def %ZW /X0 XYZ i21 3 add get 0.001 mul def %X0 /Y0 XYZ i21 4 add get 0.001 mul def %Y0 /Z0 XYZ i21 5 add get 0.001 mul def %Z0 i 000 ge i 101 le and {%i=000,101 /ij i 0 sub def XYZ i21 6 add XYZ60 ij get put XYZ i21 7 add XYZ70 ij get put XYZ i21 8 add XYZ80 ij get put } if %i=000,101 i 102 ge i 203 le and {%i=102,203 /ij i 102 sub def XYZ i21 6 add XYZ61 ij get put XYZ i21 7 add XYZ71 ij get put XYZ i21 8 add XYZ81 ij get put } if %i=102,203 i 204 ge i 305 le and {%i=204,305 /ij i 204 sub def XYZ i21 6 add XYZ62 ij get put XYZ i21 7 add XYZ72 ij get put XYZ i21 8 add XYZ82 ij get put } if %i=204,305 /X1 XYZ i21 6 add get 0.001 mul def %X1 /Y1 XYZ i21 7 add get 0.001 mul def %Y1 /Z1 XYZ i21 8 add get 0.001 mul def %Z1 kj 1 eq {%kj=1 /DX1_0 X1 X0 sub def /DY1_0 Y1 Y0 sub def /DZ1_0 Z1 Z0 sub def DX1_0 abs FL le {/DX1_0 0 def} {/DX1_0 DX1_0 d_C00LCH FL add div def} ifelse DY1_0 abs FL le {/DY1_0 0 def} {/DY1_0 DY1_0 d_C00LCH FL add div def} ifelse DZ1_0 abs FL le {/DZ1_0 0 def} {/DZ1_0 DZ1_0 d_C00LCH FL add div def} ifelse /X1 X0 DX1_0 add def X1 FL lt {/X1 FL def} if /Y1 Y0 DY1_0 add def Y1 FL lt {/Y1 FL def} if /Z1 Z0 DZ1_0 add def Z1 FL lt {/Z1 FL def} if } if %kj=1 /DV XYZ i21 9 add get 0.001 mul def %DV %STOPG /Code XYZ i21 17 add get def %Code /L*00 XYZ i21 18 add get 0.001 mul def %L*00 /a*00 XYZ i21 19 add get 0.001 mul def %a*00 /b*00 XYZ i21 20 add get 0.001 mul def %b*00 %*********************************************************** %CIELAB/CIELCH X0 XW div D6_29 gt {/FXXN X0 XW div 0.0001 add D13 exp def} {/FXXN D841_108 X0 XW div mul D4_29 add def} ifelse Y0 YW div D6_29 gt {/FYYN Y0 YW div 0.0001 add D13 exp def} {/FYYN D841_108 Y0 YW div mul D4_29 add def} ifelse Z0 ZW div D6_29 gt {/FZZN Z0 ZW div 0.0001 add D13 exp def} {/FZZN D841_108 Z0 ZW div mul D4_29 add def} ifelse /CIEL*0 116. FYYN mul 16. sub def /CIEa*0 500. FXXN FYYN sub mul def /CIEb*0 200. FYYN FZZN sub mul def /CIEC*ab0 CIEa*0 dup mul CIEb*0 dup mul add 0.0001 add sqrt def /CIEhab0 CIEb*0 CIEa*0 0.0001 add atan def X1 XW div D6_29 gt {/FXXN X1 XW div 0.0001 add D13 exp def} {/FXXN D841_108 X1 XW div mul D4_29 add def} ifelse Y1 YW div D6_29 gt {/FYYN Y1 YW div 0.0001 add D13 exp def} {/FYYN D841_108 Y1 YW div mul D4_29 add def} ifelse Z1 ZW div D6_29 gt {/FZZN Z1 ZW div 0.0001 add D13 exp def} {/FZZN D841_108 Z1 ZW div mul D4_29 add def} ifelse /CIEL*1 116. FYYN mul 16. sub def /CIEa*1 500. FXXN FYYN sub mul def /CIEb*1 200. FYYN FZZN sub mul def /CIEC*ab1 CIEa*1 dup mul CIEb*1 dup mul add 0.0001 add sqrt def /CIEhab1 CIEb*1 CIEa*1 0.0001 add atan def %mixed terms with *0 sn *1: /d_CIEL* CIEL*1 CIEL*0 sub def /d_CIEa* CIEa*1 CIEa*0 sub def /d_CIEb* CIEb*1 CIEb*0 sub def /d_CIELAB d_CIEL* dup mul d_CIEa* dup mul add d_CIEb* dup mul add 0.00000001 add sqrt def /d_CIEh CIEhab1 CIEhab0 sub def %see CIEDE2000 page 4 CIEC*ab1 CIEC*ab0 mul 0 eq {/d_CIEh 0 def} if %CIEC*ab1 x CIEC*ab0 =0 CIEC*ab1 CIEC*ab0 mul 0 ne d_CIEh 180 gt and {/d_CIEh d_CIEh 360 sub def} if CIEC*ab1 CIEC*ab0 mul 0 ne d_CIEh -180 lt and {/d_CIEh d_CIEh 360 add def} if /d_CIEL CIEL*1 CIEL*0 sub def /d_CIECab CIEC*ab1 CIEC*ab0 sub def /d_CIEHab CIEC*ab1 CIEC*ab0 mul 0.000001 add sqrt 2 mul d_CIEh 0.5 mul sin mul def /d_CIELCH d_CIEL dup mul d_CIECab dup mul add d_CIEHab dup mul add 0.000001 add sqrt def %CIE94 /S94L 1 def /S94C 1 0.045 CIEC*ab0 mul add def /S94H 1 0.015 CIEC*ab0 mul add def /K94L 1 def /K94C 1 def /K94H 1 def /LC94*0 CIEL*0 K94L div S94L div def /LC94*1 CIEL*1 K94L div S94L div def /CC94*ab0 CIEC*ab0 K94C div S94C div def /CC94*ab1 CIEC*ab1 K94C div S94C div def /d_C94LCH CIEL*1 CIEL*0 sub K94L div S94L div dup mul CIEC*ab1 CIEC*ab0 sub K94C div S94C div dup mul add d_CIEHab K94H div S94H div dup mul add 0.00000001 add sqrt def %CMC l:c=1:1 CIEL*0 16 lt {/SCML 0.511 def} {/SCML 0.040975 CIEL*0 mul 0.011765 CIEL*0 mul 1 add div def } ifelse /SCMC 0.0638 CIEC*ab0 mul 0.0131 CIEC*ab0 mul 1 add div 0.638 add def %beg special /FCMC CIEC*ab0 dup mul dup mul CIEC*ab0 dup mul dup mul 1900 add div sqrt def CIEhab1 164 lt CIEhab1 345 gt and {/TCMC CIEhab0 35 add cos 0.4 mul 0.36 add def} {/TCMC CIEhab0 168 add cos 0.2 mul 0.56 add def} ifelse %end special /SCMH TCMC FCMC mul 1 add FCMC sub SCMC mul def /KCML 1 def %=l /KCMC 1 def %=c /KCMH 1 def %1 /CCML*0 CIEL*0 KCML div SCML div def /CCML*1 CIEL*1 KCML div SCML div def /CCMC*ab0 CIEC*ab0 KCMC div SCMC div def /CCMC*ab1 CIEC*ab1 KCMC div SCMC div def /d_CCMLCH CIEL*1 CIEL*0 sub KCML div SCML div dup mul CIEC*ab1 CIEC*ab0 sub KCMC div SCMC div dup mul add d_CIEHab KCMH div SCMH div dup mul add 0.00000001 add sqrt def %CIE DE2000 %beg special equation (7) /CIEC*ab CIEC*ab0 CIEC*ab1 add 0.5 mul def /DEG 1 CIEC*ab 7 exp CIEC*ab 7 exp 25 7 exp add div 0.000001 add sqrt sub 0.5 mul def %end special equation (7) %beg special EQUATION (1) TO (6) %0 /C00L0S CIEL*0 def /C00a0S 1 DEG add CIEa*0 mul def /C00b0S CIEb*0 def /C00C0S C00a0S dup mul C00b0S dup mul add 0.000001 add sqrt def C00C0S 0 eq {/C00h0S 0 def} {/C00h0S C00b0S C00a0S 0.0001 add atan def } ifelse %1 /C00L1S CIEL*1 def /C00a1S 1 DEG add CIEa*1 mul def /C00b1S CIEb*1 def /C00C1S C00a1S dup mul C00b1S dup mul add 0.000001 add sqrt def C00C1S 0 eq {/C00h1S 0 def} {/C00h1S C00b1S C00a1S 0.0001 add atan def } ifelse %end special EQUATION (1) TO (6) %beg special EQUATION (11) TO (14) /d_C00hS C00h1S C00h0S sub def %see CIEDE2000 page 4 C00C1S C00C0S mul 0 eq {/d_C00hS 0 def} if %CIEC*ab1 x CIEC*ab0 =0 C00C1S C00C0S mul 0 ne d_C00hS 180 gt and {/d_C00hS d_C00hS 360 sub def} if C00C1S C00C0S mul 0 ne d_C00hS -180 lt and {/d_C00hS d_C00hS 360 add def} if %end special EQUATION (11) TO (14) %beg special EQUATION (8) TO (10) /d_C00LS C00L1S C00L0S sub def /d_C00aS C00a1S C00a0S sub def /d_C00bS C00b1S C00b0S sub def /d_C00CS C00C1S C00C0S sub def /d_C00HS C00C0S C00C1S mul 0.000001 add sqrt 2 mul d_C00hS 0.5 mul sin mul def %end special EQUATION (8) TO (10) %beg special EQUATION (23) TO (26) /d_C00hS C00h0S C00h1S sub abs def /a_C00hs C00h0S C00h1S add 0.5 mul def /m_C00CS C00h0S C00h1S mul def d_C00hS 180 le m_C00CS 0 ne and {/C00hSq C00h0S C00h1S add 0.5 mul def} if d_C00hS 180 gt a_C00hs 360 le and m_C00CS 0 ne and {/C00hSq C00h0S C00h1S add 360 add 0.5 mul def} if d_C00hS 180 gt a_C00hs 360 ge and m_C00CS 0 ne and {/C00hSq C00h0S C00h1S add 360 sub 0.5 mul def} if m_C00CS 0 eq {/C00hSq C00h0S C00h1S add def } if %end special EQUATION (23) TO (26) %beg special EQUATIONS (16) TO (22) /C00LSq C00L0S C00L1S add 0.5 mul def /C00CSq C00C0S C00C1S add 0.5 mul def /C00SL C00LSq 50 sub dup mul 0.015 mul C00LSq 50 sub dup mul 20 add sqrt div 1 add def /C00SC 0.045 C00CSq mul 1 add def %beg special T, RT, d_D, RC /C00T C00hSq 30 sub cos -0.17 mul C00hSq 2 mul cos 0.24 mul add C00hSq 3 mul 6 add cos 0.32 mul add C00hSq 4 mul 63 sub cos 0.20 mul sub 1 add def /C00SH 0.015 C00CSq mul C00T mul 1 add def /C00RC C00CSq 7 exp C00CSq 7 exp 25 7 exp add 0.000001 add div 0.000001 add sqrt 2 mul def /C00DT 30 C00hSq 275 sub 25 div dup mul neg exp def /C00RT C00DT 2 mul sin neg C00RC mul def %end special T, RT, d_D, RC %end special EQUATIONS (16) TO (22) %beg special EQUATION (15) /C00KL 1.0 def /C00KC 1.0 def /C00KH 1.0 def /d_C00LS d_C00LS C00KL div C00SL div def /d_C00CS d_C00CS C00KC div C00SC div def /d_C00HS d_C00HS C00KH div C00SH div def /d_C00LCH d_C00LS dup mul d_C00CS dup mul add d_C00HS dup mul add d_C00CS d_C00HS mul C00RT mul add 0.000001 add sqrt def %beg additional definitions not in DE2000 /d_C00LS d_C00LS C00KL div C00SL div def /d_C00aS d_C00aS C00KC div C00SC div def /d_C00bS d_C00bS C00KC div C00SC div def %end additional definitions not in DE2000 %end special EQUATION (15) %end CIE DE2000 %beg LABJND 1985 /X0 XYZ i21 3 add get 0.001 mul def %X0 /Y0 XYZ i21 4 add get 0.001 mul def %Y0 /Z0 XYZ i21 5 add get 0.001 mul def %Z0 /X1 XYZ i21 6 add get 0.001 mul def %X1 /Y1 XYZ i21 7 add get 0.001 mul def %Y1 /Z1 XYZ i21 8 add get 0.001 mul def %Z1 /Yq Y0 Y1 add 0.5 mul def /d_Y Y1 Y0 sub def /a085 X0 Y0 0.000001 add div def /b085 Z0 Y0 0.000001 add div 0.4 mul neg def /a185 X1 Y1 0.000001 add div def /b185 Z1 Y1 0.000001 add div 0.4 mul neg def /an85 XW YW 0.000001 add div def /bn85 ZW YW 0.000001 add div 0.4 mul neg def /d_a085 a085 an85 sub def /d_b085 b085 bn85 sub def /d_a185 a185 an85 sub def /d_b185 b185 bn85 sub def /a0"85 d_a085 d_a085 abs 0.5 mul 1 add div an85 add def /b0"85 d_b085 d_b085 abs 0.5 mul 1 add div bn85 add def /a1"85 d_a185 d_a185 abs 0.5 mul 1 add div an85 add def /b1"85 d_b185 d_b185 abs 0.5 mul 1 add div bn85 add def /d_Y Y1 Y0 sub def /d_a"85 a1"85 a0"85 sub def /d_b"85 b1"85 b0"85 sub def /s85 0.0170 def /q85 0.0058 def /g85 1.0000 def %not used /a0085 1.0 def /b0085 1.8 def /Y0085 1.5 def /d_C85LCH d_Y dup mul a0085 d_a"85 mul Yq mul dup mul add b0085 d_b"85 mul Yq mul dup mul add 0.000001 add sqrt Y0085 mul q85 Yq mul s85 add div def %end LABJND 1985 kj 1 eq {%kj=1 d_CIELCH d_CIELCH_min lt {/d_CIELCH_min d_CIELCH def /iCIE_min i def} if d_C94LCH d_C94LCH_min lt {/d_C94LCH_min d_C94LCH def /iC94_min i def} if d_CCMLCH d_CCMLCH_min lt {/d_CCMLCH_min d_CCMLCH def /iCCM_min i def} if d_C00LCH d_C00LCH_min lt {/d_C00LCH_min d_C00LCH def /iC00_min i def} if d_C85LCH d_C85LCH_min lt {/d_C85LCH_min d_C85LCH def /iC85_min i def} if d_CIELCH d_CIELCH_max gt {/d_CIELCH_max d_CIELCH def /iCIE_max i def} if d_C94LCH d_C94LCH_max gt {/d_C94LCH_max d_C94LCH def /iC94_max i def} if d_CCMLCH d_CCMLCH_max gt {/d_CCMLCH_max d_CCMLCH def /iCCM_max i def} if d_C00LCH d_C00LCH_max gt {/d_C00LCH_max d_C00LCH def /iC00_max i def} if d_C85LCH d_C85LCH_max gt {/d_C85LCH_max d_C85LCH def /iC85_max i def} if } if %kj=1 } for %kj=0,1 %*********************************************************** %Achromatic colours, here d_CIELAB<=3 /NR2 0 def /NR3 0 def /NR4 0 def /CIEL*m CIEL*1 CIEL*0 add 0.5 mul def /CIEa*m CIEa*1 CIEa*0 add 0.5 mul def /CIEb*m CIEb*1 CIEb*0 add 0.5 mul def /CIEC*abm CIEa*m dup mul CIEb*m dup mul add 0.0001 add sqrt def CIEC*abm 3 le {/CIEhabm 0 def} {/CIEhabm CIEb*m CIEa*m 0.0001 add atan def} ifelse CIEC*abm 3 le {%CIEC*abm<=3,>3 /NR3 1 def } %CIEC*abm<=3 { %CIEC*abm>3 CIEhabm 337.5 ge CIEhabm 022.5 lt and {/NR3 2 def} if CIEhabm 022.5 ge CIEhabm 067.5 lt and {/NR3 3 def} if CIEhabm 067.5 ge CIEhabm 112.5 lt and {/NR3 4 def} if CIEhabm 112.5 ge CIEhabm 167.5 lt and {/NR3 5 def} if CIEhabm 167.5 ge CIEhabm 202.5 lt and {/NR3 6 def} if CIEhabm 202.5 ge CIEhabm 247.5 lt and {/NR3 7 def} if CIEhabm 247.5 ge CIEhabm 292.5 lt and {/NR3 8 def} if CIEhabm 292.5 ge CIEhabm 337.5 lt and {/NR3 9 def} if } ifelse %CIEC*abm<=3,>3 /CIEL*d CIEL*1 CIEL*0 sub def /CIEa*d CIEa*1 CIEa*0 sub def /CIEb*d CIEb*1 CIEb*0 sub def /CIEC*abd CIEa*d dup mul CIEb*d dup mul add 0.00000001 add sqrt def CIEC*abd 0.1 le {/CIEhabd 0 def} {/CIEhabd CIEb*d CIEa*d 0.0001 add atan def} ifelse CIEL*d CIEC*abd ge {%CIEL*d>=CIEC*abd /NR4 1 def } %CIEL*d>=CIEC*abd { %CIEL*d=0 nx 0 gt {%nx>=0 /nx nx 0.5 add cvi def nx 9 le {(0) show} if nx 99 le {(0) show} if nx 6 string cvs show } if nx 0 lt {%nx<0 /nx nx 0.5 sub cvi def nx abs 99 le {(0) show} if nx 6 string cvs show } if %nx>=0 } def /cvi02xshow {/nx exch def %with round nx 0 eq {%nx=0 ( ) show nx cvi 6 string cvs show } if %nx>=0 nx 0 gt {%nx>=0 /nx nx 0.5 add cvi def nx 9 le {( ) show} if nx 99 le {( ) show} if nx 6 string cvs show } if nx 0 lt {%nx<0 /nx nx 0.5 sub cvi def nx abs 99 le {( ) show} if nx 6 string cvs show } if %nx>=0 } def /cvi03nshow {/nx exch def %with round nx 0 eq {%nx=0 (000) show nx cvi 7 string cvs show } if %nx>=0 nx 0 gt {%nx>=0 /nx nx 0.5 add cvi def nx 9 le {(0) show} if nx 99 le {(0) show} if nx 999 le {(0) show} if nx 7 string cvs show } if nx 0 lt {%nx<0 /nx nx 0.5 sub cvi def nx abs 9 le {(0) show} if nx abs 99 le {(0) show} if nx 7 string cvs show } if %nx>=0 } def /cvi03xshow {/nx exch def %with round nx 0 eq {%nx=0 ( ) show nx cvi 7 string cvs show } if %nx>=0 nx 0 gt {%nx>=0 /nx nx 0.5 add cvi def nx 9 le {( ) show} if nx 99 le {( ) show} if nx 999 le {( ) show} if nx 7 string cvs show } if nx 0 lt {%nx<0 /nx nx 0.5 sub cvi def nx abs 9 le {( ) show} if nx abs 99 le {( ) show} if nx 7 string cvs show } if %nx>=0 } def /yhot yhoe ydel 1 mul sub def %output of data 0 1 09 {/j exch def %j=0,09 xp0 xdela j get add yhot ydel i i1 sub 2 add mul sub moveto XYZ i21 j add get 0.001 mul cvi36show } for %j=0,09 10 1 15 {/j exch def %j=10,15 xp0 xdela j get add yhot ydel i i1 sub 2 add mul sub moveto XYZ i21 j add get 0.001 mul cvi34show } for %j=10,15 /cvi9show {cvi 9 string cvs show} def xp0 xdela 16 get add yhot ydel i i1 sub 2 add mul sub moveto XYZ i21 16 add get 18000000 add NR3 100000 mul add NR4 10000 mul add cvi9show /NRL* CIEL*0 cvi def /NRC* CIEC*ab0 cvi def /NRH* CIEhab0 45 div 2 add cvi def %/NRH* 2 def /NRA NRH* NRC* 10 mul add NRL* 1000 mul add def xp0 xdela 17 get add yhot ydel i i1 sub 2 add mul sub moveto i 000 ge i 101 le and {(\050) show NRA cvishow (_WN) show (\051) show} if i 102 ge i 203 le and {(\050) show NRA cvishow (_RG) show (\051) show} if i 204 ge i 305 le and {(\050) show NRA cvishow (_BY) show (\051) show} if /xdelx 200 def xp0 xdela 18 get add xdelx sub yhot ydel i i1 sub 2 add mul sub moveto CIEL*m cvi02xshow xp0 xdela 19 get add xdelx sub yhot ydel i i1 sub 2 add mul sub moveto CIEC*abm cvi03xshow xp0 xdela 20 get add xdelx sub yhot ydel i i1 sub 2 add mul sub moveto CIEhabm cvi02xshow xp0 xdela 21 get add xdelx sub yhot ydel i i1 sub 2 add mul sub moveto (%) show } for %i1,i2 i iim eq {%i=iim XYZ_min 11 d_CIELCH_min 1000 mul put XYZ_min 12 d_C94LCH_min 1000 mul put XYZ_min 13 d_CCMLCH_min 1000 mul put XYZ_min 14 d_C00LCH_min 1000 mul put XYZ_min 15 d_C85LCH_min 1000 mul put XYZ_max 11 d_CIELCH_max 1000 mul put XYZ_max 12 d_C94LCH_max 1000 mul put XYZ_max 13 d_CCMLCH_max 1000 mul put XYZ_max 14 d_C00LCH_max 1000 mul put XYZ_max 15 d_C85LCH_max 1000 mul put xp0 xdela 0 get add yhot ydel i2 1 add i1 sub 2 add mul sub moveto iCIE_min cvi9show 11 1 15 {/j exch def %j=11,15 xp0 xdela j get add yhot ydel i2 1 add i1 sub 2 add mul sub moveto XYZ_min j get 0.001 mul cvi34show } for %j=11,15 xp0 xdela 0 get add yhot ydel i2 2 add i1 sub 2 add mul sub moveto iCIE_max cvi9show 11 1 15 {/j exch def %j=11,15 xp0 xdela j get add yhot ydel i2 2 add i1 sub 2 add mul sub moveto XYZ_max j get 0.001 mul cvi34show } for %j=11,15 %output of min and maximum data /ki2 14 def 0 1 7 {/ki exch def ki 0 eq {/i iCIE_min def /ki1 11 def} if ki 1 eq {/i iCIE_max def /ki1 11 def} if ki 2 eq {/i iC94_min def /ki1 12 def} if ki 3 eq {/i iC94_max def /ki1 12 def} if ki 4 eq {/i iCCM_min def /ki1 13 def} if ki 5 eq {/i iCCM_max def /ki1 13 def} if ki 6 eq {/i iC85_min def /ki1 15 def} if ki 7 eq {/i iC85_max def /ki1 15 def} if /i21 i 21 mul def /i23ki i2 3 add ki add def 0 1 09 {/j exch def %j=0,09 xp0 xdela j get add yhot ydel i23ki i1 sub 2 add mul sub moveto XYZ i21 j add get 0.001 mul cvi36show } for %j=0,09 xp0 xdela ki1 get add yhot ydel i23ki i1 sub 2 add mul sub moveto XYZ i21 ki1 add get 0.001 mul cvi34show xp0 xdela ki2 get add yhot ydel i23ki i1 sub 2 add mul sub moveto XYZ i21 ki2 add get 0.001 mul cvi34show /cvi9show {cvi 9 string cvs show} def xp0 xdela 16 get add yhot ydel i23ki i1 sub 2 add mul sub moveto XYZ i21 16 add get 18000000 add %NR3 100000 mul add %NR4 10000 mul add cvi9show %/NRL* CIEL*0 cvi def %/NRC* CIEC*ab0 cvi def %/NRH* CIEhab0 45 div 2 add cvi def %/NRH* 2 def %/NRA NRH* NRC* 10 mul add NRL* 1000 mul add def %/NRA 1000 def %xp0 xdela 17 get add yhot ydel i23ki i1 sub 2 add mul sub moveto %XYZ i21 17 add get show %i 000 ge i 101 le and {(\050) show NRA cvishow (_WN) show (\051) show} if %i 102 ge i 203 le and {(\050) show NRA cvishow (_RG) show (\051) show} if %i 204 ge i 305 le and {(\050) show NRA cvishow (_BY) show (\051) show} if /xdelx 200 def xp0 xdela 18 get add xdelx sub yhot ydel i23ki i1 sub 2 add mul sub moveto XYZ i21 18 add get 0.001 mul cvi02xshow xp0 xdela 19 get add xdelx sub yhot ydel i23ki i1 sub 2 add mul sub moveto XYZ i21 19 add get 0.001 mul cvi03xshow xp0 xdela 20 get add xdelx sub yhot ydel i23ki i1 sub 2 add mul sub moveto XYZ i21 20 add get 0.001 mul cvi02xshow xp0 xdela 21 get add xdelx sub yhot ydel i23ki i1 sub 2 add mul sub moveto (%) show } for %ki=0,7 } if %i=iim showpage grestore } for %xcmax=0,x %%Trailer