File talk:CIE illuminants D and blackbody small.gif

From Wikimedia Commons, the free media repository
Jump to navigation Jump to search

Source code[edit]

T=4000:500:25000;
S=CIE_daylight(T)';
[LAMBDAFCN, XFCN, YFCN, ZFCN]=colorMatchFcn('Judd_Vos');
LAMBDA=300:10:830;
[lambda,temp]=meshgrid(LAMBDA,T);
spdbb=lambda.^(-5)./(exp(1.4388e+7./(lambda.*temp))-1);
spdbb=spdbb.*repmat(100,size(spdbb))./ ...
    repmat(spdbb(:,find(LAMBDA==560)),[1 length(LAMBDA)]);
index=find(300:5:830==380);

mov=avifile('cie_illuminant_d.avi','compression','none','fps',3);
for i=1:size(S,1)
    plot(LAMBDA,S(i,:));
    axis([LAMBDA(1) LAMBDA(end) 0 250]);
    spd=interp(S(i,:),2);
    XYZ=spd(index:end-2)*[XFCN' YFCN' ZFCN'];
    norm_XYZ=XYZ./repmat(max(XYZ),[1 3]);
%     mean_XYZ=norm_XYZ*0.5./repmat(mean(norm_XYZ), [1 3]);
    color=applycform(norm_XYZ,makecform('xyz2srgb'));
    patch([LAMBDA(1) LAMBDA LAMBDA(end) 0],[0 S(i,:) 0 0],color);
    hold on; 
    plot(LAMBDA,spdbb(i,:),':','Color','r','LineWidth',2);
    plot(560,100,'o','Color','k','MarkerFaceColor','g');    
    hold off;
    text(700,220,[int2str(3500+500*i) 'K'],'FontSize',18);
    mov=addframe(mov,getframe(gcf));
end
mov=close(mov);