无论是在二维或者是三维空间中, 直线都可以通过参数方程表达。如果已知直线上的一点\(\mathbf{x}_1\)和直线的方向向量\(\mathbf{t}\)则直线的参数方程可以写成$$\mathbf{x}(k) = \mathbf{x}_1+k\mathbf{t}$$其中\(k\in\mathbb{R}\)。几乎所有学过参数方程的人都不会忘记直线在笛卡尔坐标系下的参数表达,因为它是这样的简单且符合我们的日常认知。
如果已知直线上不重合的两点\(\mathbf{x}_1\)和\(\mathbf{x}_2\),则这条直线的参数方程可以写成$$\mathbf{x}(k) = \mathbf{x}_1 + k(\mathbf{x}_2-\mathbf{x}_1)$$这也是显而易见的结论。
在熟悉笛卡尔坐标系下的直线方程之后,齐次坐标系下直线的参数方程会令人十分不解。在齐次坐标系下,如果已知一条直线上的两点的其次坐标分别为\(\mathbf{X}_1\)和\(\mathbf{X}_2\),则这条直线的参数方程为$$\mathbf{X}(k) = \mathbf{X}_1 + k\mathbf{X}_2$$当我第一次见到这个结论时,我就暗问,这TM是开玩笑吗?
怀着疑惑,我动手算了两个点验证一下,发现还真不是开玩笑,结果没错!于是,我做了一个更加一般的证明,记录于此。
考虑空间中不重合的两点,它们的齐次坐标分别为\(\mathbf{X}_1 = [u_1,~v_1,~w_1,~h_1]^T\)和\(\mathbf{X}_2 = [u_2,~v_2,~w_2,~h_2]^T\)。设\(k\in\mathbb{R}\),记
$$\mathbf{X}(k) = \mathbf{X}_1 + k\mathbf{X}_2$$接下来验证\(\mathbf{X}\)是经过\(\mathbf{X}_1\)和\(\mathbf{X}_2\)的直线上的一点。
我们先不考虑无穷远点的情况,也就是说,\(h_1\)和\(h_2\)都不为0。这种情况下,可以计算出\(\mathbf{X}_1\)和\(\mathbf{X}_2\)的笛卡尔坐\(\mathbf{x}_1\)和\(\mathbf{x}_2\),
$$\begin{split}x_1 &= \frac{1}{h_1}[u_1,~v_1,~w_1]^T = [u_{1c},~v_{1c},~w_{1c}]^T \\ x_2 &= \frac{1}{h_2}[u_2,~v_2,~w_2]^T = [u_{2c},~v_{2c},~w_{2c}]^T\end{split}$$接着,我们计算\(\mathbf{X}\)的笛卡尔坐标。对于第1个分量\(u_c\),
$$\begin{split}u_c &= \frac{u_1+ku_2}{h_1+kh_2}\\
&= \frac{h_1u_{1c}+kh_2u_{2c}}{h_1+kh_2} \\
&= \frac{h_1u_{1c}+kh_2(u_{2c}-u_{1c}+u_{1c})}{h_1+kh_2} \\
&= \frac{(h_1+kh_2)u_{1c}+kh_2(u_{2c}-u_{1c})}{h_1+kh_2} \\
&= u_{1c}+\frac{kh_2}{h_1+kh_2}(u_{2c}-u_{1c})\end{split}$$类似地,还可以计算出
$$\begin{split} v_c &= v_{1c}+\frac{kh_2}{h_1+kh_2}(v_{2c}-v_{1c}) \\ w_c &= w_{1c}+\frac{kh_2}{h_1+kh_2}(w_{2c}-w_{1c})\end{split}$$现在,我们可以很容易地看出\(\mathbf{X}\)的确是直线上的一点。
未经允许不得转载:Charlie小站 » 齐次坐标系下的直线参数方程
评论前必须登录!
登陆 注册