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+x1y=nt+y1z=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