为什么引入齐次坐标的变换矩阵可以表示平移呢?

关注者
91
被浏览
61,436
登录后你可以
不限量看优质回答私信答主深度交流精彩内容一键收藏

我来回答一下,分为两个问题:

1. 为什么引入齐次坐标可以表示平移?

答:

首先我们用一个矢量来表示空间中一个点:r = [ r_{x}, r_{y}, r_{z}]

如果我们要将其平移,平移的矢量为:t=[ t_{x}, t_{y}, t_{z}]

那么正常的做法就是:r + t =[ r_{x}+t_{x}, r_{y}+t_{y}, r_{z}+t_{z}]

如果不引入齐次坐标,单纯采用3X3矩阵乘法来实现平移

你想做的就是找到一个矩阵m,使得

r\cdot m = r + t =[ r_{x}+t_{x}, r_{y}+t_{y}, r_{z}+t_{z}]

然后你就会发现你永远也找不到这样的矩阵

所以我们需要新引入一个维度,原来r = [ r_{x}, r_{y}, r_{z},1]

那么我们可以找到一个4X4的矩阵来实现平移

\left[ 1,0,0,0 \right]

\left[ 0,1,0,0 \right]

\left[ 0,0,1,0 \right]

\left[ t_{x} ,t_{y},t_{z},1 \right]

现在,就有:

r\cdot m = r + t =[ r_{x}+t_{x}, r_{y}+t_{y}, r_{z}+t_{z}, 1]

2. 为什么要引入齐次坐标来表示平移?

在计算机图形学中,坐标转换通常不是单一的,一个几何体在每一帧可能都设计了多个平移,旋转,缩放等变化,这些变化我们通常使用串接各个子变化矩阵的方式得到一个最终变化矩阵,从而减少计算量。所以我们需要将平移也表示为变化矩阵的形式。因此,只能引入齐次坐标系。