浏览量:141

2.3. 点、向量与平面

本篇文章禁止用于任何商业目的,版权申明、版本说明等见《前言》。

PDF文档和源码下载地址:https://github.com/twinklingstar20/Programmers_Computational_Geometry

2.3. 点、向量与平面

2.3.1. 点到平面的距离

问题描述:计算点\(Q\)到平面\(\Gamma :\{ \vec n,d\} \)的距离,其中\(\vec n\)是平面的法向量,\(d\)是一个常量。

2015-3-22 11-55-45

图2.8 点到平面的有符号距离

可以采用等式(2.8),计算点到平面的有符号距离。如图2.8所示,点\({Q_1}\)在平面的正半空间上,则有符号距离为正;点\({Q_2}\)在平面的负半空间上,则有符号距离为负;否则,点在平面上,则点\({Q_3}\)到平面的有符号距离为零。如果法向量\(\vec n\)已经归一化,即长度为1,那么就不再需要等式中的除法操作。

\[{\mathop{\rm dist}\nolimits} (Q,\Gamma ) = \frac{{\vec n \cdot Q + d}}{{\left\| {\vec n} \right\|}} \tag{2.8}\]

如果是判断一个点\(Q\)与平面的关系,也可以采用计算有符号距离的方法,如果距离为零,则说明点在平面上;反之,则可能在平面的正半空间或者负半空间上。由于只需要要判断有符号距离是否为零,或者正负性,为了提高算法的效率,可以不需要等式中的除法操作。

2.3.2. 点到平面的投影

问题描述:计算点\(Q\)到平面\(\Gamma :\{ \vec n,d\} \)的投影点,其中\(\vec n\)是平面的法向量,\(d\)是一个常量。

2015-3-22 11-56-02

图2.9 点\(Q\)到到平面\(\Gamma \)的投影

设点\(Q\)到平面的投影点为\(Q'\)),点\(Q\)到平面的有符号距离为\(r\),如图2.9所示,可得:

\[Q = Q' + \frac{{r\vec n}}{{\left\| {\vec n} \right\|}} \tag{2.9}\]

把有符号距离\(r\)用等式(2.8)代入,移项,可以解得

\[Q' = Q - \frac{{Q \cdot \vec n + d}}{{\vec n \cdot \vec n}} \cdot \vec n tag{2.10}\]

2.3.3. 向量到平面的投影

问题描述:计算向量\(\vec v\)到平面\(\Gamma :\{ \vec n,d\} \)的投影,其中,\(\vec v\)是平面的法向量,\(d\)是一个常量。

2015-3-22 11-56-16

图2.10 向量\(\vec v\)到平面\(\Gamma \)的投影

如图2.10所示,直观的来讲,向量\(\vec v\)可以看成是一条带有一定长度,指向某个方向的箭头,把箭头的一端移至平面上。那么,向量可以分解为平行于向量\(\vec n\)和垂直于向量\(\vec n\)的两个子向量的和,即\(\vec v = {\vec v_\parallel } + {\vec v_ \bot }\),投影向量就是指向量\({\vec v_ \bot }\)。设向量\(\vec n\)是一个单位向量,则有\({\vec v_\parallel } = (\vec v \cdot \vec n)\vec n\),因此有:

\[{\vec v_ \bot } = \vec v - {\vec v_\parallel } = \vec v - (\vec v \cdot \vec n)\vec n \tag{2.11}\]

如果法向量\(\vec n\)未经归一化,则有:

\[{\vec v_ \bot } = \vec v - \frac{{\vec v \cdot \vec n}}{{\vec n \cdot \vec n}}\vec n \tag{2.12}\]

spacer

Leave a reply