From beb56eccf2e7be72e69719e201291b1687df29bc Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Frey=20Bal=C3=A1zs?= <frey.balazs96@gmail.com>
Date: Sun, 7 Jun 2020 20:02:37 +0200
Subject: [PATCH] =?UTF-8?q?FarField=20sz=C3=A1m=C3=ADt=C3=A1s?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 RTX class/FarField.m      | 27 +++++++++++++++++++++++++++
 RTX class/simclass_test.m |  9 ++++++++-
 2 files changed, 35 insertions(+), 1 deletion(-)
 create mode 100644 RTX class/FarField.m

diff --git a/RTX class/FarField.m b/RTX class/FarField.m
new file mode 100644
index 0000000..a1ce28d
--- /dev/null
+++ b/RTX class/FarField.m	
@@ -0,0 +1,27 @@
+classdef FarField
+    
+    properties
+
+    end
+    
+    methods (Static)
+        function field = CalculateFarField(ntheta, nfi, apertureSize, wavelength, histogram)
+            field = zeros(1, ntheta);
+            theta = linspace(-pi/6, pi/6, ntheta);
+            fi = linspace(0, 2*pi, nfi);
+            nr = floor(length(histogram)/2);
+            r = linspace(0, apertureSize/2, nr);
+            for i = 1:ntheta
+                er = [cos(theta(i)) sin(theta(i)) 0];
+                for j = 1:nr
+                    for k = 1:nfi
+                        rv = [0 r(j)*sin(fi(k)) r(j)*cos(fi(k))];
+                        area = (apertureSize/(2*nr)) * r(j)*2*pi/nfi;
+                        field(i) = field(i) + histogram(2*nr-j+1)*exp(1i*2*pi*rv*er'/wavelength)*area;
+                    end
+                end
+            end
+        end
+    end
+end
+
diff --git a/RTX class/simclass_test.m b/RTX class/simclass_test.m
index cfc17e5..4daa74a 100644
--- a/RTX class/simclass_test.m	
+++ b/RTX class/simclass_test.m	
@@ -4,7 +4,7 @@ reflectors(end+1) = ParabolaReflector([0 0], 4, 3);
 reflectors(end+1) = BalazsAperture([3 0], 20, 1000);
 
 start = Vect(1, 0);
-n_ray = 100000;
+n_ray = 10000;
 phi_start = -pi;%angle(1-1i);
 phi_stop = pi;%angle(1+1i);
 phi = linspace(phi_start, phi_stop, n_ray);
@@ -31,3 +31,10 @@ ylim([-4 4]);
 histogram = reflectors(end).getCollisionHistogram();
 figure(2);
 plot(histogram);
+
+%field = FarField.CalculateFarField(1000, 500, 20, 0.01, histogram);
+%field = abs(field);
+%field = field/max(field);
+
+%plot(20*log10(field));
+
-- 
GitLab