summaryrefslogtreecommitdiff
path: root/beam_tracing/make_beam_trace.m
diff options
context:
space:
mode:
Diffstat (limited to 'beam_tracing/make_beam_trace.m')
-rw-r--r--beam_tracing/make_beam_trace.m37
1 files changed, 37 insertions, 0 deletions
diff --git a/beam_tracing/make_beam_trace.m b/beam_tracing/make_beam_trace.m
new file mode 100644
index 0000000..f62168f
--- /dev/null
+++ b/beam_tracing/make_beam_trace.m
@@ -0,0 +1,37 @@
+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
+
+