Skip to content
Snippets Groups Projects
Commit 14009748 authored by frey.balazs96's avatar frey.balazs96 :eggplant:
Browse files

Merge branch 'master' of https://git.sch.bme.hu/ftomi/antennahf

parents e6ab9bd2 71a7e27d
No related branches found
No related tags found
No related merge requests found
classdef Segment
properties
posStart double = 0;
posEnd double = 0;
powDens double = 0;
end
methods
function obj = Segment(posStart, posEnd, powDens)
if nargin == 0
obj.posStart = 0;
obj.posEnd = 0;
obj.powDens = 0;
elseif nargin == 1 %constructor from vector
obj.posStart = posStart(1);
obj.posEnd = posStart(2);
obj.powDens = 0;
elseif nargin == 2
obj.posStart = posStart;
obj.posEnd = posEnd;
obj.powDens = 0;
elseif nargin >= 3
obj.posStart = posStart;
obj.posEnd = posEnd;
obj.powDens = powDens;
end
if obj.posStart > obj.posEnd
tmp = obj.posStart;
obj.posStart = obj.posEnd;
obj.posEnd = tmp;
end
end
end
methods (Static)
function segments = split(seg1, seg2)
% seg1 before seg2 (if not, then swap)
if seg1.posStart > seg1.posStart
s = seg1;
seg1 = seg2;
seg2 = s;
end
segments = [];
if seg1.posEnd < seg2.posStart % no overlap
% |---|
% |---|
segments = [seg1, seg2];
elseif seg1.posEnd < seg2.posEnd
% |---|
% |---|
segments = [Segment(seg1.posStart, seg2.posStart, seg1.powDens), ...
Segment(seg2.posStart, seg1.posEnd, seg1.powDens + seg2.powDens), ...
Segment(seg1.posEnd, seg2.posEnd, seg2.powDens)];
else
% |-------|
% |---|
segments = [Segment(seg1.posStart, seg2.posStart, seg1.powDens), ...
Segment(seg2.posStart, seg2.posEnd, seg1.powDens + seg2.powDens), ...
Segment(seg2.posEnd, seg2.posEnd, seg2.powDens)];
end
% Segments that has 0 width are not needed.
% e.g.: |----|
% |--|
n = 1;
for k = 1:size(segments,2)
if segments(k).posStart < segments(k).posEnd
segments(n) = segments(k);
n = n + 1;
end
end
segments = segments(1:n-1);
end
end
end
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment