function img=make_beam_trace(beam, stop_point, border_limits, img) % img so far beam traced part [Ny,Nx]=size(img); %% border_limits has coordinates of left bottom and right top coners xlb=border_limits(1); ylb=border_limits(2); xrt=border_limits(3); yrt=border_limits(4); %% beam start stop coordinates with respect to lower left border point xb1=beam.origin(1)-xlb; yb1=beam.origin(2)-ylb; xb2=stop_point(1)-xlb; yb2=stop_point(2)-ylb; %% beam path coordinates Nc=1000; % number of coordinate points xb=linspace(xb1,xb2, Nc); yb=linspace(yb1,yb2, Nc); %% beam coordinate to image pixel coordinate px=round(xb/(xrt-xlb)*(Nx-1) + 1); py=round(yb/(yrt-ylb)*(Ny-1) + 1); %% truncate to borders py=py( (1<=px) & (px<=Nx) ); px=px( (1<=px) & (px<=Nx) ); px=px( (1<=py) & (py<=Ny) ); py=py( (1<=py) & (py<=Ny) ); for i=1:length(px) img(py(i),px(i))=beam.intensity; end end