Algo for finding nearest coordinates of arbitrary point along complex 3D line?

조회 수: 8 (최근 30일)
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.

답변 (2개)

Kevin Claytor
Kevin Claytor 2016년 2월 16일
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..

Kelly Kearney
Kelly Kearney 2016년 2월 16일
I recommend distance2curve.m.

카테고리

Help CenterFile Exchange에서 Computational Geometry에 대해 자세히 알아보기

태그

Community Treasure Hunt

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

Start Hunting!

Translated by