1

我一直在尝试获取一些 3D 线的交点。线条以表格形式表示

线:s + t*r。这些线并没有真正相交,所以我想在 3D 中得到从该点到所有线的距离最小的点

我找到了找到两条线之间交点的解决方案,但就我而言,它是一组线,比如 5 条或更多。

我找到了一个解决方案,表示点 a 到线 l 之间的距离:p+t*r(p 是起点,r 是方向向量,t 是标量值)为

d(a,l) = (|| rx (pa) ||)/|| r || =

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

该解决方案表示第二个方程是形式的最小二乘最小化问题

|| 斧头||

解决方案是 x = (At A)^-1 * At*b , At 是 A 转置,但我不能在这里格式化。

如果我有几行,我该如何写矩阵 A 和向量 b?

4

1 回答 1

0

我在这里将 MATLAB 函数用于最小二乘 n 线交点,并用 C++ 对其进行编码以供我使用: http: //www.mathworks.com/matlabcentral/fileexchange/37192-intersection-point-of-lines-in-3d -space/content/lineIntersect3D.m

我在这里遵循了 n 线交点的理论: http ://en.wikipedia.org/wiki/Line-line_intersection

效果很好!

于 2013-07-17T13:48:12.180 回答