How can I connect points with line segments?
3 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
Robert Enright
am 14 Aug. 2017
Kommentiert: Robert Enright
am 16 Aug. 2017
I have a list of x and y values. I want to connect all points within a set distance of one another.
In other words, I would like to draw polygons from the vertices. I want to set a threshold above which the points will not be connected.
Next, when I have drawn the polygons, I would like to measure the angles formed between line segments.
Is this possible? Thank you so much.
5 Kommentare
Akzeptierte Antwort
Guillaume
am 15 Aug. 2017
As John said, what's the problem? Get the pairwise distance between all points, find the index of the pairs below your threshold, then plot:
x = randi([0 100], 100, 1); %random demo data
y = randi([0 100], 100, 1);
plot(x, y, '.'); %plot all points
distancethreshold = 5;
pairwisedist = hypot(x - x', y - y'); %or use pdist
[p1, p2] = find(tril(pairwisedist <= distancethreshold & pairwisedist > 0))
hold on;
indexpairs = [p1, p2]';
plot(x(indexpairs), y(indexpairs), '-r')
6 Kommentare
Image Analyst
am 15 Aug. 2017
If you use just x and y, then yes, you will get the angles from the axes. However I meant that you'd use delta x and delta y. See Guillaume's code. With that, you get the angle between points, not the angle from the x axis.
Weitere Antworten (1)
John D'Errico
am 14 Aug. 2017
Bearbeitet: John D'Errico
am 14 Aug. 2017
An alpha shape or delaunay triangulation are both wrong, because you are asking to draw lines between ALL pairs of points that are less than the threshhold apart.
So just ue a tool like pdist (stats toolbox). Take all pairs of points with an inter-point distance less than your threshold, and draw the lines. WTP?
2 Kommentare
Siehe auch
Kategorien
Mehr zu Computational Geometry finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!