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');