Contents
REFLCOL Reflected Color Example
by Chuck DiMarzio Northeastern University June 2010
!! This file may be copied, used, or modified for educational and !! research purposes provided that this header information is not !! removed or altered, and provided that the book is cited in !! publications, as DiMarzio, Charles A., Optics for Engineers, !! CRC Press, Boca Raton, FL, 2011. !! http://www.crcpress.com !! Other distribution is prohibited without permission.
dlambda=0.002; lambdavis=0.380:dlambda:0.780; % Visible wavelengths for thermal sources peakr=0.7;lambdac=0.50;lambdaw=0.06; % Units are microns refl=peakr*exp(-((lambdavis-lambdac)/lambdaw).^2); % Object Refletion % spectrum [xt,yt,zt]=xyz(lambdavis*1000); % xyz values Xr=dot(xt,refl)*dlambda; % True spectrum coordinates Yr=dot(yt,refl)*dlambda; Zr=dot(zt,refl)*dlambda; xr=Xr/(Xr+Yr+Zr); yr=Yr/(Xr+Yr+Zr); cr=[xr,yr] sre3000=bbspec(3000,lambdavis)/bbody(3000,0.1,100); % Tungsten sre3500=bbspec(3500,lambdavis)/bbody(3500,0.1,100); % QH Tungsten sre5000=bbspec(5000,lambdavis)/bbody(5000,0.1,100); % Sun r3000=sre3000.*refl; r3500=sre3500.*refl; r5000=sre5000.*refl; X3000=dot(xt,r3000)*dlambda; Y3000=dot(yt,r3000)*dlambda; Z3000=dot(zt,r3000)*dlambda; x3000=X3000/(X3000+Y3000+Z3000); y3000=Y3000/(X3000+Y3000+Z3000); c3000=[x3000,y3000] X3500=dot(xt,r3500)*dlambda; Y3500=dot(yt,r3500)*dlambda; Z3500=dot(zt,r3500)*dlambda; x3500=X3500/(X3500+Y3500+Z3500); y3500=Y3500/(X3500+Y3500+Z3500); c3500=[x3500,y3500] X5000=dot(xt,r5000)*dlambda; Y5000=dot(yt,r5000)*dlambda; Z5000=dot(zt,r5000)*dlambda; x5000=X5000/(X5000+Y5000+Z5000); y5000=Y5000/(X5000+Y5000+Z5000); c5000=[x5000,y5000]
cr = 0.1832 0.3574 c3000 = 0.2221 0.4589 c3500 = 0.2085 0.4317 c5000 = 0.1872 0.3773
Laser sources
lambdal=[457.9,530.9,647.1]*1e-3; % Argon Krypton Krypton in microns [xl,yl,zl]=xyz(lambdal*1000); refll=peakr*exp(-((lambdal-lambdac)/lambdaw).^2); % Object Refletion % spectrum X=dot(xl,refll); Y=dot(yl,refll); Z=dot(zl,refll); xfromlaser=X/(X+Y+Z); yfromlaser=Y/(X+Y+Z); claser=[xfromlaser,yfromlaser] test=(25:155); fig1=figure;plot(lambdavis*1000,refl,'-.',... lambdavis*1000,sre3000,'--',... lambdavis*1000,sre3500,'--',... lambdavis*1000,sre5000,'--',... lambdavis*1000,r3000,'-',... lambdavis*1000,r3500,'-',... lambdavis*1000,r5000,'-',... lambdal*1000,refll,'o');grid on; xlabel('\lambda, Wavelength, nm'); ylabel('Arbitrary Units'); fig2=figure; denom=xt+yt+zt; plot(x3000,y3000,'d',... x3500,y3500,'+',... x5000,y5000,'*',... xr,yr,'s',... xfromlaser,yfromlaser,'o',... xt(test)./denom(test),yt(test)./denom(test),':');grid on; axis([0,1,0,1]);axis image; xlabel('x');ylabel('y'); legend('W','QHT','Sun','True','Laser','Location','East'); legend boxoff;
claser = 0.1521 0.3239


Break up fig1 into three separate figures
Sources
fig3=figure;plot(lambdavis*1000,sre3000,'-',... lambdavis*1000,sre3500,'--',... lambdavis*1000,sre5000,'-.',... [1,1]'*lambdal*1000,[0,0]'*refll,'o-');grid on; xlabel('\lambda, Wavelength, nm'); ylabel('Arbitrary Units'); legend('W','QHT','Sun','Laser','Location','NorthWest'); legend boxoff % Reflector fig4=figure;plot(lambdavis*1000,refl);grid on; xlabel('\lambda, Wavelength, nm'); ylabel('Arbitrary Units'); % Products fig5=figure;plot(lambdavis*1000,r3000,'-',... lambdavis*1000,r3500,'--',... lambdavis*1000,r5000,'-.',... [1,1]'*lambdal*1000,[0,1]'*refll,'o-',... lambdavis*1000,refl,':');grid on; xlabel('\lambda, Wavelength, nm'); ylabel('Arbitrary Units');


