三维空间中在一个经过原点的平面上的正射投影矩阵

正射投影(简称投影)是常见的一种线性变换,不过通常它会改变向量的长度,因此它不是一种正交变换。本文将采用若干种方法讨论如何将一个从原点出发的向量投影到一个过原点的平面上。在开始本文之前,需要说明的是:向量虽然没有位置,但在线性空间中需要将向量默认为是从原点出发,因为平移不是一种线性变换; 在计算投影向量时,如果要在任意平面上投影,可以事先将平面平移到原点,计算完毕后再平移回去。

设三维空间中过原点的平面方程一般形式(a,b,c都是常数)为:$$\mathrm{ax+by+cz=0}$$

那么该平面的法向量为n=(a,b,c)。该平面由两个相互独立的向量构成一组基,可以分别取v=(-c,0,a)和w=(-b,a,0)。从这个前提出发,下面将讨论如何得出任何从原点出发的向量投影到该平面上的投影矩阵表示形式。

方法一:利用投影矩阵的一般形式

如果将上述两个基向量构成矩阵A的列空间,即:
$$
A=\left(\begin{array}{cc}{-\mathrm{c}} & {-\mathrm{b}} \\ {0} & {\mathrm{a}} \\ {\mathrm{a}} & {0}\end{array}\right)
$$

那么投影矩阵的一般形式为:

$$\mathrm{A} \left(\mathrm{A}^{T} \mathrm{A}\right)^{-1} \mathrm{A}^{T}$$

计算得出:

$$\frac 1 {a^2+b^2+c^2} \left(\begin{array}{cccc}{b^{2}+c^{2}} & {-a b} & {-a c} \\ {-a b} & {a^{2}+c^{2}} & {-b c} \\ {-a c} & {-b c} & {a^{2}+b^{2}}\end{array}\right) \tag 1$$

由此可知,投影矩阵也是一个对称阵,它的行列式为0。

方法二:利用法向量(Normal Vector)

在平面法向量已知的情况下,投影矩阵的公式为:
$$\mathrm{I} - \frac {\mathrm{n} \mathrm{n}^{T}} {\mathrm{n}^{T}\mathrm{n}}$$

将法向量为n=(a,b,c)代入的到和(1)相同的矩阵。

方法三:利用交叉积

如果设从原点出发的向量为r, 那么它在平面上(已知法向量为n)的投影向量为:

$$\frac {\vec n \times ( \vec r \times \vec n)} { |\vec n|^2}$$

将交叉积转换为矩阵形式,则投影矩阵为:

$$-\frac {[n^{\prime}]^2} {|\vec n|^2}$$

其中:
$$[n^{\prime}]=\left(\begin{array}{cccc}{0} & {-c} & {b} \\ {c} & {0} & {-a} \\ {-b} & {a} & {0}\end{array}\right)$$

计算得出和(1)相同的矩阵。

方法四:利用特征值和特征向量

三维平面上的投影矩阵有两个特征值:1和0,对应的特征向量分别是平面上的任意两条线性独立的向量和垂直于平面的向量。

即当特征值为1时,可以找到两个特征向量v=(-c,0,a)和w=(-b,a,0); 当特征值为0时,即为法向量n=(a,b,c)。利用矩阵的谱分解(spectral decomposition),令:
$$P=\left(\begin{array}{cccc}{-c} & {-b} & {a} \\ {0} & {a} & {b} \\ {a} & {0} & {c}\end{array}\right)$$

$$\Lambda=\left(\begin{array}{cccc}{1} & {0} & {0} \\ {0} & {1} & {0} \\ {0} & {0} & {0}\end{array}\right)$$

那么有:

$$A=P{\Lambda}P^{-1}$$

上式中A就是要求的投影矩阵。代入得到和(1)相同的矩阵。

以上就是介绍的几种计算投影矩阵的方法。当然还有一种更繁琐的做法:对平面上的两个基向量做单位正交化(可以采用Gram-Schmidt算法),然后找出任意向量r在两个单位正交向量上的投影p1和p2,那么r在平面上的投影就是p1+p2。将投影向量表示成矩阵和r的相乘形式,得到的矩阵就是投影矩阵。这个方法在单独用于计算向量r在平面上的投影值时或许能用上。

总结:

矩阵是一个非常强大的数学工具,很多线性问题用矩阵解算显得十分简洁。通过本文介绍的几种方法可知数学本身就是一个互通的体系,有些方法可能很繁琐,另外一些方法确是非常简洁优美,真是叫人称快!但最终都是条条道路通罗马,只是到达的时间不太一样罢了:)

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值