目标:如何理解普吕克坐标
最近看论文遇到直线的表达。因为最近在写项目,遇到了这类问题,但是这类问题,中文的资料不多,因此自己记录一下自己的理解。
定义: 传统的欧几里何的坐标系下,直线的向量表达: L : r → = P → + t l → L:\overrightarrow{r}=\overrightarrow{\bm{P}}+t\overrightarrow{\bm{l}} L:r=P+tl;其中 P → = ( p 0 p 1 p 2 ) \overrightarrow{\bm{P}}=\begin{pmatrix} p_0 \\ p_1 \\ p_2 \end{pmatrix} P=⎝ ⎛p0p1p2⎠ ⎞, l → = ( l 0 l 1 l 2 ) \overrightarrow{\bm{l}}=\begin{pmatrix} l_0 \\ l_1 \\ l_2 \end{pmatrix} l=⎝ ⎛l0l1l2⎠ ⎞, 其中 P → \overrightarrow{\bm{P}} P表示直线上的顶点, l → \overrightarrow{\bm{l}} l是直线的方向。
定义: 在普吕克坐标坐标系下,直线的表达一般表示为 ( l → , m → ) (\overrightarrow{\bm{l}},\overrightarrow{\bm{m}}) (l,m),其中 m → = p → × l → \overrightarrow{\bm{m}} =\overrightarrow{\bm{p}} \times \overrightarrow{\bm{l}} m=p×l,称为: m o m e n t v e c t o r moment \space vector moment vector, l → \overrightarrow{\bm{l}} l是直线的方向。
但是很多人不是特别理解 ( l → , m → ) (\overrightarrow{\bm{l}},\overrightarrow{\bm{m}}) (l,m)在几何意义上表达一条直线。以及它和欧几里何的坐标系的直线有啥关系?
答:
首先需要理解一个非常重要的向量
l
→
\overrightarrow{\bm{l}}
l,它是直线上的一个方向。它和欧几里何中的直线方向一样,表示直线方向。如下图,是直线的方向,一般不具有长度信息,可以normlize,但是如果它不normlize,它提供一个scale的量,可以表示为
c
=
∣
l
→
∣
c=|\overrightarrow{\bm{l}}|
c=∣l∣。而这个
c
c
c有提供给了
m
→
\overrightarrow{\bm{m}}
m (因为
m
→
\overrightarrow{\bm{m}}
m也来源于
l
→
\overrightarrow{\bm{l}}
l)。 通过后面的计算发现
l
→
\overrightarrow{\bm{l}}
l不提供scale变量,其实scale变量来源于直线上的顶点
P
→
\overrightarrow{\bm{P}}
P。
P
→
\overrightarrow{\bm{P}}
P和
m
→
\overrightarrow{\bm{m}}
m 共同决定了直线的另一个重要变量,直线上的顶点。下图表示为
P
→
⊥
\overrightarrow{\bm{P}}\bot
P⊥,它是垂直于直线的顶点。
再次理解另一个非常重要的向量
m
→
\overrightarrow{\bm{m}}
m,它是除了表示方向之外,它还具有长度信息,且它和在直线上的顶点
p
→
\overrightarrow{\bm{p}}
p无关。这是一个非常重要的性质。
证明:
m
→
\overrightarrow{\bm{m}}
m和
p
→
\overrightarrow{\bm{p}}
p(在直线上的任意的顶点)无关,假设
m
→
=
p
→
×
l
→
\overrightarrow{\bm{m}} = \overrightarrow{\bm{p}} \times \overrightarrow{\bm{l}}
m=p×l ;直线上另一的顶点
p
′
→
\overrightarrow{\bm{p'}}
p′为直线上任意的顶点,
p
′
→
−
p
→
=
λ
l
→
\overrightarrow{\bm{p'}}- \overrightarrow{\bm{p}}=\lambda \overrightarrow{\bm{l}}
p′−p=λl。证明和直线上的顶点无关,因此得到如下:
p
′
→
×
l
→
=
(
λ
l
→
+
p
→
)
×
l
→
=
λ
l
→
×
l
→
+
p
→
×
l
→
=
p
→
×
l
→
=
m
→
\overrightarrow{\bm{p'}} \times \overrightarrow{\bm{l}} \\ = (\lambda \overrightarrow{\bm{l}}+\overrightarrow{\bm{p}}) \times \overrightarrow{\bm{l}} \\ = \lambda \overrightarrow{\bm{l}} \times \overrightarrow{\bm{l}}+\overrightarrow{\bm{p}} \times \overrightarrow{\bm{l}} \\ = \overrightarrow{\bm{p}} \times \overrightarrow{\bm{l}} = \overrightarrow{\bm{m}}
p′×l=(λl+p)×l=λl×l+p×l=p×l=m
因此可以看到图上:
m
→
\overrightarrow{\bm{m}}
m是垂直于
p
→
\overrightarrow{\bm{p}}
p和
l
→
\overrightarrow{\bm{l}}
l所在的平面。
m
→
\overrightarrow{\bm{m}}
m的长度表示为
∣
m
→
∣
|\overrightarrow{\bm{m}}|
∣m∣。原点到直线的垂直点表示为
P
→
⊥
\overrightarrow{\bm{P}}\bot
P⊥。
如果向量
l
→
\overrightarrow{\bm{l}}
l是单位向量的时候。向量
P
→
⊥
\overrightarrow{\bm{P}}\bot
P⊥的长度就和
∣
m
→
∣
|\overrightarrow{\bm{m}}|
∣m∣长度一样,它也是定位直线的顶点,相当于直线的一个顶点(因此直线方向和顶点,唯一决定一条直线)。为了证明这个结论,假设
l
′
→
\overrightarrow{\bm{l}'}
l′为直线上的单位向量,因为
m
→
\overrightarrow{\bm{m}}
m来源于
p
→
×
l
→
\overrightarrow{\bm{p}} \times \overrightarrow{\bm{l}}
p×l,因此它也会变化,可以表示为
m
′
→
\overrightarrow{\bm{m}'}
m′。因此:c
l
′
→
=
l
→
\overrightarrow{\bm{l}'} =\overrightarrow{\bm{l}}
l′=l;c
m
′
→
=
m
→
\overrightarrow{\bm{m}'}=\overrightarrow{\bm{m}}
m′=m
计算 P → ⊥ = l ′ → × m ′ → \overrightarrow{\bm{P}}\bot = \overrightarrow{\bm{l}'} \times \overrightarrow{\bm{m'}} P⊥=l′×m′
表达向量如下: P → ⊥ P → = t l ′ → \overrightarrow{\bm{P}}\bot \overrightarrow{\bm{P}} = t \overrightarrow{\bm{l}'} P⊥P=tl′, O → P → = P → \overrightarrow{\bm{O}}\overrightarrow{\bm{P}}=\overrightarrow{\bm{P}} OP=P(因为O是原点).
因为知道 c o s ( θ ) = ∣ P → ⊥ P → ∣ / ∣ O → P → ∣ = ( l ′ → ⋅ P → ) / ( ∣ l ′ → ∣ ⋅ ∣ P → ∣ ) cos(\theta) = |\overrightarrow{\bm{P}}\bot \overrightarrow{\bm{P}}| / |\overrightarrow{\bm{O}}\overrightarrow{\bm{P}}| = (\overrightarrow{\bm{l}'} \cdot \overrightarrow{\bm{P}}) / (| \overrightarrow{\bm{l}'}| \cdot |\overrightarrow{\bm{P}}|) cos(θ)=∣P⊥P∣/∣OP∣=(l′⋅P)/(∣l′∣⋅∣P∣),这是基本的三角形函数的公式。
∣ P → ⊥ P → ∣ = ∣ O → P → ∣ c o s ( θ ) = ( l ′ → ⋅ P → ) / ∣ l ′ → ∣ = l ′ → ⋅ P → ( 因为 l ′ → 是单位向量 ) |\overrightarrow{\bm{P}}\bot \overrightarrow{\bm{P}}| \\=|\overrightarrow{\bm{O}}\overrightarrow{\bm{P}}|cos(\theta) \\ = (\overrightarrow{\bm{l}'} \cdot \overrightarrow{\bm{P}} )/ |\overrightarrow{\bm{l}'}| \\ = \overrightarrow{\bm{l}'} \cdot \overrightarrow{\bm{P}} (因为\overrightarrow{\bm{l}'}是单位向量) ∣P⊥P∣=∣OP∣cos(θ)=(l′⋅P)/∣l′∣=l′⋅P(因为l′是单位向量)
计算上面的公式,可以得到垂直点如下:
P → ⊥ = P → − ( l ′ → ⋅ P → ) l ′ → = ( l ′ → ⋅ l ′ → ) P → − ( l ′ → ⋅ P → ) l ′ → = l ′ → × ( P → × l ′ → ) = l ′ → × m ′ → \overrightarrow{\bm{P}}\bot =\overrightarrow{\bm{P}}-(\overrightarrow{\bm{l}'} \cdot \overrightarrow{\bm{P}})\overrightarrow{\bm{l}'} \\ = (\overrightarrow{\bm{l}'} \cdot \overrightarrow{\bm{l}'})\overrightarrow{\bm{P}} - (\overrightarrow{\bm{l}'} \cdot \overrightarrow{\bm{P}})\overrightarrow{\bm{l}'} \\ = \overrightarrow{\bm{l}'} \times (\overrightarrow{\bm{P}} \times \overrightarrow{\bm{l}'}) \\ = \overrightarrow{\bm{l}'} \times \overrightarrow{\bm{m}'} P⊥=P−(l′⋅P)l′=(l′⋅l′)P−(l′⋅P)l′=l′×(P×l′)=l′×m′
从上公式可以看出,直线上的顶点 P → ⊥ \overrightarrow{\bm{P}}\bot P⊥有这两个公式 l ′ → × m ′ → \overrightarrow{\bm{l}'} \times \overrightarrow{\bm{m}'} l′×m′得到。它也是决定了直线的唯一性。 P → ⊥ \overrightarrow{\bm{P}}\bot P⊥变化,虽然方向不变,但是它位置会变化,也表示直线的位置变化。因此直线上的顶点,由 l ′ → × m ′ → \overrightarrow{\bm{l}'} \times \overrightarrow{\bm{m}'} l′×m′决定。
如果
l
→
\overrightarrow{\bm{l}}
l不是单位向量,它拥有自己的长度的时候,因为
l
→
\overrightarrow{\bm{l}}
l可以单位化表示为
l
′
→
=
l
→
/
∣
l
→
∣
=
l
→
/
c
\overrightarrow{\bm{l}'}=\overrightarrow{\bm{l}}/|\overrightarrow{\bm{l}}|=\overrightarrow{\bm{l}}/c
l′=l/∣l∣=l/c,因此公式中:
P
→
⊥
=
l
′
→
×
m
′
→
=
(
l
→
/
∣
l
→
∣
)
×
m
′
→
=
(
l
→
×
m
′
→
)
/
∣
l
→
∣
=
(
l
→
×
m
′
→
)
/
c
=
(
l
→
×
(
m
→
/
c
)
)
/
c
=
(
l
→
×
m
→
)
/
c
2
\overrightarrow{\bm{P}}\bot =\overrightarrow{\bm{l}'} \times \overrightarrow{\bm{m}'} = (\overrightarrow{\bm{l}}/|\overrightarrow{\bm{l}}|) \times \overrightarrow{\bm{m}'} \\ = (\overrightarrow{\bm{l}} \times \overrightarrow{\bm{m}'})/|\overrightarrow{\bm{l}}| =(\overrightarrow{\bm{l}} \times \overrightarrow{\bm{m}'} )/c \\ = (\overrightarrow{\bm{l}} \times (\overrightarrow{\bm{m}}/c ))/c=(\overrightarrow{\bm{l}} \times \overrightarrow{\bm{m}}) /c^2
P⊥=l′×m′=(l/∣l∣)×m′=(l×m′)/∣l∣=(l×m′)/c=(l×(m/c))/c=(l×m)/c2
从公式可以看出来:
原点到直线的距离,可以表示为
∣
P
→
⊥
∣
=
∣
(
l
→
×
m
→
)
∣
/
c
2
=
∣
(
l
→
×
m
→
)
∣
/
∣
l
→
∣
2
|\overrightarrow{\bm{P}}\bot|=|(\overrightarrow{\bm{l}} \times \overrightarrow{\bm{m}})| / c^2=|(\overrightarrow{\bm{l}} \times \overrightarrow{\bm{m}})|/|\overrightarrow{\bm{l}}|^2
∣P⊥∣=∣(l×m)∣/c2=∣(l×m)∣/∣l∣2,可以得到,无论
l
→
\overrightarrow{\bm{l}}
l是否normlize,只要
m
→
\overrightarrow{\bm{m}}
m和 normlized之后的
l
→
\overrightarrow{\bm{l}}
l保持一致,都可以。
同时可以看出来
(
l
→
,
m
→
)
=
(
c
l
→
,
c
m
→
)
(\overrightarrow{\bm{l}} ,\overrightarrow{\bm{m}} ) = (c\overrightarrow{\bm{l}} , c\overrightarrow{\bm{m}} )
(l,m)=(cl,cm)
等号表示它们是同一个直线的表达。
证明:直接代入
P
→
⊥
\overrightarrow{\bm{P}}\bot
P⊥公式就行了。
参考论文:Plücker Coordinates for Lines in the Space ∗