Code:
function [ ] = rektangelplot( amount )
%REKTANGELPLOT Summary of this function goes here
% Detailed explanation goes here
%Square generation
x1 = amount*rand(amount, 1);
x2 = amount*rand(amount, 1) + x1;
y1 = amount*rand(amount, 1);
y2 = amount*rand(amount, 1) + y1;
collection = [x1, x2, y1, y2];
%Overlap check
truth_table = zeros(amount, amount);
overlap = 0;
c = 1;
for a = 1:amount
x1c = (collection(a, 2) + collection(a, 1))/2;
x1r = x1c - collection(a, 1);
y1c = (collection(a, 4) + collection(a, 3))/2;
y1r = y1c - collection(a, 3);
for b = 1:amount
if a ~= b
x2c = (collection(b, 2) + collection(b, 1))/2;
x2r = x2c - collection(b, 1);
y2c = (collection(b, 4) + collection(b, 3))/2;
y2r = y2c - collection(b, 3);
if(abs(x1c -x2c) < (x1r + x2r) && abs(y1c - y2c) < (y1r + y2r))
truth_table(a,b) = 1;
truth_table(b,a) = 1;
overlap_x1 = max(collection(a, 1), collection(b, 1));
overlap_y1 = max(collection(a, 3), collection(b, 3));
overlap_x2 = min(collection(a, 2), collection(b, 2));
overlap_y2 = min(collection(a, 4), collection(b, 4));
overlap(c, 1) = overlap_x1;
overlap(c, 2) = overlap_x2;
overlap(c, 3) = overlap_y1;
overlap(c, 4) = overlap_y2;
c = c+1;
end
end
end
end
%Draw squares and overlapses
figure
axis([0 3*amount 0 3*amount]);
hold on
for a = 1:amount
drawX = collection(a, 1):0.01:collection(a, 2);
drawY = collection(a, 3):0.01:collection(a, 4);
minY = drawX;
minY(:) = collection(a, 3);
maxY = drawX;
maxY(:) = collection(a, 4);
plot(drawX, minY);
plot(drawX, maxY);
minX = drawY;
maxX = drawY;
minX(:) = collection(a, 1);
maxX(:) = collection(a, 2);
plot(minX, drawY);
plot(maxX, drawY);
end
if overlap ~= 0;
a = length(overlap(:,1));
for b = 1:a;
fill([overlap(b,1) overlap(b,2) overlap(b,2) overlap(b,1)], [overlap(b,3) overlap(b,3) overlap(b,4) overlap(b,4)],'red');
end
end
for a = 1:amount;
if sum(truth_table(a,:)) == 0;
fill([collection(a,1) collection(a,2) collection(a, 2) collection(a,1)] ,[collection(a,3) collection(a,3) collection(a,4) collection(a,4)],'green');
end
end
hold off
Help much appreciated