You can input either a 2D or a 3D line and 2D or 3D points. This function is an extended version of the line below, with some input checking:
Licence: CC by-nc-sa 4.0
Rik (2020). point to line distance (https://github.com/thrynae/point_to_line_distance/releases/tag/1.3.2), GitHub. Retrieved .
Thank you very much for your effort in the file.
Could you please improve the code a little more to add two optional outputs: (1) the coordinates of the projection points for all points on the line and (2) a flag if the projection point is inside or outside of the line segment for each point?
@Nicola, thanks for pointing out this issue. I now uploaded a version where this should be fixed. The function now properly accepts 2D inputs.
The input point "pt" shouldn't be checked against the case in which it's of size 2?
@Kaleesh, I'll try to help you your question thread https://www.mathworks.com/matlabcentral/answers/425347
lemme put this way
curvexy1 = [ 0 20 ];
curvexy2 =[20 50];
curvexy = (curvexy1 & curvexy2 );
[x,y] = ginput(1);
h1 = text(x,y,'o', ...
'Color', [1 0 0], ...
%% let curvexy1 ,curvexy2 be v1,v2 and ginput(1) be pt - I tried using your code to identify the perpendicular distance but ??
You can find the solution here: https://gamedev.stackexchange.com/questions/72528/how-can-i-project-a-3d-point-onto-a-3d-line
A non-vectorized solution in the terms of the input to this function:
ap = pt-v1;ab = v2-v1;
result = v1 + dot(ap,ab)/dot(ab,ab) * ab;
Hi! Thanks, works great. I was wondering: how do I find the POINT of intersection between the original line and the projection of the point to this line? Thank you!
See release notes for this release on GitHub: https://github.com/thrynae/point_to_line_distance/releases/tag/1.3.2
added tester and example file, and added logo
fixed issue with 2D input
added compatibility for R13 (MATLAB 6.5)
uploaded incorrect version, so now a bug in the orientation is fixed