1 空间中两条直线匹配建立关系
现在已知空间直线A方程为
(1)
$$
\mathbf{p}_1 = \mathbf{n}_1\alpha + \mathbf{p}_1'
$$
现在已知空间直线B方程为
(2)
$$
\mathbf{p}_2 = \mathbf{n}_2\beta + \mathbf{p}_2'
$$
上面公式中\(\mathbf{n}_1\)为直线A单位方向向量,\(\mathbf{n}_2\)为直线B单位方向向量。现在将直线A进行(\(R,\mathbf{t}\))变换后,能与直线B完全重合。现在想建立直线A、B、以及(\(R,\mathbf{t}\))的关系。
构建关系有多种方式,比如将线上变换后的点到目标线的距离作为约束;另一种法方式是将变换后的点投到目标线参数方程上, 如果点在线上,则满足参数方程约束。本文建立关系则基于后一种方式。
1.1 考虑方向向量匹配
有时,我们能够确定直线A与直线B在A通过(\(R,\mathbf{t}\))变换后,其变换后的直线与直线B完全重合,并且表示直线的单位方向向量也完全重合, 则这时必有如下关系成立
(3)
$$
\mathbf{n}_2 = R\mathbf{n}_1
$$
根据直线变换后完全重合的条件有
(4)
$$
\begin{aligned}
R\mathbf{p}_1+\mathbf{t}&= R(\mathbf{n}_1\alpha + \mathbf{p}_1')+\mathbf{t}
\\
&=\mathbf{p}_2
\\
&= \mathbf{n}_2\beta + \mathbf{p}_2'
\\
&= R\mathbf{n}_1\beta+\mathbf{p}_2'
\\
&\Downarrow
\\
R\mathbf{n}_1(\beta-\alpha)&=R\mathbf{p}_1'+\mathbf{t} – \mathbf{p}_2'
\\
&\Downarrow
\\
(\beta-\alpha)\mathbf{a} &= \mathbf{b}
\end{aligned}
$$
上面的中间变量\(\mathbf{a}\)与 \(\mathbf{b}\)定义如下
(5)
$$
\begin{aligned}
\mathbf{a} &= R \mathbf{n}_1
\\
\mathbf{b} &= R\mathbf{p}_1'+\mathbf{t} – \mathbf{p}_2'
\end{aligned}
$$
在公式(4)中,任意取一个\(\beta\)均有一个唯一对应的\(\alpha\).即个\(\beta-\alpha\)为一个常量,由于个\(\beta\)的任意性,很明显个\(\mathbf{a}\)与个\(\mathbf{b}\)满足如下关系
(6)
$$
\dfrac{1}{|\mathbf{a}|}\mathbf{a}=\dfrac{1}{|\mathbf{b}|}\mathbf{b}
$$
虽然上面公式(6)可以直接构建约束,但由于涉及到向量取模,一种等效的方式是使用如下方程来约束
(7)
$$
\begin{cases}
a_0b_1=a_1b_0
\\
a_0b_2=a_2b_0
\\
a_1b_2=a_2b_1
\end{cases}
$$
公式(7)中有效约束实际为2个方程,实际使用时,可以任意选则两个方程进行构建。很明显,公式(7)的计算量比公式(6)小了很多,因此实际情况下可使用公式(7)来构建约束。
另一种方式是使用如下方式构建,针对公式(4)有
(8)
$$\begin{aligned}
R\mathbf{n}_1(\beta-\alpha)&=R\mathbf{p}_1'+\mathbf{t} – \mathbf{p}_2'
\\
&\Downarrow
\\
\mathbf{p}_2'^\wedge R\mathbf{n}_1(\beta-\alpha) &= \mathbf{p}_2'^\wedge (R\mathbf{p}_1'+\mathbf{t})
\\
&\Downarrow
\\
0 = (R\mathbf{n}_1)^T \mathbf{p}_2'^\wedge R\mathbf{n}_1(\beta-\alpha) &= (R\mathbf{n}_1)^T \mathbf{p}_2'^\wedge (R\mathbf{p}_1'+\mathbf{t}) \end{aligned}$$
同理,可以得到如下约束表达式
(9)
$$
\begin{cases}
(R\mathbf{n}_1)^T \mathbf{p}_2'^\wedge (R\mathbf{p}_1'+\mathbf{t}) = 0
\\
(R\mathbf{n}_1)^T \mathbf{t}^\wedge (R\mathbf{p}_1'-\mathbf{p}_2')=0
\end{cases}
$$
因此最终可以使用公式(3)与(7)来构建约束方程或者 (3)与(9)来构建约束方程。
1.2 不考虑方向向量匹配
有的情况下,我们无法保证提供的两个直线方向向量在变换后是否一致,这时,我们基于的理论是:A直线上的点变换后,一定在B直线上。则根据变换条件有
(10)
$$
\begin{aligned}
R\mathbf{p}_1+\mathbf{t}&= R(\mathbf{n}_1\alpha + \mathbf{p}_1')+\mathbf{t}
\\
&=\mathbf{p}_2
\\
&= \mathbf{n}_2\beta + \mathbf{p}_2'
\\
&\Downarrow
\\
\mathbf{n}_2\beta&=\alpha R\mathbf{n}_1+R\mathbf{p}_1'+\mathbf{t} – \mathbf{p}_2'
\\
&\Downarrow
\\
\beta\mathbf{n}_2&=\alpha \mathbf{a} + \mathbf{b}
\\
&\Downarrow
\\
\beta \mathbf{b}^\wedge \mathbf{n}_2 &= \alpha \mathbf{b}^\wedge \mathbf{a}
\\
&\Downarrow
\\
\beta \mathbf{n}_2^T \mathbf{b}^\wedge \mathbf{n}_2 &= \alpha \mathbf{n}_2^T \mathbf{b}^\wedge \mathbf{a}
\\
&\Downarrow
\\
\mathbf{n}_2^T \mathbf{b}^\wedge \mathbf{a} &= 0
\end{aligned}
$$
即从(10)中我们可以得到一个约束
(11)
$$
\mathbf{n}_2^T \mathbf{b}^\wedge \mathbf{a} = 0
$$
虽然(11)算式反应了两条直线匹配的关系,但是还有一个隐藏约束没有用到,即两条直线上的点一一对应。即,每个\(\beta\)对应着一个唯一的 \(\alpha\),上面公式在约去\(\beta\)的过程中,并没有反映其一一对应性,为了进一步找出约束关系,这里设
(12)
$$
\mathbf{n}_2=\begin{bmatrix}
x
\\
y
\\
z
\end{bmatrix}
$$
1.2.1 消去x
当\(\mathbf{n}_2\)中绝对值元素最大的值为\(x\),则消去(10)中的\(\beta\)有
(13)
$$
\begin{aligned}
\begin{bmatrix}
\dfrac{y}{x}
\\
\\
\dfrac{z}{x}
\end{bmatrix}&=
\begin{bmatrix}
\dfrac{\alpha a_1+b_1}{\alpha a_0 + b_0}
\\
\\
\dfrac{\alpha a_2+b_2}{\alpha a_0 + b_0}
\end{bmatrix}
\\
&\Downarrow
\\
&\begin{cases}
\alpha(a_0y-a_1x)+(b_0y-b_1x)=0
\\
\alpha(a_0z-a_2x) +(b_0z-b_2x)=0
\end{cases}
\end{aligned}
$$
由于每个\(\beta\)对应着唯一的\(\alpha\), 当\(\beta\)取任意值时,\(\alpha\)也可以看成可取任意值.由于\(\beta\)取任意值均需要满足上面表达式,则可以得到如下约束方程
(14)
$$
\begin{cases}
a_0y=a_1x
\\
b_0y=b_1x
\\
a_0z=a_2x
\\
b_0z=b_2x
\end{cases}
$$
上面公式中隐含了 \(a_0b_1=a_1b_0\)与 \(a_0b_2=a_2b_0\)。因此最终使用(14)算式构建约束。
1.2.2 消去y
当\(\mathbf{n}_2\)中绝对值元素最大的值为\(y\),则消去(10)中的\(\beta\)有
(15)
$$
\begin{aligned}
\begin{bmatrix}
\dfrac{x}{y}
\\
\\
\dfrac{z}{y}
\end{bmatrix}&=
\begin{bmatrix}
\dfrac{\alpha a_0+b_0}{\alpha a_1 + b_1}
\\
\\
\dfrac{\alpha a_2+b_2}{\alpha a_1 + b_1}
\end{bmatrix}
\\
&\Downarrow
\\
&\begin{cases}
\alpha(a_1x-a_0y)+(b_1x-b_0y)=0
\\
\alpha(a_1z-a_2y) +(b_1z-b_2y)=0
\end{cases}
\end{aligned}
$$
由于每个\(\beta\)对应着一个\(\alpha\), 当\(\beta\)取任意值时,\(\alpha\)也可以看成可取任意值.由于\(\beta\)取任意值均需要满足上面表达式,则可以得到如下约束方程
(16)
$$
\begin{cases}
a_1x=a_0y
\\
b_1x=b_0y
\\
a_1z=a_2y
\\
b_1z=b_2y
\end{cases}
$$
上面公式中隐含了 \(a_0b_1=a_1b_0\)与 \(a_1b_2=a_2b_1\)。因此最终使用(16)算式构建约束。
1.2.3 消去z
当\(\mathbf{n}_2\)中绝对值元素最大的值为\(z\),则消去(10)中的\(\beta\)有
(17)
$$
\begin{aligned}
\begin{bmatrix}
\dfrac{x}{z}
\\
\\
\dfrac{y}{z}
\end{bmatrix}&=
\begin{bmatrix}
\dfrac{\alpha a_0+b_0}{\alpha a_2 + b_2}
\\
\\
\dfrac{\alpha a_1+b_1}{\alpha a_2 + b_2}
\end{bmatrix}
\\
&\Downarrow
\\
&\begin{cases}
\alpha(a_2x-a_0z)+(b_2x-b_0z)=0
\\
\alpha(a_2y-a_1z) +(b_2y-b_1z)=0
\end{cases}
\end{aligned}
$$
由于每个\(\beta\)对应着一个\(\alpha\), 当\(\beta\)取任意值时,\(\alpha\)也可以看成可取任意值.由于\(\beta\)取任意值均需要满足上面表达式,则可以得到如下约束方程
(18)
$$
\begin{cases}
a_2x=a_0z
\\
b_2x=b_0z
\\
a_2y=a_1z
\\
b_2y=b_1z
\end{cases}
$$
上面公式中隐含了 \(a_0b_2=a_2b_0\)与 \(a_1b_2=a_2b_1\)。因此最终使用(18)算式构建约束。