Line pathway using intersection points

4 vues (au cours des 30 derniers jours)
Tchilabalo
Tchilabalo le 29 Août 2019
Commenté : darova le 8 Sep 2019
clear all
Window=10
square=[0 0; 0 Window; Window 0; Window Window];% Box coordinates
N=5;
% Coordinates of segments endpoints
X1=rand(N,1)*(10+0.1)+0.1;
X2=rand(N,1)*(10+0.1)+0.1;
Y1=rand(N,1)*(10+0.1)+0.1;
Y2=rand(N,1)*(10+0.1)+0.1;
A = [X1(:), X2(:)]; B =[Y1(:), Y2(:)];
% Find the intersection between segments
% Here i use the intersection function by Douglas M. Schwarz
ABx=[X1(:), X2(:)];
reshape(ABx,1,[]);
transpose(ABx);
ABx.';
ABx(:);
ABx=reshape(ABx.',1,[]);
ABy=[Y1(:), Y2(:)];
reshape(ABy,1,[]);
transpose(ABy);
ABy.';
ABy(:);
ABy=reshape(ABy.',1,[]);
pos = 3:3:((((length(ABy))/2)-1)*3);
[r,c] = size(ABy);
add = numel(pos);
Xnew = NaN(r,c+add);
Ynew = NaN(r,c+add);
idx = setdiff(1:c+add,pos);
Xnew(1,idx) = ABx;
Ynew(1,idx) = ABy;
Inter=intersections(Xnew,Ynew);% This gives the intersection points
figure, plot(A.',B.','LineWidth', 0.75)
grid on
axis square
axis([0 Window 0 Window])
I have segments as shown above. For each segment, i have the coordinates of endpoints. Now, I want to determine the pathways that connect both sides of the box, and remove the unconnected segments. So far, i have been able to find the intersections betweeen segments, and will appreciate any help finding the pathways.
  3 commentaires
Tchilabalo
Tchilabalo le 30 Août 2019
By sorting the intersections in increasing order of x and y.
darova
darova le 30 Août 2019
SO what is the question? You have all points. Why don't just use plot()?

Connectez-vous pour commenter.

Réponse acceptée

darova
darova le 30 Août 2019
Simple example
n = 5;
x1 = rand(n,2);
y1 = rand(n,2);
x2 = rand(n,2);
y2 = rand(n,2);
k = 0;
% loop through all segment to find all intersections
for i = 1:n
for j = 1:n
[xc,yc] = polyxpoly(x1(i,:),y1(i,:),x2(j,:),y2(j,:));
if ~isempty(xc)
k = k+1;
x(k) = xc;
y(k) = yc;
end
end
end
[~, ix] = sort(x);
plot(x(ix),y(ix),'o-k','linewidth',2)
hold on
plot(x1',y1','r',x2',y2','b')
hold off
  2 commentaires
Tchilabalo
Tchilabalo le 30 Août 2019
Thanks Darova for your answer.
darova
darova le 8 Sep 2019
Accept the answer if it helped

Connectez-vous pour commenter.

Plus de réponses (0)

Catégories

En savoir plus sur Logical dans Help Center et File Exchange

Tags

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by