几何算法--python求解空间线段交点坐标

问题
已知两个线段的端点坐标分别为(x1, y1, z1)、(x2, y2, z2);(x3, y3, z3)、(x4, y4, z4),求它们的交点坐标?

已知线段1坐标:(7,6,7)、(1,4,5),线段2的坐标:(4,7,4)、(4,4,7)。

由于两条线段交点是唯一的,两条直线交点也是唯一的,所以,求解线段交点可以利用求解直线交点的思想。

直线方程可以写成:
几何算法--python求解空间线段交点坐标_第1张图片
用参数方程表示,也可以写成:
几何算法--python求解空间线段交点坐标_第2张图片
先求解方程组:

x1+(x2-x1)t1=x3+(x4-x3)t2
y1+(y2-y1)t1=y3+(y4-y3)t2

解得(t1,t2)

再代入第三个方程检验是否成立:
z1+(z2-z1)t1=z3+(z4-z3)t2

如果第三个方程成立,则两直线相交,且交点坐标为(x1+(x2-x1)t1,y1+(y2-y1)t1,z1+(z2-z1)t1)。

代码

from sympy import *
from sympy.abc import x,y
solution = solve([7+6*x-(4),6+2*x-(7+3*y)],[x,y])
print(solution)
t1=-1/2
t2=-2/3
print((7+6*t1,6+2*t1,7+2*t1))

结果

{x: -1/2, y: -2/3}
(4.0, 5.0, 6.0)

你可能感兴趣的:(算法,python)