%!PS-Adobe-3.0 EPSF-3.0 fef01-7a %%BoundingBox: 70 85 243 206 %STArT PDFDE011.EPS /pdfmark03 where {pop} {userdict /pdfmark03 /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: farbe.li.tu-berlin.de/fef0/fef0.HTM) /Author (compare K. Richter "Computergrafik ...": ISBN 3-8007-1775-1) /Subject (goto: http://farbe.li.tu-berlin.de or http://color.li.tu-berlin.de) /Keywords (image reproduction, colour devices) /Creator (klaus.richter@mac.com) /CreationDate (D:2022030112000) /ModDate (D:2022030112000) /DOCINFO pdfmark03 [ /View [ /Fit ] /DOCVIEW pdfmark03 %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 /FS {findfont exch scalefont setfont} bind def /MM {72 25.4 div mul} def /str {8 string } bind def /languagelevel where {pop languagelevel} {1} ifelse /PSL12 exch def /dictende {counttomark 2 idiv dup dict begin {def} repeat pop currentdict end} bind def /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-Oblique findfont dup length dict begin {1 index /FID ne {def} {pop pop} ifelse }forall /Encoding ISOLatin1Encoding def currentdict end /CourierI-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 /Courier-BoldOblique findfont dup length dict begin {1 index /FID ne {def} {pop pop} ifelse }forall /Encoding ISOLatin1Encoding def currentdict end /CourierBI-ISOL1 exch definefont pop /TG {350 /Times-ISOL1 FS} bind def /TM {280 /Times-ISOL1 FS} bind def /TK {240 /Times-ISOL1 FS} bind def /TS {200 /Times-ISOL1 FS} bind def /TL {160 /Times-ISOL1 FS} bind def /TV {110 /Times-ISOL1 FS} bind def /TW {080 /Times-ISOL1 FS} bind def /TIG {350 /TimesI-ISOL1 FS} bind def /TIM {280 /TimesI-ISOL1 FS} bind def /TIK {240 /TimesI-ISOL1 FS} bind def /TIS {200 /TimesI-ISOL1 FS} bind def /TIL {160 /TimesI-ISOL1 FS} bind def /TIV {110 /TimesI-ISOL1 FS} bind def /TIW {080 /TimesI-ISOL1 FS} bind def /TBG {350 /TimesB-ISOL1 FS} bind def /TBM {280 /TimesB-ISOL1 FS} bind def /TBK {240 /TimesB-ISOL1 FS} bind def /TBS {200 /TimesB-ISOL1 FS} bind def /TBL {160 /TimesB-ISOL1 FS} bind def /TBV {110 /TimesB-ISOL1 FS} bind def /TBW {080 /TimesB-ISOL1 FS} bind def /TBIG {350 /TimesBI-ISOL1 FS} bind def /TBIM {280 /TimesBI-ISOL1 FS} bind def /TBIK {240 /TimesBI-ISOL1 FS} bind def /TBIS {200 /TimesBI-ISOL1 FS} bind def /TBIL {160 /TimesBI-ISOL1 FS} bind def /TBIV {110 /TimesBI-ISOL1 FS} bind def /TBIW {080 /TimesBI-ISOL1 FS} bind def /SG {350 /Symbol FS} bind def /SM {280 /Symbol FS} bind def /SK {240 /Symbol FS} bind def /SS {200 /Symbol FS} bind def /SL {160 /Symbol FS} bind def /SV {110 /Symbol FS} bind def /SW {080 /Symbol FS} bind def %********************************************************* /proz_paramV {%proz_paramV %paramV not used for xchart4=0,1 %paramV used for xchart4=2 to 7 xchart4 2 eq xchart4 3 eq or {/yparam 0850 def} {/yparam 3850 def} ifelse /index2_7 {%index2_7 xchart4 2 eq xchart4 3 eq or xchart4 7 eq or {0 -50 rmoveto TBV (2) show 0 50 rmoveto xcol10KBV } if xchart4 4 eq {0 -50 rmoveto TBV () show 0 50 rmoveto xcol10_BV } if xchart4 5 eq xchart4 6 eq or {0 -50 rmoveto TBV (1) show 0 50 rmoveto xcol10KBV } if } bind def %index2_7 /index2_7n {%index2_7n xchart4 2 eq xchart4 3 eq or xchart4 7 eq or {0 -50 rmoveto TBV (2,n) show 0 50 rmoveto xcol10KBV } if xchart4 4 eq {0 -50 rmoveto TBV (n) show 0 50 rmoveto xcol10_BV } if xchart4 5 eq xchart4 6 eq or {0 -50 rmoveto TBV (1,n) show 0 50 rmoveto xcol10KBV } if } bind def %index2_7n /x0p 0050 def /y0p 3850 def /y0d 190 def x0p y0p y0d 0 mul sub moveto TBIL (XYZ) show 0 -50 rmoveto TBV (W) show 0 50 rmoveto xcol10KBV TBL (=) show XW cvsshow2 (, ) show YW cvsshow2 (, ) show ZW cvsshow2 x0p y0p y0d 1 mul sub moveto TBIL (A) show index2_7 TBL ( = 2,5 \050) show TBIL (a) show index2_7 TBL ( - ) show TBIL (a) show index2_7n TBL (\051 ) show TBIL (Y) show xcol10_BV x0p y0p y0d 2 mul sub moveto TBIL (B) show index2_7 TBL ( = 2,5 ) show TBL (\050) show TBIL (b) show index2_7 TBL ( - ) show TBIL (b) show index2_7n TBL (\051 ) show TBIL (Y) show xcol10_BV x0p y0p y0d 3 mul sub moveto TBIL (a) show index2_7 TBL ( = ) show TBIL (a) show 0 -50 rmoveto TBV (20) show 0 50 rmoveto TBL ( [ ) show TBIL (\050 x) show xcol10_BV TBL ( - ) show TBIL (x) show 0 -50 rmoveto TBV (c) show 0 50 rmoveto TBIL ( \051 / y) show xcol10_BV TBL (]) show x0p y0p y0d 4 mul sub moveto TBIL (b) show index2_7 TBL ( = ) show TBIL (b) show 0 -50 rmoveto TBV (20) show 0 50 rmoveto TBIL (B) show 0 -50 rmoveto TBV (c) show 0 50 rmoveto TBL ( [) show TBIL ( z) show xcol10_BV TBIL ( / y) show xcol10_BV TBL (]) show x0p y0p y0d 5 mul sub moveto TBIL (a) show 0 -50 rmoveto TBV (20) show 0 50 rmoveto TBL ( = 1, ) show TBIL (b) show 0 -50 rmoveto TBV (20) show 0 50 rmoveto TBL ( = -0,4) show x0p y0p y0d 6 mul sub moveto TBIL (x) show 0 -50 rmoveto TBV (c) show 0 50 rmoveto TBL ( = ) show xct show (, ) show TBIL (B) show 0 -50 rmoveto TBV (c) show 0 50 rmoveto TBL ( = ) show Bct show x0p y0p y0d 7 mul sub moveto TBIL (C) show TBV 0 -50 rmoveto (AB) show 0 50 rmoveto index2_7 TBL (=[) show TBIL (A) show index2_7 TBV -20 60 rmoveto (2) show 0 -60 rmoveto TBL (+) show TBIL (B) show index2_7 TBV -20 60 rmoveto (2) show 0 -60 rmoveto TBL (]) show TBV 0 60 rmoveto (1/2) show 0 -60 rmoveto %********************************************** /y0p y0p y0d 8 mul sub def /y0d 210 def 0 setgray x0p y0p y0d 0 mul sub moveto TBL (6 ) show TBIL (Ostwald) show TBL (\255Farben (o), ) showde %0fef01-7 02581 ( colours (o), ) showen %1fef01-7 02581 ( colores (o), ) showes %2fef01-7 02581 ( couleurs (o), ) showfr %3fef01-7 02581 ( colori (o), ) showit %4fef01-7 02581 ( colours (o), ) showjp %5fef01-7 02581 TBIL (C) show TBV 0 -60 rmoveto (AB,2) show 0 60 rmoveto xcol10KBV TBL (=const) show xchart4 0 eq xchart4 1 eq or {%xchart4=0,1 x0p y0p y0d 1 mul sub moveto TBL (in der Normfarbtafel) showde %0fef01-7 04581 (chromaticity diagram) showen %1fef01-7 04581 (en el diagrama de chromaticidad) showes %2fef01-7 04581 (dans le diagramme de chromaticit\351) showfr %3fef01-7 04581 (nel diagramma di cromaticit\340) showit %4fef01-7 04581 (the chromaticity diagram) showjp %5fef01-7 04581 TBL ( \050) show TBIL (x) show xcol10_BV TBIL (, y) show xcol10_BV TBL (\051) show } if %xchart4=0,1 xchart4 2 eq xchart4 3 eq or {%xchart4=2,3 x0p y0p y0d 1 mul sub moveto TBL (Farbenraum ) showde %0fef01-7 06581 (colour space ) showea %1fef01-7 06581 TBL (\050) show TBIL (C) show TBV 0 -50 rmoveto (AB,2) show 0 50 rmoveto xcol10KBV TBIL xchart7 0 eq {(, Y) show} if xchart7 1 eq {(, L*) show TBVCIE} if xchart7 2 eq {(, L*) show TBVCIr} if xchart7 3 eq {(, L*) show TBVTUr} if xchart7 4 eq {(, L*) show TBVTAr} if xcol10_BV TBL (\051) show x0p y0p y0d 2 mul sub moveto TBIL xchart7 0 eq {(Y) show TBL (=18) show TBIL (Y) show TBVr} if xchart7 1 eq {(L*) show TBVCIE TBL (=116\050) show TBIL (Y/) show TBL (100\051) show TBV 0 80 rmoveto (1/3) show 0 -80 rmoveto TBL (-16) show TBIV ( \050Y) show TBV (>=0,8856\051) show TBL ( or) showen ( oder) showde x0p y0p y0d 3 mul sub moveto TBIL (L*) show TBVCIE TBL (=116[(841/108)) show TBIL (\050Y/) show TBL (100\051+4/29]-16) show } if xchart7 2 eq {(L*) show TBVCIr TBL (=) show TBIL (L*) show TBVCIE TBIL ((Y) / ) show TBIL (L*) show TBVCIE TBIL ((18)) show} if xchart7 3 eq {(L*) show TBVTUr TBL (=50 + 40[) show TBIL (Y) show TBLr TBL (/log(5)]) show} if xchart7 4 eq {%xchart7=4 /eexp {TBV 0 80 rmoveto (x) show 0 -80 rmoveto TBL} def /eexn {TBV 0 80 rmoveto (-x) show 0 -80 rmoveto TBL} def (L*) show TBVTAr TBL (=50 + 50[e) show eexp TBL (+e) show eexn TBL (]/[) show TBL (e) show eexp TBL (+e) show eexp TBL (]) show x0p y0p y0d 3 mul sub moveto TBIL (Y) show TBVr TBL (=) show TBIL (Y) show TBL (/18, ) show TBIL (x) show TBL (= log[) show TBIL (Y) show TBVr TBL (]) show } if %xchart7=4 } if %xchart4=2,3 xchart4 4 eq xchart4 5 eq or {%xchart4=4,5 TBL (Buntwertdiagramm) showde %0fef01-7 08581 (chromatic value diagram) showen %1fef01-7 08581 (en el diagrama valor crom\341tico) showes %2fef01-7 08581 (dans la valeur chromatique le diagramme) showfr %3fef01-7 08581 (nel diagramma di valore cromatico) showit %4fef01-7 08581 (chromatic value diagram) showjp %5fef01-7 08581 TBL ( \050) show TBIL (A) show xcol10_BV TBL (, ) show TBIL (B) show xcol10_BV TBL (\051) show } if %xchart4=4,5 xchart4 6 eq {%xchart4=6 TBL (Buntwertdiagram) showde %0fef01-7 10581 (chromatic value diagram) showen %1fef01-7 10581 (en el diagrama croma) showes %2fef01-7 10581 (dans le diagramme de chroma) showfr %3fef01-7 10581 (nel diagramma di chroma) showit %4fef01-7 10581 (chromactic value diagram) showjp %5fef01-7 10581 TBL ( \050) show TBIL (A) show 0 -50 rmoveto TBV (1) show 0 50 rmoveto xcol10KBV TBL (, ) show TBIL (B) show 0 -50 rmoveto TBV (1) show 0 50 rmoveto xcol10KBV TBL (\051) show } if %xchart4=6 xchart4 7 eq {%xchart4=7 TBL (Buntwertdiagram) showde %0fef01-7 11581 (chromatic value diagram) showen %1fef01-7 11581 (en el diagrama croma) showes %2fef01-7 11581 (dans le diagramme de chroma) showfr %3fef01-7 11581 (nel diagramma di chroma) showit %4fef01-7 11581 (chromatic value diagram) showjp %5fef01-7 11581 TBL ( \050) show TBIL (A) show 0 -50 rmoveto TBV (2) show 0 50 rmoveto xcol10KBV TBL (, ) show TBIL (B) show 0 -50 rmoveto TBV (2) show 0 50 rmoveto xcol10KBV TBL (\051) show } if %xchart4=7 x0p y0p y0d 4 mul sub moveto TBL (Illumin. ) showea (Lichtart ) showde TELi xchartl get show TBIL (, Y) show TBV 0 -60 rmoveto (W) show 0 60 rmoveto xcol10KBV TBL (=) show ynorW1 100 mul cvsshow1 TBIL (, Y) show TBV 0 -60 rmoveto (N) show 0 60 rmoveto xcol10KBV TBL (=) show ynorN1 100 mul cvsshow1 } bind def %proz_paramV %************************************************************* /proz_table {%proz_table /TBVd {TBV 0 -50 rmoveto (d) show 0 50 rmoveto TL} def /TBVc {TBV 0 -50 rmoveto (c) show 0 50 rmoveto TL} def /TBWd {TBW 0 -50 rmoveto (d) show 0 50 rmoveto TV} def /TBWc {TBW 0 -50 rmoveto (c) show 0 50 rmoveto TV} def /TBVo {TBV 0 -50 rmoveto (o) show 0 50 rmoveto TL} def /TBV2 {TBV 0 -50 rmoveto (2) show 0 50 rmoveto TL} def /TBVAB,2 {TBV 0 -50 rmoveto (AB,2) show 0 50 rmoveto TL} def /TBVab,2 {TBV 0 -50 rmoveto (AB,2) show 0 50 rmoveto TL} def /TBWo {TBW 0 -50 rmoveto (o) show 0 50 rmoveto TV} def /TBW2 {TBW 0 -50 rmoveto (2) show 0 50 rmoveto TV} def /TBWAB,2 {TBW 0 -50 rmoveto (AB,2) show 0 50 rmoveto TV} def /TBWab,2 {TBW 0 -50 rmoveto (AB,2) show 0 50 rmoveto TV} def xchart* 0 eq {/xtr -20 def}{/xtr -60 def} ifelse /TBLr {TBL 0 -50 rmoveto (r) show 0 50 rmoveto TS} def /TBLCIE {TBL xtr -50 rmoveto (CIE) show 0 50 rmoveto TS} def /TBLCIr {TBL xtr -50 rmoveto (CIr) show 0 50 rmoveto TS} def /TBLTUr {TBL xtr -50 rmoveto (TUr) show 0 50 rmoveto TS} def /TBLTAr {TBL xtr -50 rmoveto (TAr) show 0 50 rmoveto TS} def /TBVr {TBV 0 -50 rmoveto (r) show 0 50 rmoveto TL} def /TBVCIE {TBV xtr -50 rmoveto (CIE) show 0 50 rmoveto TL} def /TBVCIr {TBV xtr -50 rmoveto (CIr) show 0 50 rmoveto TL} def /TBVTUr {TBV xtr -50 rmoveto (TUr) show 0 50 rmoveto TL} def /TBVTAr {TBV xtr -50 rmoveto (TAr) show 0 50 rmoveto TL} def /TBWr {TBW 0 -50 rmoveto (r) show 0 50 rmoveto TV} def /TBWCIE {TBW xtr -50 rmoveto (CIE) show 0 50 rmoveto TV} def /TBWCIr {TBW xtr -50 rmoveto (CIr) show 0 50 rmoveto TV} def /TBWTUr {TBW xtr -50 rmoveto (TUr) show 0 50 rmoveto TV} def /TBWTAr {TBW xtr -50 rmoveto (TAr) show 0 50 rmoveto TV} def /xti 9 array def % 0 1 2 3 4 5 6 7 8 % Name rang xti Yti Zti x y ld lp /xti [0025 0200 0625 0925 1245 1525 1825 2080 2310] def /xta 12 array def % 0 1 2 3 4 5 6 7 8 9 10 11 %xchart*=0: % a2 b2 c2 A2 B2 CAB2 HAB2 Yr L'Ci L'Cr L'Tr L'Ta %xchart*=1: % a2 b2 c2 A2 B2 CAB2 HAB2 Yr L*Ci L*Cr L*Tr L*Ta /xta [2500 2800 3200 3500 3800 4100 4350 4600 4850 5150 5400 5700] def /ytax 1200 def /ydt 140 def /ydy 160 def %output text RYGCBMd and WNd %output header TBV xti 0 get 020 sub ytax ydy add moveto (Name) show xti 1 get 100 add ytax ydy add moveto ( Range) showen (Bereich) showde xti 2 get 100 add ytax ydy add moveto TBIV (X) show xcol10KBW xti 3 get 100 add ytax ydy add moveto TBIV (Y) show xcol10KBW xti 4 get 100 add ytax ydy add moveto TBIV (Z) show xcol10KBW xti 5 get 050 add ytax ydy add moveto TBIV (x) show xcol10KBW xti 6 get 050 add ytax ydy add moveto TBIV (y) show xcol10KBW xti 7 get ytax ydy add moveto SV (l) show TBWd xti 8 get ytax ydy add moveto SV (l) show TBWc xta 00 get 020 add ytax ydy add moveto TBIV (a) show TBW2 xcol10KBW xta 01 get 020 add ytax ydy add moveto TBIV (b) show TBW2 xcol10KBW xta 02 get 020 add ytax ydy add moveto TBIV (c) show TBW2 xcol10KBW xta 03 get 020 add ytax ydy add moveto TBIV (A) show TBW2 xcol10KBW xta 04 get 020 add ytax ydy add moveto TBIV (B) show TBW2 xcol10KBW xta 05 get 050 sub ytax ydy add moveto TBIV (C) show TBWAB,2 xcol10KBW xta 06 get 050 sub ytax ydy add moveto TBIV (h) show TBWab,2 xcol10KBW xta 07 get 020 add ytax ydy add moveto TBIV (Y) show TBWr xcol10KBW xchart* 0 eq {%xchart*=0 xta 08 get 050 sub ytax ydy add moveto TBIV (L') show TBWCIE xcol10KBW xta 09 get 050 sub ytax ydy add moveto TBIV (L') show TBWCIr xcol10KBW xta 10 get 050 sub ytax ydy add moveto TBIV (L') show TBWTUr xcol10KBW xta 11 get 050 sub ytax ydy add moveto TBIV (L') show TBWTAr xcol10KBW } if %xchart*=0 xchart* 1 eq {%xchart*=1 xta 08 get 050 sub ytax ydy add moveto TBIV (L*) show TBWCIE xcol10KBW xta 09 get 050 sub ytax ydy add moveto TBIV (L*) show TBWCIr xcol10KBW xta 10 get 050 sub ytax ydy add moveto TBIV (L*) show TBWTUr xcol10KBW xta 11 get 050 sub ytax ydy add moveto TBIV (L*) show TBWTAr xcol10KBW } if %xchart*=1 %STOP1a /colXoi 9 array def /colYoi 9 array def /colZoi 9 array def /colXAoi 9 array def /colYAoi 9 array def /colZAoi 9 array def /colAKoi 9 array def /colBKoi 9 array def /colCKoi 9 array def /colAGoi 9 array def /colBGoi 9 array def /colCGoi 9 array def /colHGoi 9 array def /colYroi 9 array def /colL*oi 9 array def /colLroi 9 array def /colTroi 9 array def /colTaoi 9 array def 0 1 5 {/jp exch def %jp=0,5 colXoi jp colXi jp get xchart9 1 ge {0.9 mul} if put colYoi jp colYi jp get xchart9 1 ge {0.9 mul} if put colZoi jp colZi jp get xchart9 1 ge {0.9 mul} if put } for %jp=0,5 /wnori 4 array def /nnori 4 array def /unori 4 array def /cnori 4 array def %xchart9 0 1 2 3 /wnori [1.0000 0.9000 0.7200 0.5400] def /nnori [0.0001 0.0360 0.0450 0.0600] def /unori [0.1800 0.1800 0.1800 0.1800] def /cnori [(>288:1)(25:1) (16:1) (9:1)] def %XYZoi 6:W, 7:N, 8:Z colXoi 6 XW100 wnori 0 get mul put colYoi 6 YW100 wnori 0 get mul put colZoi 6 ZW100 wnori 0 get mul put colXoi 7 XW100 nnori 0 get mul put colYoi 7 YW100 nnori 0 get mul put colZoi 7 ZW100 nnori 0 get mul put colXoi 8 XW100 unori 0 get mul put colYoi 8 YW100 unori 0 get mul put colZoi 8 ZW100 unori 0 get mul put 0 1 8 {/jp exch def %jp=0,8 /SUM colXoi jp get colYoi jp get add colZoi jp get add 0.0001 add def colXAoi jp colXoi jp get SUM div put colYAoi jp colYoi jp get SUM div put colZAoi jp colZoi jp get SUM div put } for %jp=0,8 /xc xci xchartl get def /xct xcti xchartl get def /Bc Bci xchartl get def /Bct Bcti xchartl get def /a20 1.0 def /b20 -0.4 def /xc 0.110 def /Ac 1.000 def /Bc Bci xchartl get def %4 different Bc defined by xchartl /A2G 2.50 def /B2G 2.50 def /asig 1.00 def /bsig 1.00 def /esig 2.718282 def /jp 6 def colAKoi jp colXAoi jp get xc sub colYAoi jp get div a20 mul put colBKoi jp colZAoi jp get colYAoi jp get div b20 mul Bc mul put colL*oi jp colYoi jp get 0.8856 ge {colYoi jp get 100 div 0.00001 add 0.3333 exp 116 mul 16 sub put} {colYoi jp get 100 div 841 mul 108 div 4 29 div add 116 mul 16 sub put} ifelse /jp 7 def colAKoi jp colXAoi jp get xc sub colYAoi jp get div a20 mul put colBKoi jp colZAoi jp get colYAoi jp get div b20 mul Bc mul put colL*oi jp colYoi jp get 0.8856 ge {colYoi jp get 100 div 0.00001 add 0.3333 exp 116 mul 16 sub put} {colYoi jp get 100 div 841 mul 108 div 4 29 div add 116 mul 16 sub put} ifelse /jp 8 def colAKoi jp colXAoi jp get xc sub colYAoi jp get div a20 mul put colBKoi jp colZAoi jp get colYAoi jp get div b20 mul Bc mul put colL*oi jp colYoi jp get 0.8856 ge {colYoi jp get 100 div 0.00001 add 0.3333 exp 116 mul 16 sub put} {colYoi jp get 100 div 841 mul 108 div 4 29 div add 116 mul 16 sub put} ifelse %STOPAA 0 1 8 {/jp exch def %jp=0,8 colAKoi jp colXAoi jp get xc sub colYAoi jp get div a20 mul put colBKoi jp colZAoi jp get colYAoi jp get div b20 mul Bc mul put colCKoi jp colAKoi jp get colAKoi 6 get sub dup mul colBKoi jp get colBKoi 6 get sub dup mul add 0.0001 add sqrt put colAGoi jp colAKoi jp get colAKoi 6 get sub colYoi jp get mul A2G mul put colBGoi jp colBKoi jp get colBKoi 6 get sub colYoi jp get mul B2G mul put colCGoi jp colAGoi jp get dup mul colBGoi jp get dup mul add sqrt put colHGoi jp colBGoi jp get colAGoi jp get 0.00001 add atan put colYroi jp colYoi jp get colYoi 8 get div put colL*oi jp colYoi jp get 0.8856 ge {colYoi jp get 100 div 0.00001 add 0.3333 exp 116 mul 16 sub put} {colYoi jp get 100 div 841 mul 108 div 4 29 div add 116 mul 16 sub put} ifelse colLroi jp colL*oi jp get colL*oi 8 get div 50 mul put colTroi jp colYroi jp get log 5 log div 40 mul 50 add put /xr colYroi jp get log asig div def colTaoi jp esig xr exp esig xr neg exp sub esig xr exp esig xr neg exp add div bsig mul 50 mul 50 add put } for %jp=0,8 %for all further calculations and graphics gsave %col(XYZ)1i, col(XYZ)A1i /colX1i 9 array def /colY1i 9 array def /colZ1i 9 array def /colXA1i 9 array def /colYA1i 9 array def /colZA1i 9 array def /colAK1i 9 array def /colBK1i 9 array def /colCK1i 9 array def /colAG1i 9 array def /colBG1i 9 array def /colCG1i 9 array def /colHG1i 9 array def /colYr1i 9 array def /colL*1i 9 array def /colLr1i 9 array def /colTr1i 9 array def /colTa1i 9 array def 0 1 2 {/jp exch def %jp=0,2 /jp3 jp 3 add def colX1i jp colXoi jp get wnori xchart9 get mul colXoi jp3 get nnori xchart9 get mul add put colY1i jp colYoi jp get wnori xchart9 get mul colYoi jp3 get nnori xchart9 get mul add put colZ1i jp colZoi jp get wnori xchart9 get mul colZoi jp3 get nnori xchart9 get mul add put } for %jp=0,2 3 1 5 {/jp exch def %jp=3,5 /jp3 jp 3 sub def colX1i jp colXoi jp get wnori xchart9 get mul colXoi jp3 get nnori xchart9 get mul add put colY1i jp colYoi jp get wnori xchart9 get mul colYoi jp3 get nnori xchart9 get mul add put colZ1i jp colZoi jp get wnori xchart9 get mul colZoi jp3 get nnori xchart9 get mul add put } for %jp=3,5 %XYZoi 6:W, 7:N, 8:Z colX1i 6 colXoi 6 get wnori xchart9 get mul put colY1i 6 colYoi 6 get wnori xchart9 get mul put colZ1i 6 colZoi 6 get wnori xchart9 get mul put colX1i 7 colXoi 6 get nnori xchart9 get mul put colY1i 7 colYoi 6 get nnori xchart9 get mul put colZ1i 7 colZoi 6 get nnori xchart9 get mul put colX1i 8 colXoi 6 get unori xchart9 get mul put colY1i 8 colYoi 6 get unori xchart9 get mul put colZ1i 8 colZoi 6 get unori xchart9 get mul put %STOP2 0 1 8 {/jp exch def %jp=0,8 /SUM colX1i jp get colY1i jp get add colZ1i jp get add 0.0001 add def colXA1i jp colX1i jp get SUM div put colYA1i jp colY1i jp get SUM div put colZA1i jp colZ1i jp get SUM div put } for %jp=0,8 /XANK colXA1i 6 get def /YANK colYA1i 6 get def /ZANK colZA1i 6 get def %definitions necessary for most graphics /colXAposi 9 array def /colYAposi 9 array def % R Y G C B M W N Z % 0 1 2 3 4 5 6 7 8 /jp 6 def colAK1i jp colXA1i jp get xc sub colYA1i jp get div a20 mul put colBK1i jp colZA1i jp get colYA1i jp get div b20 mul Bc mul put colL*1i jp colY1i jp get 0.8856 ge {colY1i jp get 100 div 0.00001 add 0.3333 exp 116 mul 16 sub put} {colY1i jp get 100 div 841 mul 108 div 4 29 div add 116 mul 16 sub put} ifelse /jp 7 def colAK1i jp colXA1i jp get xc sub colYA1i jp get div a20 mul put colBK1i jp colZA1i jp get colYA1i jp get div b20 mul Bc mul put colL*1i jp colY1i jp get 0.8856 ge {colY1i jp get 100 div 0.00001 add 0.3333 exp 116 mul 16 sub put} {colY1i jp get 100 div 841 mul 108 div 4 29 div add 116 mul 16 sub put} ifelse /jp 8 def colAK1i jp colXA1i jp get xc sub colYA1i jp get div a20 mul put colBK1i jp colZA1i jp get colYA1i jp get div b20 mul Bc mul put colL*1i jp colY1i jp get 0.8856 ge {colY1i jp get 100 div 0.00001 add 0.3333 exp 116 mul 16 sub put} {colY1i jp get 100 div 841 mul 108 div 4 29 div add 116 mul 16 sub put} ifelse 0 1 8 {/jp exch def %jp=6,8 WNZ colAK1i jp colXA1i jp get xc sub colYA1i jp get div a20 mul put colBK1i jp colZA1i jp get colYA1i jp get div b20 mul Bc mul put colCK1i jp colAK1i jp get colAK1i 6 get sub dup mul colBK1i jp get colBK1i 6 get sub dup mul add 0.0001 add sqrt put colAG1i jp colAK1i jp get colAK1i 6 get sub colY1i jp get mul A2G mul put colBG1i jp colBK1i jp get colBK1i 6 get sub colY1i jp get mul B2G mul put colCG1i jp colAG1i jp get dup mul colBG1i jp get dup mul add sqrt put colHG1i jp colBG1i jp get colAG1i jp get 0.00001 add atan put colYr1i jp colY1i jp get colY1i 8 get div put colL*1i jp colY1i jp get 0.8856 ge {colY1i jp get 100 div 0.00001 add 0.3333 exp 116 mul 16 sub put} {colY1i jp get 100 div 841 mul 108 div 4 29 div add 116 mul 16 sub put} ifelse colLr1i jp colL*1i jp get colL*1i 8 get div 50 mul put colTr1i jp colYr1i jp get log 5 log div 40 mul 50 add put /xr colYr1i jp get log asig div def colTa1i jp esig xr exp esig xr neg exp sub esig xr exp esig xr neg exp add div bsig mul 50 mul 50 add put } for %jp=6,8 WNZ %STOPABC %output data 0 1 8 {/jp exch def %jp=0,8 %6 RYGCBM + 3 WZN TV /ytaxa ytax ydt jp mul sub def xti 0 get ytaxa moveto TBV colnamei jp get show TBW 0 -50 rmoveto jp 5 le {(o) show}{(d) show} ifelse 0 50 rmoveto TV xti 1 get ytaxa moveto jp 0 eq {DOW1j 0 get 0.5 add cvishow0 (_775) show} if %rounded R jp 1 eq {DOW1j 1 get 0.5 add cvishow0 (_775) show} if %rounded Y jp 2 eq {DOW1j 1 get 0.5 add cvishow0 (_) show %rounded B DOW1j 0 get 0.5 add cvishow0 } if %+roundet R jp 3 eq {(380_) show DOW1j 0 get 0.5 add cvishow0} if %rounded C jp 4 eq {(380_) show DOW1j 1 get 0.5 add cvishow0} if %rounded B jp 5 eq {DOW1j 0 get 0.5 add cvishow0 (_) show %rounded R DOW1j 1 get 0.5 add cvishow0 } if %+rounded B jp 6 eq {(380_775) show} if jp 7 eq {(380_775) show} if jp 8 eq {(380_775) show} if xti 2 get ytaxa moveto colX1i jp get cvsshow2 xti 3 get ytaxa moveto colY1i jp get cvsshow2 xti 4 get ytaxa moveto colZ1i jp get cvsshow2 xti 5 get ytaxa moveto colXA1i jp get cvsshow3 xti 6 get ytaxa moveto colYA1i jp get cvsshow3 jp 6 eq {xti 7 get ytaxa moveto ( ) show ynorW1 100 mul cvishow0 (%) show TV} if jp 7 eq {xti 7 get ytaxa moveto ( ) show ynorN1 100 mul cvishow0 (%) show TV} if jp 8 eq {xti 7 get ytaxa moveto ( ) show ynorZ1 100 mul cvishow0 (%) show TV} if jp 5 le {%jp<=5 RYGCBM /jp2 jp 2 add def %DOW(1/2)j sTArted at jp=2 xti 7 get ytaxa moveto DOW1j jp2 get cvishow DOW1jc jp2 get show xti 8 get ytaxa moveto DOW2j jp2 get cvishow DOW2jc jp2 get show } if %jp<=5 RYGCBM xta 00 get ytaxa moveto colAK1i jp get cvsshow3 xta 01 get ytaxa moveto colBK1i jp get cvsshow3 xta 02 get ytaxa moveto colCK1i jp get cvsshow3 xta 03 get ytaxa moveto colAG1i jp get cvsshow1 xta 04 get ytaxa moveto colBG1i jp get cvsshow1 xta 05 get ytaxa moveto colCG1i jp get cvsshow1 xta 06 get ytaxa moveto colHG1i jp get cvishow0 xta 07 get ytaxa moveto colYr1i jp get cvsshow2 xchart* 0 eq {%xchart*=0 xta 08 get ytaxa moveto colL*1i jp get 50 sub cvsshow1 xta 09 get ytaxa moveto colLr1i jp get 50 sub cvsshow1 xta 10 get ytaxa moveto colTr1i jp get 50 sub cvsshow1 xta 11 get ytaxa moveto colTa1i jp get 50 sub cvsshow1 } if %xchart*=0 xchart* 1 eq {%xchart*=1 xta 08 get ytaxa moveto colL*1i jp get cvsshow1 xta 09 get ytaxa moveto colLr1i jp get cvsshow1 xta 10 get ytaxa moveto colTr1i jp get cvsshow1 xta 11 get ytaxa moveto colTa1i jp get cvsshow1 } if %xchart*=1 } for %jp=0,8 } bind def %proz_table %**************************************************************************** /proz_axis_scales4_7 {%proz_axis_scales4_7 %axis and scales 0 setgray -1600 0 moveto 3350 0 rlineto stroke 0 -1880 moveto 0 3600 rlineto stroke 1750 100 sub 50 moveto 100 -50 rlineto -100 -50 rlineto closepath fill 0 50 sub 1750 100 sub moveto 50 100 rlineto 50 -100 rlineto closepath fill /xt10x 5 array def /yt10x 5 array def /xt10x [(-100) ( ) ( ) ( ) ( 100)] def /yt10x [(-100) () ( ) ( ) ( 100)] def 0 setgray 0 1 4 {/i exch def %i=0,4 x-axis -1600 i 800 mul add -75 moveto 0 150 rlineto stroke -1800 i 800 mul add -250 moveto TBL xt10x i get show i 4 eq {-1600 i 800 mul add 0 moveto xchart4 4 eq { %xchart4=4 -200 150 rmoveto TBIS (A) show xcol10_BL } if %xchart4=4 xchart4 5 eq xchart4 6 eq or { %xchart4=5,6 -300 150 rmoveto TBIS (A) show 00 -50 rmoveto TBL (1) show 0 50 rmoveto xcol10KBL } if %xchart4=5,6 xchart4 7 eq { %xchart4=7 -300 150 rmoveto TBIS (A) show 00 -50 rmoveto TBL (2) show 0 50 rmoveto xcol10KBL } if %xchart4=7 } if } for %i=0,4 0 1 4 {/i exch def %i=0,4 y-axis -75 -1600 i 800 mul add moveto 150 0 rlineto stroke -450 -1650 i 800 mul add 000 sub moveto TBL yt10x i get show i 4 eq {0 -1650 i 800 mul add moveto xchart4 4 eq { %xchart4=4 150 050 rmoveto TBIS (B) show xcol10_BL } if %xchart4=4 xchart4 5 eq xchart4 6 eq or { %xchart4=5,6 150 050 rmoveto TBIS (B) show -20 -50 rmoveto TBL (1) show 0 50 rmoveto xcol10KBL } if %xchart4=5,6 xchart4 7 eq { %xchart4=7 150 050 rmoveto TBIS (B) show -20 -50 rmoveto TBL (2) show 0 50 rmoveto xcol10KBL } if %xchart4=7 } if } for %i=0,4 newpath 0 0 100 0 360 arc stroke -350 -200 moveto TBL TELi xchartl get show } bind def %proz_axis_scales4_7 %*********************************************************** /proz_chromaticity_lines {%BEG proz_chromaticity_lines %available %XEi, YEi, ZEi, XAEi, YAEi, ZAEi, 0..79 for 380 to 775nm for illuminant E %XSi, YSi, ZSi, XASi, YASi, ZASi, 0..79 for 380 to 775nm for illuminant (P/D)xx /DOW 82 array def %special for (x,y) diagrams /DOWZ 17 array def /F02EZ 51 array def %purple data /F10EZ 51 array def %TRISTIMULUS VALUES FOR PURPLE COLORS from 'dmyy'KRPROG.FOR %FOR 02- AND 10-DEGREE-OBSERVER, ILLUMINANT E 0 1 79 {/i exch def %i=0,79 = 380_775 DOW i 380 i 5 mul add put } for %i=0,79 /DOWZ %17 data [700 -495 -500 -505 -510 -515 -520 -525 -530 -535 -540 -545 -550 -555 -560 -565 400] def /F02EZ %3x17 data 700 ... 400 [.01136 .01141 .01158 .01169 .01176 .01182 .01187 .01191 .01195 .01199 .01204 .01210 .01219 .01232 .01254 .01300 .01431 .00410 .00404 .00383 .00369 .00359 .00352 .00346 .00342 .00337 .00331 .00325 .00317 .00306 .00289 .00262 .00205 .00040 .00000 .00118 .00507 .00754 .00930 .01064 .01167 .01256 .01346 .01445 .01562 .01709 .01910 .02210 .02718 .03765 .06785] def /F10EZ %3x17 data 700 ... 400 [.00958 .01015 .01037 .01053 .01065 .01075 .01085 .01096 .01108 .01122 .01139 .01163 .01201 .01268 .01416 .02078 .01911 .00372 .00361 .00357 .00355 .00352 .00351 .00349 .00347 .00345 .00342 .00339 .00335 .00328 .00316 .00289 .00170 .00200 .00000 .00517 .00718 .00858 .00972 .01063 .01150 .01245 .01354 .01478 .01635 .01856 .02194 .02795 .04136 .10106 .08601] def %*************************************************** /XEZi 17 array def %to be defined /YEZi 17 array def /ZEZi 17 array def /XAEZi 17 array def /YAEZi 17 array def /ZAEZi 17 array def /YKSUM 0 def %for E00 0 1 79 {/i exch def %i=0,1,79 /YKSUM YKSUM F_CIEi 80 i add get add def } for %i=0,1,79 0 1 16 {/i exch def %i=0,16 %for illuminant E: S(lamdda=100) XEZi i xcolorl 0 eq {F02EZ} {F10EZ} ifelse 00 i add get YKSUM div 100 mul put YEZi i xcolorl 0 eq {F02EZ} {F10EZ} ifelse 17 i add get YKSUM div 100 mul put ZEZi i xcolorl 0 eq {F02EZ} {F10EZ} ifelse 34 i add get YKSUM div 100 mul put /SUM XEZi i get YEZi i get add ZEZi i get add 0.0001 add def XAEZi i XEZi i get SUM div put YAEZi i YEZi i get SUM div put ZAEZi i ZEZi i get SUM div put } for %i=0,16 /xtrans8 600 def /ytrans8 400 def xtrans8 ytrans8 translate %for scala and graphic 0 0 moveto 4300 0 rlineto stroke 0 0 moveto 0 3500 rlineto stroke %arrows 4300 100 sub 50 moveto 100 -50 rlineto -100 -50 rlineto stroke -50 3400 moveto 50 100 rlineto 50 -100 rlineto stroke %! 100 S-Einheiten = 2000 Skalen-Einheiten TBS 0 -50 moveto 0 100 rlineto stroke 800 -50 moveto 0 100 rlineto stroke 1600 -50 moveto 0 100 rlineto stroke 2400 -50 moveto 0 100 rlineto stroke 3200 -50 moveto 0 100 rlineto stroke 4000 -50 moveto 0 100 rlineto stroke -100 -300 moveto (0,0) show 700 -300 moveto (0,2) show 1500 -300 moveto (0,4) show 2300 -300 moveto (0,6) show 3100 -300 moveto (0,8) show 3900 -300 moveto (1,0) show %! 100 S-Einheiten = 2000 Skalen-Einheiten -50 0 moveto 100 0 rlineto stroke -50 800 moveto 100 0 rlineto stroke -50 1600 moveto 100 0 rlineto stroke -50 2400 moveto 100 0 rlineto stroke -50 3200 moveto 100 0 rlineto stroke -450 -80 moveto (0,0) show -450 720 moveto (0,2) show -450 1520 moveto (0,4) show -450 2320 moveto (0,6) show -450 3120 moveto (0,8) show TBIS 4300 -250 moveto (x) show xcol10_BL -350 3400 moveto (y) show xcol10_BL TBS 2200 150 moveto xcolorl 0 eq {(CIE 1931) show} if xcolorl 1 eq {(CIE 1964) show} if %3950 100 moveto (P) show newpath /fakt 4000 def 4 1 64 {/i exch def %i=4,64 %400..700 XASi i get fakt mul YASi i get fakt mul i 05 eq {moveto} if i 06 ge i 63 le and {lineto} if i 64 eq {lineto closepath stroke} if } for %i=4,64 /xytshift 320 array def %min 4x65 /xytshift [ 0 000 000 (380) %0 0 000 000 (385) %1 0 000 000 (390) %2 0 000 000 (395) %3 1 -170 -170 (400) %4 0 000 000 (405) %5 0 000 000 (410) %6 0 000 000 (415) %7 0 000 000 (420) %8 0 000 000 (425) %9 0 000 000 (430) %10 0 000 000 (435) %11 0 000 000 (440) %12 0 000 000 (445) %13 1 -300 -050 (450) %14 S 0 000 000 (455) %15 0 000 000 (460) %16 1 -300 -030 (465) %17 0 000 000 ( ) %18 1 -300 -030 (475) %19 1 -300 -030 (480) %20 1 -300 -030 (485) %21 1 -330 -050 (490) %22 1 -270 000 (495) %23 M=S 1 -300 -050 (500) %24 1 -300 -050 (505) %25 1 -330 -050 (510) %26 L=S 1 000 000 ( ) %27 1 -100 070 (520) %28 1 060 000 (525) %29 1 000 000 ( ) %30 1 060 000 (535) %31 1 000 000 ( ) %32 M 1 000 000 ( ) %33 1 050 030 (550) %34 1 000 000 ( ) %35 1 050 030 (560) %36 1 000 000 ( ) %37 1 000 060 (570) %38 L 1 000 000 ( ) %39 1 050 030 (580) %40 1 050 050 ( ) %41 1 050 030 (590) %42 1 050 050 ( ) %43 1 050 060 (600) %44 0 000 000 ( ) %45 1 050 080 (610) %46 0 000 000 ( ) %47 1 050 050 (620) %48 0 000 000 ( ) %49 0 000 000 (630) %50 0 000 000 ( ) %51 1 050 030 (640) %52 0 000 000 (645) %53 0 000 000 (650) %54 0 000 000 (655) %55 0 000 000 (660) %56 0 000 000 (665) %57 0 000 000 (670) %58 0 000 000 (675) %59 0 000 000 (680) %60 0 000 000 (685) %61 0 000 000 (690) %62 0 000 000 (695) %63 1 100 -50 (700) %64 ] def %coorection for 510nm, 10 degree %actual: 1 -170 -170 (400) %4 %actual: 1 -050 -050 (510) %26 xcolorl 1 eq {/ix 4 4 mul 1 add def xytshift ix -200 put xytshift ix 1 add -220 put /ix 26 4 mul 1 add def xytshift ix -140 put xytshift ix 1 add 070 put } if 4 1 64 {/i exch def %i=4,1,64 /i40 i 4 mul def xytshift i40 get 1 eq {%xytshift=1 0 0 0 0 setcmykcolor XASi i get fakt mul YASi i get fakt mul 30 0 360 arc fill %400,425,...,700 0 0 0 1 setcmykcolor XASi i get fakt mul YASi i get fakt mul 30 0 360 arc stroke %400,425,...,700 } if %xytshift=1 } for %i=4,1,64 TBIL 4 1 64 {/i exch def %i=4,1,64 /i40 i 4 mul def /i41 i40 1 add def /i42 i40 2 add def /i43 i40 3 add def xytshift i40 get 1 eq {%xytshift=1 XASi i get fakt mul xytshift i41 get add YASi i get fakt mul xytshift i42 get add moveto xytshift i43 get show } if %xytshift=1 } for %i=4,1,64 newpath /xytshiftZ 320 array def %min 4x65 /xytshiftZ [ 0 100 -50 (700) %0 see normal 1 050 -100 (495c,E) %1 1 050 -120 (500c,E) %2 0 050 -100 (505c,E) %3 0 100 -60 (510c,E) %4 0 050 -100 (515c,E) %5 0 050 -100 (520c,E) %6 1 050 -100 (525c,E) %7 0 050 -100 (530c,E) %8 0 050 -100 (535c,E) %9 0 050 -100 (540c,E) %10 0 050 -100 (545c,E) %11 1 050 -100 (550c,E) %12 0 050 -100 (555c,E) %13 0 050 -100 (560c,E) %14 S 0 050 -100 (565c,E) %15 0 -100 -150 (400) %16 see normal ] def 0 1 16 {/i exch def %i=5,5,60 /i40 i 4 mul def xytshiftZ i40 get 1 eq {%xytshiftZ=1 0 0 0 0 setcmykcolor XAEZi i get fakt mul YAEZi i get fakt mul 30 0 360 arc fill %400,405,...,700 0 0 0 1 setcmykcolor XAEZi i get fakt mul YAEZi i get fakt mul 30 0 360 arc stroke %400,405,...,700 } if %xytshiftZ=1 } for %i=0,1,16 TBIL 0 1 16 {/i exch def %i=0,16 /i40 i 4 mul def /i41 i40 1 add def /i42 i40 2 add def /i43 i40 3 add def xytshiftZ i40 get 1 eq {%xytshiftZ=1 XAEZi i get fakt mul xytshiftZ i41 get add YAEZi i get fakt mul xytshiftZ i42 get add moveto xytshiftZ i43 get show } if %xytshiftZ=1 } for %i=0,16 newpath xtrans8 neg ytrans8 neg translate %for scala and grafic } bind def %END proz_chromaticity_lines %***************************************************************** %%EndProlog gsave %lanindL2.EPS STArT 20000505 /lanind 0 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 1 def /lanind2 1 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 0 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 1 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} if %colorm=0, deintp=0 colorm 0 eq deintp 1 eq and {/Txx (e) def} if %colorm=0, deintp=1 colorm 1 eq deintp 0 eq and {/Txx (dd) def} if %colorm=1, deintp=0 colorm 1 eq deintp 1 eq and {/Txx (de) def} if %colorm=1, deintp=1 xchart 0 eq {/Txx (-) def} if %always independent of intended output gsave %LANINDL2 END /cvishow {cvi 6 string cvs show ( ) show} def /cvsshow1 {10 mul cvi 0.1 mul 9 string cvs show ( ) show} def /cvsshow2 {100 mul cvi 0.01 mul 9 string cvs show ( ) show} def /cvsshow3 {1000 mul cvi 0.001 mul 9 string cvs show ( ) show} def /cvsshow4 {10000 mul cvi 0.0001 mul 9 string cvs show ( ) show} def /cvsshow5 {100000 mul cvi 0.00001 mul 9 string cvs show ( ) show} def /cvishow0 {cvi 6 string cvs show} def %*********************************************** /xcharts 0 def %0:0_100, 1:-50,50 (s=Y-scale), default=0 %xchart4 0,1:(x,y), 2,3:(CAB,Y), default=2 %xchart4 4,5:(A,B)&(A1,B1), 6,7:(A1,B1)&(A2,B2) /xchart4 2 def %2,3:(CAB,Y), default=2 /xchart5 2 def %0:Y_B, 1:R_C, 2:G_M, default=0 /xchart6 1 def %0:C_Y,0_100, 1:C-Y,3.6_90, 2:L*CIE, 3:L*CIEr, 4:L*TUBr /xchart7 0 def %0:Y, 1:L*CIE, 2:L*CIr, 3:L*TUr, 4:L*TAr, default=0 /xchart8 1 def %0:Pxx, 1:Dxx, default=1 /xchart9 3 def %0:C>288, 1:C=25:1, 2:C=16:1, 3:C=9:1, default=1 /xcolorl 0 def %0: CIE-02, 1: CIE-10, default=0 /xchartl 1 def %0:D65, 1:D50, 2:P40, 3:A00, default=1 /xchart* 0 def %0:L'=L*-50, 1:L* %********************************************* /TELi 8 array def xchart8 0 eq {%xchart8=0 Pxx /TELi [(P60) (P55) (P50) (P45) (P40) (P35) (P30) (P25)] def %7 illumin. } if %xchart8=0 xchart8 1 eq {%xchart8=1 Dxx /TELi [(D65) (D50) (P40) (A00) (E00) (C00) (P00) (Q00)] def %7 illumin. } if %xchart8=1 /SD65 82 array def %380 bis 775 mit deltalambda=05 /SD50 82 array def %380 bis 775 mit deltalambda=05 /SP40 82 array def %380 bis 775 mit deltalambda=05 /SA00 82 array def %380 bis 775 mit deltalambda=05 /SE00 82 array def %380 bis 775 mit deltalambda=05 /SC00 82 array def %380 bis 775 mit deltalambda=05 /SP00 82 array def %380 bis 775 mit deltalambda=05 /SQ00 82 array def %380 bis 775 mit deltalambda=05 /SDAK 82 array def %380 bis 775 mit deltalambda=05 /RA 82 array def %380 bis 770 nm /F2 240 array def %3 x 80 Daten fuer Bereich 380 bis 770nm %/F2N 240 array def %normiert auf Y=100 fuer D65 und 10nm /F10 240 array def %3 x 80 Daten fuer Bereich 380 bis 770nm %C %C LITERATURQUELLEN LICHTARTEN %C SA,SC,SD65, CIE-DOKUMENT NR.15 FARBMESSUNG, 1971 %C TABELLE 1.1.1, SEITE 81 %C SD55,SD75, CIE-DOKUMENT NR.15 FARBMESSUNG, 1971 %C TABELLE 1.1.4, SEITE 85 %C LINEAR INTERPOLIERT VON 5 ZU 5NM %C SG,SP,SXE, DIN 5033, BLATT 7 ,SEITE 8-9 %C AUSGABE 1966 /SD65 %80 data 5 nm [50.0 52.3 54.6 68.7 82.8 87.1 91.5 92.5 93.4 90.1 86.7 95.8 104.9 110.9 117.0 117.4 117.8 116.3 114.9 115.4 115.9 112.4 108.8 109.1 109.4 108.6 107.8 106.3 104.8 106.2 107.7 106.0 104.4 104.2 104.0 102.0 100.0 98.2 96.3 96.1 95.8 92.2 88.7 89.3 90.0 89.8 89.6 88.6 87.7 85.5 83.3 83.5 83.7 81.9 80.0 80.1 80.2 81.2 82.3 80.3 78.3 74.0 69.7 70.7 71.6 73.0 74.3 68.0 61.6 65.7 69.9 72.5 75.1 69.3 63.6 55.0 46.4 56.6 66.8 65.1] def /SD50 %80 data 5 nm CIE 15.3, Seite 30; aus JE540-1N.PS [24.5 27.2 29.9 39.6 49.3 52.9 56.5 58.3 60.0 58.9 57.8 66.3 74.8 81.0 87.2 88.9 90.6 91.0 91.4 93.2 95.1 93.5 92.0 93.8 95.7 96.2 96.6 96.8 97.1 99.6 102.1 101.4 100.8 101.5 102.3 101.2 100.0 98.9 97.7 98.3 98.9 96.2 93.5 95.6 97.7 98.5 99.3 99.2 99.0 97.4 95.7 97.3 98.9 97.3 95.7 96.9 98.2 100.6 103.0 101.1 99.1 93.3 87.4 89.5 91.6 92.2 92.9 84.9 76.9 81.7 86.5 89.5 92.6 85.4 78.2 68.0 57.7 70.3 82.9 0.0] def %0.0 not used /SA00 %80 data 5 nm CIE 15.3 Seite 30; aus JE540-1N.PS [9.80 10.90 12.09 13.35 14.71 16.15 17.68 19.29 20.99 22.79 24.67 26.64 28.70 30.85 33.09 35.41 37.81 40.30 42.87 45.52 48.24 51.04 53.91 56.85 59.86 62.93 66.06 69.25 72.50 75.79 79.13 82.52 85.95 89.41 92.91 96.44 100.00 103.58 107.18 110.80 114.44 118.08 121.73 125.39 129.04 132.70 136.35 139.99 143.62 147.24 150.84 154.42 157.98 161.52 165.03 168.51 171.96 175.38 178.77 182.12 185.43 188.70 191.93 195.12 198.26 201.36 204.41 207.41 210.36 213.27 216.12 218.92 221.67 224.36 227.00 229.59 232.12 234.59 237.01 239.37 0.0] def %0.0 not used % AUS BILDPLA.FOR aus vrbam/wrpos:KRPROG.FOR, 5987-6023 5.10.92 %C PROGRAMM ZUR BERECHNUNG DER RELATIVEN SPEKTRALEN STRAHLUNGSVERTEI- %C LUNG EINES HOHLRAUMSTRAHLERS ALS FUNKTION DER WELLENLAENGE LAMDA %C BEI GEGEBENER TEMPERATUR T %C VERWENDETE VARIABLE %C T TEMPERATUR %C C2 PLANCKSCHE KONSTANTE (=1.4388 CM K (1967)) %C LAMDA(I) WELLENLAENGE %C S(I) STRAHLUNGSVERTEILUNG DES HOHLRAUMSTRAHLERS %C %C LITERATUR OFFIZIELLE EMPFEHLUNGEN DER CIE,DEUTSCHE VERSION, %C CA. 1969, SEITE 21 UND TABELLE 1.1.1 %C %SDP4 82 array def %380 bis 775 mit deltalambda=05 % DO 50 I=1,54 % 50 S(I)=100. % 1*(560./FLOAT(LAMDA(I)))**5 % 2*(EXP(C2/(560.*10.**(-7)*T))-1.) % 3/(EXP(C2/(FLOAT(LAMDA(I))*10.**(-7)*T))-1.) %new CIE 15.3:2004, Eq. (3.1) page 2 %S(I) = [100{560/lambda}**5] [exp{(c2*10**7)/(TNC*560 )} - 1] % /[exp{(c2*10**7)/(TNC*lambda)} - 1] % exp = e {...} = 2.71 {...} %/TNC 2848 def %NLA /EE 2.718281 def %e=mac pocket calculator /C2 1.4350000 10 7 exp mul def /lamd 82 array def xchart8 1 eq {%xchart8=1 Dxx /TNC 4000 def %******************************************** 0 1 79 {%i=0,79 /i exch def /lambda 380 i 5 mul add def lamd i lambda put /E1 560 lambda div 5 exp def /E4 C2 TNC 560 mul div def /E5 C2 TNC lambda mul div def /E6 EE E4 exp def /E7 EE E5 exp def SP40 i E1 100 mul E6 1 sub E7 1 sub div mul put } for %i=0,79 } if %xchart8=1 Dxx %****************************************** xchart8 0 eq {%xchart8=0 Pxx %defined only for xchart8=0 Pxx /TNCj 8 array def /TNCj [6000 5500 5000 4500 4000 3500 3000 2500] def /SP60 82 array def %380 bis 775 mit deltalambda=05 /SP55 82 array def %380 bis 775 mit deltalambda=05 /SP50 82 array def %380 bis 775 mit deltalambda=05 /SP45 82 array def %380 bis 775 mit deltalambda=05 /SP40 82 array def %380 bis 775 mit deltalambda=05 /SP35 82 array def %380 bis 775 mit deltalambda=05 /SP30 82 array def %380 bis 775 mit deltalambda=05 /SP25 82 array def %380 bis 775 mit deltalambda=05 0 1 7 {/j exch def %j=0,7 0 1 79 {%i=0,79 /i exch def /lambda 380 i 5 mul add def lamd i lambda put /E1 560 lambda div 5 exp def /E4 C2 TNCj j get 560 mul div def /E5 C2 TNCj j get lambda mul div def /E6 EE E4 exp def /E7 EE E5 exp def j 0 eq {SP60 i} if j 1 eq {SP55 i} if j 2 eq {SP50 i} if j 3 eq {SP45 i} if j 4 eq {SP40 i} if j 5 eq {SP35 i} if j 6 eq {SP30 i} if j 7 eq {SP25 i} if E1 100 mul E6 1 sub E7 1 sub div mul put } for %i=0,79 } for %j=0,7 } if %xchart8=0 %************************************************* /SE00 %80 data 5 nm [100.0 100.0 100.0 100.0 100.0 100.0 100.0 100.0 100.0 100.0 100.0 100.0 100.0 100.0 100.0 100.0 100.0 100.0 100.0 100.0 100.0 100.0 100.0 100.0 100.0 100.0 100.0 100.0 100.0 100.0 100.0 100.0 100.0 100.0 100.0 100.0 100.0 100.0 100.0 100.0 100.0 100.0 100.0 100.0 100.0 100.0 100.0 100.0 100.0 100.0 100.0 100.0 100.0 100.0 100.0 100.0 100.0 100.0 100.0 100.0 100.0 100.0 100.0 100.0 100.0 100.0 100.0 100.0 100.0 100.0 100.0 100.0 100.0 100.0 100.0 100.0 100.0 100.0 100.0 100.0] def %0.0 not used /SC00 %80 data 5 nm [ 33.00 39.92 47.40 55.17 63.30 71.81 80.60 89.53 98.10 105.80 112.40 117.75 121.50 123.45 124.00 123.60 123.10 123.30 123.80 124.09 123.90 122.92 120.70 116.90 112.10 106.98 102.30 98.81 96.90 96.78 98.00 99.94 102.10 103.95 105.20 105.67 105.30 104.11 102.30 100.15 97.80 95.43 93.20 91.22 89.70 88.83 88.40 88.19 88.10 88.06 88.00 87.86 87.80 87.99 88.20 88.20 87.90 87.22 86.30 85.30 84.00 82.21 80.20 78.24 76.30 74.36 72.40 70.40 68.30 66.30 64.40 62.80 61.50 60.20 59.20 58.50 58.10 58.00 58.20 58.50 ] def %0.0 not used 0 1 79 {/i exch def %i=0,79 /lamda 380 i 5 mul add def SP00 i SE00 i get lamda 560 div mul put SQ00 i SE00 i get 1120 lamda sub 560 div mul put } for %i=0,79 %C LITERATURQUELLEN SPEKTRALWERTE %C F2 CIE-DOKUMENT NR.15 FARBMESSUNG, 1971 %C TABELLE 2.1, SEITE 93-102 /F2 %3x80 data [.001368 .002236 .004243 .007650 .01431 .02319 .04351 .07763 .1344 .2148 .2839 .3285 .3483 .3481 .3362 .3187 .2908 .2511 .1954 .1421 .09564 .05795 .03201 .01470 .0049 .0024 .0093 .0291 .06327 .1096 .1655 .2257 .2904 .3597 .4334 .5121 .5945 .6784 .7621 .8425 .9163 .9786 1.0263 1.0567 1.0622 1.0456 1.0026 .9384 .8544 .7514 .6424 .5419 .4479 .3608 .2835 .2187 .1649 .1212 .0874 .0636 .04677 .03290 .02270 .01584 .01136 .00811 .00579 .004109 .002899 .002049 .001440 .0009999 .0006901 .000476 .0003323 .0002348 .0001662 .0001174 .00008308 .00005871 .000039 .000064 .00012 .000217 .000396 .00064 .00121 .00218 .004 .0073 .0116 .01684 .023 .0298 .0380 .048 .06 .0739 .09098 .1126 .139 .1693 .208 .2586 .323 .4073 .503 .6082 .71 .7932 .862 .9149 .954 .9803 .995 1.0 .995 .9786 .952 .9154 .870 .8163 .757 .6949 .631 .5668 .503 .4412 .381 .321 .265 .217 .175 .1382 .107 .0816 .061 .04458 .032 .0232 .017 .01192 .00821 .005723 .004102 .002929 .002091 .001484 .001047 .00074 .00052 .0003611 .0002492 .0001719 .00012 .0000848 .00006 .0000424 .00003 .0000212 .00645 .01055 .02005 .03621 .06785 .1102 .2074 .3713 .6456 1.0391 1.3856 1.623 1.7471 1.7826 1.7721 1.7441 1.6692 1.5281 1.2876 1.0419 .8130 .6162 .4652 .3533 .2720 .2123 .1582 .1117 .07825 .05725 .04216 .02984 .0203 .0134 .00875 .00575 .0039 .00275 .0021 .0018 .00165 .0014 .0011 .0010 .0008 .0006 .00034 .00024 .00019 .0001 .00005 .00003 .00002 .00001 % 26*0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 %10 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 %20 0.0 0.0 0.0 0.0 0.0 0.0 %26 ] def /F10 %3x80 data [.00016 .0006624 .002362 .007242 .01911 .0434 .08474 .1406 .2045 .2647 .3147 .3577 .3837 .3867 .3707 .343 .3023 .2541 .1956 .1323 .08051 .04107 .01617 .005132 .003816 .01544 .03746 .07136 .1177 .173 .2365 .3042 .3768 .4516 .5298 .6161 .7052 .7938 .8787 .9512 1.0142 1.0743 1.1185 1.1343 1.124 1.0891 1.0305 .9507 .8563 .7549 .6475 .5351 .4316 .3437 .2683 .2043 .1526 .1122 .08126 .05793 .04085 .02862 .019941 .01384 .0100 .006605 .004552 .003145 .002175 .001506 .001045 .0007274 .0005083 .0003564 .000251 .0001777 .0001264 .00009015 .00006453 .00004634 .00001736 .00007156 .0002534 .0007685 .002004 .004509 .008756 .01446 .02139 .0295 .03868 .0496 .06208 .0747 .08946 .1063 .1282 .1528 .1852 .2199 .2536 .2977 .3391 .3954 .4608 .5314 .6067 .6857 .7618 .8233 .8752 .9238 .962 .9822 .9918 .9991 .9973 .9824 .9555 .9152 .8689 .8256 .7774 .7203 .6583 .5939 .528 .4618 .3981 .3395 .2835 .2282 .1798 .1402 .1076 .08119 .06028 .0441 .0318 .0226 .0159 .01113 .007749 .0053751 .0037177 .002565 .001768 .001222 .0008462 .0005864 .0004074 .000284 .0001987 .0001395 .00009843 .00006982 .00004974 .00003554 .00002549 .00001834 .0007048 .002928 .01048 .03234 .08601 .1971 .3894 .6568 .9725 1.2825 1.5535 1.7985 1.9673 2.0273 1.9948 1.9007 1.7454 1.5549 1.3176 1.0302 .7721 .5701 .4152 .3024 .2185 .1592 .112 .08225 .06071 .04305 .03045 .02058 .01368 .007918 .003988 .001091 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 %10 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 %20 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 %30 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 %40 0.0 0.0 0.0 0.0 %44 ] def /F_CIEi 240 array def %raw data F2 or F10 /XEi 82 array def %equal energy /YEi 82 array def /ZEi 82 array def /XAEi 82 array def %A=Anteil /YAEi 82 array def /ZAEi 82 array def /xcolorl xcolor def /xcolorl 0 def %0 1 0 {/xcolorl exch def %xcolorl=0,0 0 1 239 {/i exch def %i=0,239 F_CIEi i xcolorl 0 eq {F2}{F10} ifelse i get put } for %i=0,239 /YKSUM 0 def %For CIE Illuminant E 0 1 79 {/i exch def %i=0,1,79 /YKSUM YKSUM F_CIEi 80 i add get add def } for %i=0,1,79 0 1 79 {/i exch def %i=0,1,79 XEi i F_CIEi 00 i add get YKSUM div 100 mul put YEi i F_CIEi 80 i add get YKSUM div 100 mul put ZEi i F_CIEi 160 i add get YKSUM div 100 mul put /SUM XEi i get YEi i get add XEi i get add 0.0001 add def XAEi i XEi i get SUM div put YAEi i YEi i get SUM div put ZAEi i ZEi i get SUM div put } for %i=0,1,79 %********************************************************************* 20 setlinewidth /xdel 1005 def /ydel 395 def /x0 050 def /x1 -150 def /ynorW0 1.000 def /ynorZ0 0.1800 def /ynorN0 0.001 def 3 1 3 {/xchart9 exch def %xchart9=0,3 xchart9 0 eq {/ynorW1 1.000 def /ynorZ1 0.1800 def /ynorN1 0.001 def /ycon (>288:1) def /yconsh 0.000 def} if xchart9 1 eq {/ynorW1 0.900 def /ynorZ1 0.1800 def /ynorN1 0.036 def /ycon (=25:1) def /yconsh 0.060 def} if xchart9 2 eq {/ynorW1 0.720 def /ynorZ1 0.1800 def /ynorN1 0.045 def /ycon (=16:1) def /yconsh 0.045 def} if xchart9 3 eq {/ynorW1 0.540 def /ynorZ1 0.1800 def /ynorN1 0.060 def /ycon (=9:1) def /yconsh 0.060 def} if gsave 72 90 translate 0.010 MM dup scale /xbtex0 0 def %xbtex=0 for files Y1(0/1)-(1..8)A.EPS xbtex0 1 eq {%xbtex0=1 40 setlinewidth /ymax1 08550 def /xmax1 12250 def 1.0 setgray 0 0 moveto xmax1 0 rlineto 0 ymax1 rlineto xmax1 neg 0 rlineto closepath fill 0 setgray 0 0 moveto xmax1 0 rlineto 0 ymax1 rlineto xmax1 neg 0 rlineto closepath stroke TK 0 setgray 150 /Times-ISOL1 FS 050 -140 moveto (fef00-7R_R) show %xchart 1 add cvishow0 } if %xbtex0=1 /kchartl 1 def 2 1 2 {/xchartl exch def %xchartl=0,3 20 setlinewidth % xchartl 0 eq { 100 04480 translate} if % xchartl 1 eq { 6150 04480 translate} if % xchartl 2 eq { 100 00220 translate} if % xchartl 3 eq { 6150 00220 translate} if % xchartl 4 eq { 100 04480 translate} if % xchartl 5 eq { 6150 04480 translate} if % xchartl 6 eq { 100 00220 translate} if % xchartl 7 eq { 6150 00220 translate} if 0 setgray 150 /Times-ISOL1 FS 050 -140 moveto kchartl 0 eq {(fef00-) show}{(fef01-) show} ifelse xchartl 5 add cvishow0 (a) show %a gsave 5 /Times-ISOL1 FS /cvishow {cvi 6 string cvs show} def %75 85 moveto %lanind cvishow (-) show %colorm cvishow %deintp cvishow %xcolorl cvishow %xchart cvishow %pchart cvishow %colsep cvishow (-L) show pmetam cvishow %4 /Times-ISOL1 FS %72 86 moveto %(fef00-7R_R) show %xchart4=2 default %72 90 translate %0.010 MM dup scale /xwidth 6000 def /ywidth 4000 def 25 setlinewidth 0 0 0 0 setcmyk_olvcolor 0 0 moveto xwidth 0 rlineto 0 ywidth rlineto xwidth neg 0 rlineto closepath fill 0 0 moveto xwidth 0 rlineto 0 ywidth rlineto xwidth neg 0 rlineto closepath clip 0 setgray 0 0 moveto xwidth 0 rlineto 0 ywidth rlineto xwidth neg 0 rlineto closepath stroke %calculation of XW,YW,ZW for 8 illuminants Dxx or Pxx 0 1 79 {/i exch def %i=0,79 SDAK i xchart8 0 eq {%xchart8=0 Pxx xchartl 0 eq {SP60 i get put} if xchartl 1 eq {SP55 i get put} if xchartl 2 eq {SP50 i get put} if xchartl 3 eq {SP45 i get put} if xchartl 4 eq {SP40 i get put} if xchartl 5 eq {SP35 i get put} if xchartl 6 eq {SP30 i get put} if xchartl 7 eq {SP25 i get put} if }%xchart8=0 Pxx {%xchart8=1 Dxx xchartl 0 eq {SD65 i get put} if xchartl 1 eq {SD50 i get put} if xchartl 2 eq {SP40 i get put} if xchartl 3 eq {SA00 i get put} if xchartl 4 eq {SE00 i get put} if xchartl 5 eq {SC00 i get put} if xchartl 6 eq {SP00 i get put} if xchartl 7 eq {SQ00 i get put} if } ifelse %xchart8=1 Dxx } for %i=0,79 /XSi 82 array def %any radiation /YSi 82 array def /ZSi 82 array def /XASi 82 array def %A=Anteil /YASi 82 array def /ZASi 82 array def /YKSUM 0 def 0 1 79 {/i exch def %i=0,1,79 /YKSUM YKSUM SDAK i get F_CIEi 80 i add get mul add def } for %i=0,1,79 0 1 79 {/i exch def %i=0,1,79 XSi i SDAK i get F_CIEi 00 i add get mul YKSUM div 100 mul put YSi i SDAK i get F_CIEi 80 i add get mul YKSUM div 100 mul put ZSi i SDAK i get F_CIEi 160 i add get mul YKSUM div 100 mul put /SUM XSi i get YSi i get add ZSi i get add 0.0001 add def XASi i XSi i get SUM div put YASi i YSi i get SUM div put ZASi i ZSi i get SUM div put } for %i=0,1,79 %XW,YW,ZW for white /XW 0 def /YW 0 def /ZW 0 def 0 1 079 {/i exch def %i=0,79 /XW XW XSi i get add def /YW YW YSi i get add def /ZW ZW ZSi i get add def } for %i=0,79 /XW100 XW def /YW100 YW def /ZW100 ZW def /SUM XW100 YW100 add ZW100 add 0.0001 add def /XAW100 XW100 SUM div def /YAW100 YW100 SUM div def /ZAW100 ZW100 SUM div def /XN000 XW 0.0001 mul def %100->0.01 /YN000 YW 0.0001 mul def /ZN000 ZW 0.0001 mul def /SUM XN000 YN000 add ZN000 add 0.0001 add def /XAN000 XN000 SUM div def /YAN000 YN000 SUM div def /ZAN000 ZN000 SUM div def /XU018 XW 0.18 mul def %100->18.0 /YU018 YW 0.18 mul def /ZU018 ZW 0.18 mul def /SUM XU018 YU018 add ZU018 add 0.0001 add def /XAU018 XU018 SUM div def /YAU018 YU018 SUM div def /ZAU018 ZU018 SUM div def %available %XEi, YEi, ZEi, XAEi, YAEi, ZAEi, 0..79 for 380 to 775nm for illuminant E %XSi, YSi, ZSi, XASi, YASi, ZASi, 0..79 for 380 to 775nm for illuminant (P/D)xx %purple colours in proz_chromaticity lines /DOW 82 array def %special for (x,y) diagrams 0 1 79 {/i exch def %i=0,79 = 380_775 DOW i 380 i 5 mul add put } for %i=0,79 %************************************************************** %calculation of wavelength %from ANR1 /proc_ABC_KNP_FWERTiX {%BEG proc_ABC_KNP_FWERT %input XSi,YSi,ZSi, kNP %output FWERTiX/Y/Z (i=1,4) kNP 1 ge {/FWERT1X XSi kNP 1 sub get def /FWERT1Y YSi kNP 1 sub get def /FWERT1Z ZSi kNP 1 sub get def} {/FWERT1X XSi 0 get def %again 400nm for i=0 /FWERT1Y YSi 0 get def /FWERT1Z ZSi 0 get def} ifelse /FWERT2X XSi kNP get def /FWERT2Y YSi kNP get def /FWERT2Z ZSi kNP get def /FWERT3X XSi kNP 1 add get def /FWERT3Y YSi kNP 1 add get def /FWERT3Z ZSi kNP 1 add get def /FWERT4X XSi kNP 2 add get def /FWERT4Y YSi kNP 2 add get def /FWERT4Z ZSi kNP 2 add get def } bind def %END proc_ABC_KNP_FWERTiX %********************************************************* /proc_XIE_TN1 {%BEG proc_XIE_TN1 %input XIE, FWERTiX/Y/Z (i=1,4) %output TN1 /A1N XIE 1 XIE sub mul XIE 2 sub mul 6 div def /A2N XIE 1 add XIE 1 sub mul XIE 2 sub mul 0.5 mul def /A3N XIE 1 add XIE mul 2 XIE sub mul 0.5 mul def /A4N XIE 1 add XIE mul XIE 1 sub mul 6 div def /FNX A1N FWERT1X mul A2N FWERT2X mul add A3N FWERT3X mul add A4N FWERT4X mul add def /FNY A1N FWERT1Y mul A2N FWERT2Y mul add A3N FWERT3Y mul add A4N FWERT4Y mul add def /FNZ A1N FWERT1Z mul A2N FWERT2Z mul add A3N FWERT3Z mul add A4N FWERT4Z mul add def /TNX FNX FXU1 mul FNY FXU2 mul add FNZ FXU3 mul add def } bind def %END proc_XIE_TN1 %********************************************************* /xxi 8 array def % 0 1 2 3 4 5 6 7 % INPi IPNi TN0i TP0i TN1i TP1i DO47 DO47c /xxi [1700 2000 2300 2800 3300 3800 4300 4800] def /ymax 1500 def /xti 9 array def % 0 1 2 3 4 5 6 7 8 % Name range xti Yti Zti x y ld lp /xti [2700 2875 3300 3600 3920 4250 4600 4930 5160] def /ytax 3700 def % 0 1 2 3 4 5 6 7 8 9 /FX1i 10 array def %lamda1,lambda2,C,R,B,Y,G,M,W,N /FY1i 10 array def /FZ1i 10 array def /XIE1j 10 array def /XIE2j 10 array def /DOW1j 10 array def /DOW2j 10 array def /DOW1jc 10 array def /DOW2jc 10 array def /colXi 9 array def /colYi 9 array def /colZi 9 array def /colXAi 9 array def /colYAi 9 array def /colZAi 9 array def /colfarbi 9 array def /colnamei 9 array def /colxsh1i 9 array def /colysh1i 9 array def /colxsh3i 9 array def /colysh3i 9 array def /colxsh5i 9 array def /colysh5i 9 array def /colxsh7i 9 array def /colysh7i 9 array def % R Y G C B M W N Z % 0 1 2 3 4 5 6 7 8 /colfarbi [%colfarbi 1 0 0 1 1 0 0 1 0 0 1 1 0 0 1 1 0 1 1 1 1 0 0 0 0.5 0.5 0.5 ] def %colfarbi /colnamei [%colnamei (R) (Y) (G) (C) (B) (M) (W) (N) (U) ] def %colnamei %********************************************************************** /colxsh1i [%colxsh1i -100 -120 -400 -400 70 -100 -200 -200 -200 ] def %colxsh1i /colysh1i [%colysh1i -250 100 -050 -000 -060 -200 -050 -050 -050 ] def %colysh1i %*********************************************************** /colxsh3i [%colxsh3i -000 -100 -200 -300 -380 -150 -200 -200 -200 ] def %colxsh3i /colysh3i [%colysh3i -200 120 -200 150 -050 110 -050 -050 -050 ] def %colysh3i %************************************************************ /colxsh5i [%colxsh5i 100 070 -450 -450 070 100 -200 -200 -200 ] def %colxsh5i /colysh5i [%colysh5i -050 070 -050 -050 -150 -050 -050 -050 -050 ] def %colysh5i /colxsh7i [%colxsh7i 100 070 -450 -450 070 100 -200 -200 -200 ] def %colxsh7i /colysh7i [%colysh7i -050 070 -050 -050 -150 -050 -050 -050 -050 ] def %colysh7i 0 1 7 {/jq exch def %jq=0,1 jq 0 eq {/FF1 XW100 XSi 4 get sub def /FF2 YW100 YSi 4 get sub def /FF3 ZW100 ZSi 4 get sub def } if jq 1 eq {/FF1 XW100 XSi 64 get sub def /FF2 YW100 YSi 64 get sub def /FF3 ZW100 ZSi 64 get sub def } if jq 2 eq {%STOPA1 /FF1 colXi 0 get def %R(0) /FF2 colYi 0 get def /FF3 colZi 0 get def } if jq 3 eq {%STOPA2 /FF1 colXi 1 get def %Y(1) /FF2 colYi 1 get def /FF3 colZi 1 get def } if jq 4 eq {%STOPA3 /FF1 colXi 2 get def %G(2) /FF2 colYi 2 get def /FF3 colZi 2 get def } if jq 5 eq {%STOPA4 /FF1 colXi 3 get def %C(3) /FF2 colYi 3 get def /FF3 colZi 3 get def } if jq 6 eq {/FF1 colXi 4 get def %B(4) /FF2 colYi 4 get def /FF3 colZi 4 get def } if jq 7 eq {/FF1 colXi 5 get def %M(5) /FF2 colYi 5 get def /FF3 colZi 5 get def %STOPA7 } if /U1 XW100 def /U2 YW100 def /U3 ZW100 def /FXU1 FF2 U3 mul FF3 U2 mul sub def /FXU2 FF3 U1 mul FF1 U3 mul sub def /FXU3 FF1 U2 mul FF2 U1 mul sub def /INP -1 def /IPN -1 def %assumption jump from TN to TP from negativ to positiv 4 1 64 {/i exch def %i=4,64 /TN0 XSi i get FXU1 mul YSi i get FXU2 mul add ZSi i get FXU3 mul add def /TP0 XSi i 1 add get FXU1 mul YSi i 1 add get FXU2 mul add ZSi i 1 add get FXU3 mul add def TN0 0 le TP0 0 gt and {/INP i def exit} if } for %i=4,64 4 1 64 {/i exch def %i=4,64 /TN1 XSi i get FXU1 mul YSi i get FXU2 mul add ZSi i get FXU3 mul add neg def /TP1 XSi i 1 add get FXU1 mul YSi i 1 add get FXU2 mul add ZSi i 1 add get FXU3 mul add neg def TN1 0 le TP1 0 gt and {/IPN i def exit} if } for %i=4,64 /iout 0 def iout 1 eq {%iout=1 1800 3900 jq 200 mul sub moveto TV (jq,FFi: ) show jq cvishow0 (, ) show FF1 cvsshow2 (, ) show FF2 cvsshow2 (, ) show FF3 cvsshow2 } if %iout=1 jq 0 eq {%jq=0 TV /TN00 TN0 def /TP00 TP0 def /TN10 TN1 def /TP10 TP1 def /INP0 INP def /IPN0 IPN def /iout 0 def iout 1 eq {%iout=1 4000 ymax jq 200 mul sub moveto INP0 cvishow0 (, ) show 380 INP0 5 mul add cvishow (, ) show IPN0 cvishow0 (, ) show TN00 cvishow0 (, ) show TP00 cvishow0 (, ) show TN10 cvishow0 (, ) show TP10 cvishow0 } if %iout=1 } if %jq=0 jq 1 eq {%jq=1 /jqx jq 250 mul def /TN01 TN0 def /TP01 TP0 def /TN11 TN1 def /TP11 TP1 def /INP1 INP def /IPN1 IPN def /iout 0 def iout 1 eq {%iout=1 4000 ymax jq 200 mul sub moveto INP1 cvishow0 (, ) show 380 INP1 5 mul add cvishow (, ) show IPN1 cvishow0 (, ) show TN01 cvishow0 (, ) show TP01 cvishow0 (, ) show TN11 cvishow0 (, ) show TP11 cvishow0 } if %iout=1 } if %jq=1 %********************************************************* /kNP INP def kNP 0 ge {%kNP>=0 proc_ABC_KNP_FWERTiX %input XSi,KNP, output FWERTiXYZ (i=1,4) /XIE1 0 def %sTArt values TN=0 for XIE1, TP>0 for XIE2 /XIE2 1 def 0 1 9 {/mk exch def %mk=0,9 /XIE XIE1 XIE2 add 0.5 mul def proc_XIE_TN1 %input XIE, ouput TN1 TNX 0 le {/XIE1 XIE def /TN1 TNX def} {/XIE2 XIE def /TP1 TNX def} ifelse } for %mk=0,9 /XIE XIE1 XIE2 add 0.5 mul def /DOWXIE1 DOW INP get DOW INP 1 add get DOW INP get sub XIE mul add def XIE1j jq XIE put DOW1j jq DOWXIE1 put } if %kNP>=0 %********************************************************* /kNP IPN def kNP 0 ge {%kNP>=0 proc_ABC_KNP_FWERTiX %input XSi,KNP, output FWERTiXYZ (i=1,4) /XIE1 0 def %sTArt values TN=0 for XIE1, TP>0 for XIE2 /XIE2 1 def /FXU1 FXU1 neg def /FXU2 FXU2 neg def /FXU3 FXU3 neg def 0 1 9 {/mk exch def %mk=0,9 /XIE XIE1 XIE2 add 0.5 mul def proc_XIE_TN1 %input XIE, ouput TN1 TNX 0 le {/XIE1 XIE def /TN1 TNX def} {/XIE2 XIE def /TP1 TNX def} ifelse } for %mk=0,9 /XIE XIE1 XIE2 add 0.5 mul def /DOWXIE2 DOW IPN get DOW IPN 1 add get DOW IPN get sub XIE mul add def XIE2j jq XIE put DOW2j jq DOWXIE2 put } if %kNP>=0 %********************************************************* INP 0 ge {%INP>=0,-1 /DOWEL1 DOWXIE1 def /DOWEL1c () def DOW1j jq DOWEL1 put DOW1jc jq DOWEL1c put }%INP>=0 {%INP=-1 /DOWEL1 DOWXIE2 def /DOWEL1c (c) def DOW1j jq DOWEL1 put DOW1jc jq DOWEL1c put } ifelse %INP>=0,-1 IPN 0 ge {%IPN>=0,-1 /DOWEL2 DOWXIE2 def /DOWEL2c () def DOW2j jq DOWEL2 put DOW2jc jq DOWEL2c put }%IPN>=0 {%IPN=-1 /DOWEL2 DOWXIE1 def /DOWEL2c (c) def DOW2j jq DOWEL2 put DOW2jc jq DOWEL2c put } ifelse %IPN>=0,-1 %********************************************************* jq 0 eq {%jq=0 calculation of FXi, FYi, FZi (i=0 t0 3) %C from 380nm to border between C(3) and R(0) /j0 0 def /j1 INP0 def % R Y G C B M R W N % 0 1 2 3 4 5 6 7 8 /iout 0 def iout 1 eq {%iout=1 TV /jx1 j1 1 sub def /jx2 j1 2 add def jx1 1 jx2 {/jx exch def %jx=jx1,jx2 /jx0 jx jx1 sub def 3700 2300 jx0 200 mul sub moveto jx cvishow (, ) show 380 jx 5 mul add cvishow (, ) show XSi jx get cvsshow2 (, ) show YSi jx get cvsshow2 (, ) show ZSi jx get cvsshow2 (, ) show XIE1j jq get cvsshow2 } for %jx=jx1,jx2 } if %iout=1 j0 1 j1 {/j exch def %j=j0,j1 j j0 eq {%j=j0 /colxc 0 def /colYC 0 def /colZC 0 def } if %j=j0 /colxc colxc XSi j get add def /colYC colYC YSi j get add def /colZC colZC ZSi j get add def } for %j=j0,j1 %correction for C /XIED XIE1j jq get 0.5 sub def XIED 0 le {%XIED<0 and -0,50 and 00 and 0