线交叉点 – 有区别(excel VBA)

我一直在研究一个问题,通过我所有的研究,我都找不到现有的解决scheme。 我没有所需的math知识来产生一个优雅的解决scheme。

有几个工作(和非常优雅的)与完整的线条或线段的线条相交的例子(见链接):

https://dl.dropboxusercontent.com/u/99937114/Forums/Eileens%20Lounge%20-%20LinearIntersect_Corrected.xls

(Dropbox共享文件夹中的其他示例)

我有问题是使用附加的图像说明。 有一个定义的线,从L1(x,y)开始,在L2(x,y)结束。 没有第二条线 – 而是有另一个点(有效地L3)的坐标和一个轴或angular度的旅行。 如果点L3沿着轴线/行进angular度延续,我需要计算相交的距离和坐标。

插图

在提供原点,方位和距离的情况下获得位置的坐标也是有用的,例如x,y,在x,y方向上的距离为10米时,在195度的方位上到达? 除了距离被定义为vs计算交点的距离和x,y之外,这实际上是相同的函数

从投影几何的背景来看,计算齐次坐标的交叉积是我最喜欢的连接点或相交(无限)线的最佳方式。 在你的情况下,我会先重命名点。 假设第一条线由AB定义,第二条线通过C并具有您所指示的angular度z 。 然后我会计算

 ⎡Dx⎤ ⎛⎡Ax⎤ ⎡Bx⎤⎞ ⎛⎡Cx⎤ ⎡sin z⎤⎞ ⎡(Ay Bx - Ax By) sin z - (Cx cos z - Cy sin z) (Ax - Bx)⎤ ⎢Dy⎥ = ⎜⎢Ay⎥ × ⎢By⎥⎟ × ⎜⎢Cy⎥ × ⎢cos z⎥⎟ = ⎢(Ay Bx - Ax By) cos z - (Cx cos z - Cy sin z) (Ay - By)⎥ ⎣Dz⎦ ⎝⎣1 ⎦ ⎣1 ⎦⎠ ⎝⎣1 ⎦ ⎣ 0 ⎦⎠ ⎣(Ay - By) sin z - (Ax - Bx ) cos z ⎦ 

然后(Dx/Dz, Dy/Dz)是交点的坐标,并且可以用通常的方法使用毕达哥拉斯来计算到C的距离。 第一个内部交叉积描述连接AB的线。 第二个内部交叉乘积按照您指定的方向将C连接到一个无穷远处的点。 然后外部交叉乘积与这两条线相交,产生相交点的齐次坐标。