编程语言
首页 > 编程语言> > 利用python通过两点构成的空间直线和平面计算交点

利用python通过两点构成的空间直线和平面计算交点

作者:互联网

Coordinate.calCoordinateFrom2PointsAndPlane()函数说明

一、功能

​ 该函数用于计算空间直线与空间平面的交点坐标。

二、计算原理

​ 空间直线与平面交点示意如下图所示:

​ 利用空间直线上任意两点求得其方向向量:
L i n e V e c t o r = ( x 1 − x 2 , y 1 − y 2 , z 1 − z 2 ) = ( m , n , p ) LineVector=(x_1-x_2,y_1-y_2,z_1-z_2)=(m,n,p) LineVector=(x1​−x2​,y1​−y2​,z1​−z2​)=(m,n,p)
​ 根据丘维声所著《解析几何(第三版)》第60-61页可将空间直线方程表示为“点向式”方程:
x − x 1 m = y − y 1 n = z − z 1 p \frac{x-x_1}{m}=\frac{y-y_1}{n}=\frac{z-z_1}{p} mx−x1​​=ny−y1​​=pz−z1​​
​ 利用中间参数可将上式表示为:
{ x = m t + x 1 y = n t + y 1 z = p t + z 1 \left\{ \begin{array}{c} x=mt+x_1\\ y=nt+y_1\\ z=pt+z_1 \end{array} \right. ⎩⎨⎧​x=mt+x1​y=nt+y1​z=pt+z1​​
​ 通过上式与平面方程联立可计算出中间参数为:
t = − a x 1 − b y 1 − c z 1 − d a m + b n + c p t=\frac{-ax_1-by_1-cz_1-d}{am+bn+cp} t=am+bn+cp−ax1​−by1​−cz1​−d​
​ 利用计算出的中间参数反求直线与平面交点E(x,y,z)。至此,空间直线与平面交点坐标求解完毕。

三、使用

1、输入

​ 根据上述函数计算原理可知,该函数的输入为空间直线上任意两点坐标与平面方程参数:
I n p u t ( ) : { P 1 ( x 1 , y 1 , z 1 ) P 2 ( x 2 , y 2 , z 2 ) ( a , b , c , d ) ∈ a x + b y + c z + d = 0 Input(): \left\{ \begin{array}{c} P_1(x_1,y_1,z_1)\\ P_2(x_2,y_2,z_2)\\ (a,b,c,d) \in ax+by+cz+d=0 \end{array} \right. Input():⎩⎨⎧​P1​(x1​,y1​,z1​)P2​(x2​,y2​,z2​)(a,b,c,d)∈ax+by+cz+d=0​

2、输出

​ 根据上述函数计算流程可知,该函数的输出为空间直线与平面的交点:
O u t p u t : E ( x , y , z ) Output:E(x,y,z) Output:E(x,y,z)

3、调用示例

P1 = np.array([-670.13, 1477.30, -1576.88])
P2 = np.array([-761.34, 914.65, -1576.88])
PlaneParams = np.array([0.00000000e+00, 5.54216347e+05, 0.00000000e+00, -3.57990507e+08])

print(calCoordinateFrom2PointsAndPlane(P1, P2, PlaneParams))

4、调用结果

[[ -804.90000912   645.93999967 -1576.88 ]]

开源算法库地址,qq交流群:873647617

标签:直线,python,交点,两点,y1,平面,array,z1
来源: https://blog.csdn.net/huangzhe0701/article/details/122417274