空间点变换:平移与尺度变换顺序的影响
平移变换矩阵 T 为:
$$\begin{bmatrix}\1 & 0 & 0 & x_0\0 & 1 & 0 & y_0\0 & 0 & 1 & z_0\0 & 0 & 0 & 1\\end{bmatrix}$$
其中 (x_0, y_0, z_0) 为平移向量。
尺度变换矩阵 S 为:
$$\begin{bmatrix}\s_x & 0 & 0 & 0\0 & s_y & 0 & 0\0 & 0 & s_z & 0\0 & 0 & 0 & 1\\end{bmatrix}$$
其中 s_x, s_y, s_z 为三个方向上的尺度因子。
对空间点 P = [1, 2, 3]^T 进行变换,先进行平移变换后尺度变换:
$$\begin{aligned}\P'&=S(TP)\&=S\begin{bmatrix}\1 & 0 & 0 & x_0\0 & 1 & 0 & y_0\0 & 0 & 1 & z_0\0 & 0 & 0 & 1\\end{bmatrix}\begin{bmatrix}\1\2\3\1\\end{bmatrix}\&=S\begin{bmatrix}\1+x_0\2+y_0\3+z_0\1\\end{bmatrix}\&=\begin{bmatrix}\s_x(1+x_0)\s_y(2+y_0)\s_z(3+z_0)\1\\end{bmatrix}\\end{aligned}$$
再进行尺度变换后平移变换:
$$\begin{aligned}\P''&=T(SP)\&=\begin{bmatrix}\1 & 0 & 0 & x_0\0 & 1 & 0 & y_0\0 & 0 & 1 & z_0\0 & 0 & 0 & 1\\end{bmatrix}\begin{bmatrix}\s_x & 0 & 0 & 0\0 & s_y & 0 & 0\0 & 0 & s_z & 0\0 & 0 & 0 & 1\\end{bmatrix}\begin{bmatrix}\1\2\3\1\\end{bmatrix}\&=\begin{bmatrix}\s_x & 0 & 0 & s_x x_0\0 & s_y & 0 & s_y y_0\0 & 0 & s_z & s_z z_0\0 & 0 & 0 & 1\\end{bmatrix}\begin{bmatrix}\1\2\3\1\\end{bmatrix}\&=\begin{bmatrix}\s_x+s_x x_0\s_y+s_y y_0\s_z+s_z z_0\1\\end{bmatrix}\\end{aligned}$$
可以发现,两种方式所得到的结果并不相同。按照第一种方式,先平移再尺度变换,相当于将空间点沿着平移向量进行平移,再按照不同的比例对空间点进行缩放;按照第二种方式,先尺度变换再平移变换,相当于在空间点的原始位置上按照不同的比例对空间点进行缩放,然后再将缩放后的点沿着平移向量进行平移。因此,两种方式所得到的结果是不同的。
在实际应用中,根据不同的需求和场景,可以选择不同的顺序进行变换。如果需要对空间点先进行平移再进行缩放,就应该选择第一种方式;如果需要先对空间点进行缩放再进行平移,就应该选择第二种方式。
原文地址: https://www.cveoy.top/t/topic/owEz 著作权归作者所有。请勿转载和采集!