File talk:Planckian-locus-in-mireds.png

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

Source code[edit]

N=1000; % size of the image
a=0.1; b=0.45; c=0.25; d=0.4;           % area of interest
x=linspace(a,b,N*min(1,(b-a)/(d-c)));   % right number of pixels
y=linspace(c,d,N*min(1,(d-c)/(b-a)));   % right number of pixels
[u,v,Y]=meshgrid(x,y,50);
xyz=applycform(cat(3,u,v,Y),makecform('uvl2xyz'));
M=max(xyz,[],3);
srgb=applycform(xyz./cat(3,M,M,M),makecform('xyz2srgb'));
image(x,y,srgb);
axis image;
set(gca,'YDir','normal');   % right way up
hold;

[LAMBDA, XFCN, YFCN, ZFCN]=colorMatchFcn('Judd_Vos'); % use '1931_full' for the standard
sl=applycform(cat(3,XFCN,YFCN,ZFCN),makecform('xyz2uvl'));
sl_loopx=[sl(:,:,1) sl(:,1,1)]; % make a closed polygon
sl_loopy=[sl(:,:,2) sl(:,1,2)]; % make a closed polygon
set(patch([b a a b sl_loopx b],[d d c c sl_loopy c],[0.5 0.5 0.5]),'EdgeColor','none');
plot(sl_loopx,sl_loopy,'k-');   % k- means solid (-) black (k) line
axis([a b c d]); xlabel('u'); ylabel('v'); shg; grid;

TEMP=[1e3:10:1.01e4 2.5e4 5e4 1e5 5e5 1e6];
[lambda,T]=meshgrid(LAMBDA,TEMP);
spd=lambda.^(-5)./(exp(1.4387752e+7./(lambda.*T))-1);
XYZbb=spd*[XFCN' YFCN' ZFCN'];
uvbb=applycform(XYZbb./(XYZbb(:,2)*[1 1 1]),makecform('xyz2uvl'));
plot(uvbb(:,1),uvbb(:,2),'Color',[0.5 0.5 0.5],'LineWidth',1.5);

% i=1:10:100;  % regular temperature scale
i=round(1000./(1:10)-99); % mirek scale: 100, 200, ... , 1000
xi=uvbb(i,1);
yi=uvbb(i,2);
slope=diff(uvbb(:,[1 2]));
a=-slope(i,1)./slope(i,2);
l=0.01./sqrt(1+a.^2);
line([xi-l xi+l]',[yi-a.*l yi+a.*l]','Color','k');