Algo for finding nearest coordinates of arbitrary point along complex 3D line?
4 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
I am looking for an algorithm that will take inputs of xyz coordinates of a series of points, and xyz coordinates of an associated line plot and will output the closest point along the line plot to each of the points.
The most basic example I can give is the following:
lineX = [0:10];
lineY = lineX;
lineZ = lineY;
point1 = [5 5 5];
point2 = [5 5 10];
point2 = [2 2 2];
I would hope the algo would give me the nearest coordinates along the line segment of each point (point1_nearest = 5 5 5, point2_nearest = 5 5 5, point3_nearest = 2 2 2] Any help would be most appreciated!
The problem is in practice the line coordinates will be more complicated ([0 0 0; 0.4 10 6; 0.5 15 7]) and it gets tedious to iterate through each coordinate and find the minimum distance.
0 commentaires
Réponses (2)
Kevin Claytor
le 16 Fév 2016
Find the minimum squared distance between the point and the line:
pointX = point(1);
pointY = point(2);
pointZ = point(3);
[~, index] = find(min( (lineX - pointX).^2 + (lineY - pointY).^2 + (lineZ - pointZ).^2 ));
lineX(index), etc. gives you the closest line value for x, etc..
0 commentaires
Voir également
Catégories
En savoir plus sur Computational Geometry dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!