3D vectors intersection using least-squares approach

假装没事ソ 提交于 2019-12-13 18:08:41

问题


I have been trying to get the intersection point of some 3D lines. The lines are represented in the form

Line: s + t*r. The lines doesn't really intersect, so I would like to get the point in 3D that the distance from that point to all lines is minimum

I found solutions for finding the intersection between two lines, but in my case, it is a set of lines, like 5 or more.

I found a solution that represents the distance between the point a to line l: p+t*r (p is the start point, and r is the direction vector, t is a scalar value) as

d(a,l) = (|| r x (p-a) ||)/|| r || =

|| ([r]x/||r||)a - ([r]x/||r||) p ||

which the solution said that the second equation is a least-square minimization problem of the form

|| Ax-b ||

and the solution is x = (At A)^-1 * At*b , At is A transpose, but I can't format it here.

How can I write the matrix A and vector b if i have several lines?


回答1:


I used the MATLAB function for least-squares n-line intersection here and coded it in C++ for my uses: http://www.mathworks.com/matlabcentral/fileexchange/37192-intersection-point-of-lines-in-3d-space/content/lineIntersect3D.m

I followed the theory for n-line intersection here: http://en.wikipedia.org/wiki/Line-line_intersection

Works great!



来源:https://stackoverflow.com/questions/14607457/3d-vectors-intersection-using-least-squares-approach

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!