From c92ce86e83f978be8f089a301d7d039e7d0d98bf Mon Sep 17 00:00:00 2001
From: lmaresz <lmaresz@sch.bme.hu>
Date: Sun, 7 Jun 2020 22:48:07 +0200
Subject: [PATCH] Modified Antenna, ray generation

---
 RTX class/Antenna.m       | 46 ++++++++++++++++++++++++++-------------
 RTX class/simclass_test.m | 23 +++++++++-----------
 2 files changed, 41 insertions(+), 28 deletions(-)

diff --git a/RTX class/Antenna.m b/RTX class/Antenna.m
index 94ab99a..94f8017 100644
--- a/RTX class/Antenna.m	
+++ b/RTX class/Antenna.m	
@@ -1,16 +1,38 @@
 classdef Antenna
     properties
         amplitude = ones(1, 1000);
-        phase = ones(1, 1000);
+        phase = zeros(1, 1000);
+        position Vect;
     end
     
     methods
-        function obj = Antenna(amplitude ,phase)
-            obj.amplitude = amplitude;
-            obj.phase = phase;         
-        end        
+        function obj = Antenna(position, amplitude ,phase)
+            obj.position = position;
+            if nargin > 1
+                obj.amplitude = amplitude;
+                obj.phase = phase;   
+            end
+        end   
+        
+        function [rays, complex_amplitudes] = generate_rays(obj, phi)
+            rays(size(phi, 2)) = Ray;
+            for k = 1:size(phi, 2)
+                rays(k) = Ray(obj.position, [cos(phi(k)), sin(phi(k))]);
+            end
+            complex_amplitudes = obj.get_complex_amplitudes(phi);
+        end
         
-        function complex_amplitude = get_ray_data(obj, phi)
+        function plot_characteristics(obj)
+            phi = linspace(0,2*pi,1000);
+            polarplot(phi, obj.amplitude, phi, obj.phase);            
+        end
+        
+        function plot_antenna(obj)
+            plot(obj.position.x, obj.position.y, 'kO', 'MarkerSize', 10);
+        end
+    end
+    methods(Access = protected)
+        function complex_amplitudes = get_complex_amplitudes(obj, phi)
             n = size(phi, 2);
             rpower = zeros(1, n-1);
             rphase = zeros(1, n-1);
@@ -25,8 +47,8 @@ classdef Antenna
             
             dphi = 2 * pi / size(obj.amplitude, 2);
             for j = 1:n-1
-                [m, start_index] = min(abs(data_phi - phi(j)));
-                [m, stop_index] = min(abs(data_phi - phi(j+1)));
+                [~, start_index] = min(abs(data_phi - phi(j)));
+                [~, stop_index] = min(abs(data_phi - phi(j+1)));
                 for k = start_index:stop_index
                     if j ~= 1 && k == start_index
                        continue;
@@ -35,13 +57,7 @@ classdef Antenna
                 end
                 rphase(j) = obj.phase(ceil((start_index + stop_index) / 2));
             end
-            complex_amplitude = rpower.*exp(1i*rphase);
+            complex_amplitudes = rpower.*exp(1i*rphase);
         end
-        
-        function plot(obj)
-            phi = linspace(0,2*pi,1000);
-            polarplot(phi, obj.amplitude, phi, obj.phase);            
-        end          
     end
 end
-
diff --git a/RTX class/simclass_test.m b/RTX class/simclass_test.m
index c9ba075..fc71a75 100644
--- a/RTX class/simclass_test.m	
+++ b/RTX class/simclass_test.m	
@@ -3,24 +3,22 @@ reflectors(end+1) = PlaneReflector([2 0], 2);
 reflectors(end+1) = ParabolaReflector([0 0], 4, 3);
 reflectors(end+1) = BalazsAperture([3 0], 20, 1000);
 
-start = Vect(1, 0);
-n_ray = 10000;
-phi_start = -pi;%angle(1-1i);
-phi_stop = pi;%angle(1+1i);
-phi = linspace(phi_start, phi_stop, n_ray);
-rays(n_ray) = Ray;
-for k = 1:size(phi, 2)
-    rays(k) = Ray(start, [cos(phi(k)), sin(phi(k))]);
-end
+phi_start = -pi;
+phi_stop = pi;
+n = 1000;
+wavelength = 3e8/1e9;
+
+antenna = Antenna(Vect(1,0));
+[rays, complex_amplitudes] = antenna.generate_rays(linspace(phi_start, phi_stop, n));
 
 figure(1);
 plot(0, 0);
 hold on;
-for k = 1:n_ray
+for k = 1:size(rays, 2)
     t = Trace(k, rays(k), 0, wavelength, reflectors, 5);
-    t.plot_trace();
+    %t.plot_trace();
 end
-plot(start.x, start.y, 'kO', 'MarkerSize', 10);
+antenna.plot_antenna();
 for k = 1:size(reflectors, 2)
     reflectors(k).plot_self;
 end
@@ -37,4 +35,3 @@ plot(histogram);
 %field = field/max(field);
 
 %plot(20*log10(field));
-
-- 
GitLab