a
x
+
b
y
+
c
z
+
d
=
0
ax+by+cz+d=0
ax+by+cz+d=0
其中
n
=
(
a
,
b
,
c
)
n=(a,b,c)
n=(a,b,c)是平面的法向量,
d
d
d是将平面平移到坐标原点所需的距离,
d
=
0
d=0
d=0时,平面过原点
给定一个向量 V ( x , y , z ) V(x,y,z) V(x,y,z),其模为 ∣ V ∣ = s q r t ( x 2 + y 2 + z 2 ) |V|=sqrt(x^2+y^2+z^2) ∣V∣=sqrt(x2+y2+z2)。
给定两个向量 V 1 ( x 1 , y 1 , z 1 ) V_1(x_1,y_1,z_1) V1(x1,y1,z1)和 V 2 ( x 2 , y 2 , z 2 ) V_2(x_2,y_2,z_2) V2(x2,y2,z2),则他们的内积是 V 1 V 2 = x 1 x 2 + y 1 y 2 + z 1 z 2 V_1V_2=x_1x_2+y_1y_2+z_1z_2 V1V2=x1x2+y1y2+z1z2。其几何意义为一个向量到另一个向量的投影长度,有 V 1 V 2 = ∣ V 1 ∣ ∣ V 2 ∣ ⋅ cos θ V_1V_2=|V_1||V_2|\cdot \cos \theta V1V2=∣V1∣∣V2∣⋅cosθ,其中 θ \theta θ为两个向量的夹角。
给定平面方程
a
x
+
b
y
+
c
z
+
d
=
0
ax+by+cz+d=0
ax+by+cz+d=0,求平面外一点
Q
(
x
0
,
y
0
,
z
0
)
Q(x_0,y_0,z_0)
Q(x0,y0,z0)到平面的距离
d
d
d。如下图所示:

取平面中任意一点
P
(
x
,
y
,
z
)
P(x,y,z)
P(x,y,z),链接
P
Q
PQ
PQ,过
P
P
P做平面的法向量
n
→
=
(
a
,
b
,
c
)
\mathop{n}\limits ^{\rightarrow}=(a,b,c)
n→=(a,b,c),可知
Q
Q
Q到平面的距离
d
d
d恰恰是
P
Q
→
=
(
x
0
−
x
,
y
0
−
y
,
z
0
−
z
\mathop{PQ}\limits ^{\rightarrow}=(x_0-x,y_0-y,z_0-z
PQ→=(x0−x,y0−y,z0−z在法向量
n
→
)
\mathop{n}\limits ^{\rightarrow})
n→)上面的投影长度,即:
d
=
∣
P
Q
→
∣
⋅
cos
θ
=
∣
n
→
∣
∣
n
→
∣
∣
P
Q
→
∣
⋅
cos
θ
(分子的三项组合刚好为向量
n
→
和向量
P
Q
→
的点积)
=
P
Q
⋅
n
∣
n
→
∣
=
a
(
x
0
−
x
)
+
b
(
y
0
−
y
)
+
c
(
z
0
−
z
)
a
2
+
b
2
+
c
2
=
a
x
0
+
b
y
0
+
c
z
0
−
(
a
x
+
b
y
+
c
z
)
a
2
+
b
2
+
c
2
=
a
x
0
+
b
y
0
+
c
z
0
+
d
a
2
+
b
2
+
c
2
(
因为
a
x
+
b
y
+
c
z
=
−
d
)
=
∣
a
x
0
+
b
y
0
+
c
z
0
+
d
∣
a
2
+
b
2
+
c
2
(
为保证结果为正,所以加绝对值
)
d=|→PQ|⋅cosθ=|→n||→n||→PQ|⋅cosθ(分子的三项组合刚好为向量→n和向量→PQ的点积)=PQ⋅n|→n|=a(x0−x)+b(y0−y)+c(z0−z)√a2+b2+c2=ax0+by0+cz0−(ax+by+cz)√a2+b2+c2=ax0+by0+cz0+d√a2+b2+c2(因为ax+by+cz=−d)=|ax0+by0+cz0+d|√a2+b2+c2(为保证结果为正,所以加绝对值)
如果法向量是单位向量的话,分母为1,参考。
double point2planeDistance(
const Eigen::Vector3d &P,
const Eigen::Vector4d &plane_coeff)
{
Eigen::Vector4d point;
point<<P,1;
return fabs(point.dot(plane_coeff))/plane_coeff.block<3,1>(0,0).norm();
}
Eigen::Vector3d p;
Eigen::Vector4d plane;
p<<0,0,5;
plane<<0,0,1,1;
std::cout<<point2planeDistance(p,plane)<<std::endl;
输出:6
输出的是点
(
0
,
0
,
5
)
(0,0,5)
(0,0,5)到平面
z
=
−
1
z=-1
z=−1的距离。