导航菜单

圆的平移

“同学们,今天我们要学习的是圆的平移。不过在开始之前,我想问大家一个问题:平移能用矩阵表示吗?”

“今天是我来到呼噜星球的第56天。当我问起这个问题时,教室里的呼噜学生们面面相觑,有的摇头,有的皱眉。我能感受到他们内心的疑惑——“地球老师又在讲些奇怪的东西了。“

问题提出

“同学们,请看这个简单的问题:”

圆的方程是 x2+y2=1x^2 + y^2 = 1,如果我们将其沿x轴平移2个单位,y轴平移3个单位,新的圆的方程应该是什么样的?

学生们七嘴八舌地回答: “应该是 (x2)2+(y3)2=1(x-2)^2 + (y-3)^2 = 1 吧?” “没错!中心点从 (0,0)(0,0) 移动到了 (2,3)(2,3)!”

“非常好!“我微笑着说,“那么我的问题是:这个过程能用矩阵来表示吗?”

“我们之前学过线性变换,比如旋转、缩放、剪切,它们都可以用2×2矩阵来表示。但是平移呢?”

我拿起粉笔,在黑板上写下了一个简单的平移:

(xy)=(xy)+(23)\begin{pmatrix} x' \\ y' \end{pmatrix} = \begin{pmatrix} x \\ y \end{pmatrix} + \begin{pmatrix} 2 \\ 3 \end{pmatrix}

“这个表达式不是矩阵乘法,而是向量加法。标准的线性变换形式应该是 x=Ax\mathbf{x'} = A\mathbf{x},这里却有额外的偏移项。”

一个学生举手提问:“老师,那平移不是线性变换吗?”

让我验证一下。线性变换需要满足两个性质:

  1. T(u+v)=T(u)+T(v)T(\mathbf{u} + \mathbf{v}) = T(\mathbf{u}) + T(\mathbf{v})
  2. T(cu)=cT(u)T(c\mathbf{u}) = cT(\mathbf{u})

对于平移 T(x,y)=(x+2,y+3)T(x,y) = (x+2, y+3)

T((0,0))=(2,3)T((0,0)) = (2,3) T(2(0,0))=T(0,0)=(2,3)T(2(0,0)) = T(0,0) = (2,3)2T(0,0)=2(2,3)=(4,6)2T(0,0) = 2(2,3) = (4,6)

显然 T(2(0,0))2T(0,0)T(2(0,0)) \neq 2T(0,0),所以平移不满足线性变换的性质。

“同学们发现了什么?平移确实不是线性变换!“我兴奋地说,“那我们就不能用2×2矩阵来表示平移了。“

观察与猜想

“但是,“话锋一转,“我们真的完全无法用矩阵表示平移吗?”

我向学生们展示了一个巧妙的方法:

“让我们把二维坐标 (x,y)(x,y) 扩展为三维的齐次坐标 [x,y,1][x,y,1]。”

“这时候,平移 (x,y)(x+2,y+3)(x,y) \rightarrow (x+2,y+3) 就可以这样表示:”

(xy1)=(102013001)(xy1)\begin{pmatrix} x' \\ y' \\ 1 \end{pmatrix} = \begin{pmatrix} 1 & 0 & 2 \\ 0 & 1 & 3 \\ 0 & 0 & 1 \end{pmatrix} \begin{pmatrix} x \\ y \\ 1 \end{pmatrix}

学生们惊讶地看着这个表达式。一个学生兴奋地说:“老师,真的可以!这样我们就可以用3×3矩阵来表示平移了!”

齐次坐标

在计算机图形学中,齐次坐标是用于表示几何变换的扩展坐标系统。二维点 (x,y)(x,y) 的齐次坐标表示为 [x,y,1][x,y,1],其中第三个分量称为齐次分量。

“现在让我们来验证一下这个矩阵是否正确。”

(102013001)(xy1)=(1x+0y+210x+1y+310x+0y+11)=(x+2y+31)\begin{pmatrix} 1 & 0 & 2 \\ 0 & 1 & 3 \\ 0 & 0 & 1 \end{pmatrix} \begin{pmatrix} x \\ y \\ 1 \end{pmatrix} = \begin{pmatrix} 1\cdot x + 0\cdot y + 2\cdot 1 \\ 0\cdot x + 1\cdot y + 3\cdot 1 \\ 0\cdot x + 0\cdot y + 1\cdot 1 \end{pmatrix} = \begin{pmatrix} x+2 \\ y+3 \\ 1 \end{pmatrix}

“完美!“我拍着手说,“这个3×3矩阵确实实现了平移操作。”

“现在我们回到最初的问题:圆的平移。”

原圆:x2+y2=1x^2 + y^2 = 1 平移后的圆:(x2)2+(y3)2=1(x-2)^2 + (y-3)^2 = 1

让我用齐次坐标来重新表达这个过程:

(xy1)(102013001)(xy1)=(x+2y+31)\begin{pmatrix} x \\ y \\ 1 \end{pmatrix} \rightarrow \begin{pmatrix} 1 & 0 & 2 \\ 0 & 1 & 3 \\ 0 & 0 & 1 \end{pmatrix} \begin{pmatrix} x \\ y \\ 1 \end{pmatrix} = \begin{pmatrix} x+2 \\ y+3 \\ 1 \end{pmatrix}

然后转回普通坐标: x=x+2x=x2x' = x + 2 \Rightarrow x = x' - 2 y=y+3y=y3y' = y + 3 \Rightarrow y = y' - 3

代入原方程: (x2)2+(y3)2=1(x'-2)^2 + (y'-3)^2 = 1

“同学们,这就是我们想要的结果!”

严格证明

现在让我们来严格证明为什么齐次坐标能够表示平移。

齐次坐标变换矩阵

在二维空间中,齐次坐标的3×3变换矩阵具有形式: (abcdef001)\begin{pmatrix} a & b & c \\ d & e & f \\ 0 & 0 & 1 \end{pmatrix} 其中:

  • 前两行前两列实现线性变换(旋转、缩放、剪切)
  • 前两行第三列实现平移
  • 第三行固定为 [0,0,1][0, 0, 1]

“让我证明任意平移都可以用3×3矩阵表示。”

设平移向量为 (tx,ty)(t_x, t_y),则平变换可以表示为:

T(x,y)=(x+tx,y+ty)T(x,y) = (x + t_x, y + t_y)

对应的齐次坐标矩阵为:

M=(10tx01ty001)M = \begin{pmatrix} 1 & 0 & t_x \\ 0 & 1 & t_y \\ 0 & 0 & 1 \end{pmatrix}

验证: M(xy1)=(1x+0y+tx10x+1y+ty10x+0y+11)=(x+txy+ty1)M \begin{pmatrix} x \\ y \\ 1 \end{pmatrix} = \begin{pmatrix} 1\cdot x + 0\cdot y + t_x\cdot 1 \\ 0\cdot x + 1\cdot y + t_y\cdot 1 \\ 0\cdot x + 0\cdot y + 1\cdot 1 \end{pmatrix} = \begin{pmatrix} x + t_x \\ y + t_y \\ 1 \end{pmatrix}

“这证明了我们的方法是正确的。”

现在让我们看看如何处理圆的平移。给定一个圆的方程:

(xh)2+(yk)2=r2(x-h)^2 + (y-k)^2 = r^2

要将其平移 (tx,ty)(t_x, t_y),我们需要:

  1. 将圆上点 (x,y)(x,y) 变换为 (x+tx,y+ty)(x+t_x, y+t_y)
  2. 新圆的中心为 (h+tx,k+ty)(h+t_x, k+t_y)
  3. 新圆的方程为 (x(h+tx))2+(y(k+ty))2=r2(x-(h+t_x))^2 + (y-(k+t_y))^2 = r^2

“同学们,这个变换过程可以用矩阵完全表示。”

让我们看一个具体的例子:

例题1:将圆 (x1)2+(y+2)2=4(x-1)^2 + (y+2)^2 = 4 沿x轴正方向平移3个单位,沿y轴负方向平移1个单位。求新圆的方程。

解答

原圆:(x1)2+(y+2)2=4(x-1)^2 + (y+2)^2 = 4 中心:(1,2)(1, -2),半径:22

平移向量:(3,1)(3, -1)

新圆中心:(1+3,21)=(4,3)(1+3, -2-1) = (4, -3)

新圆方程:(x4)2+(y+3)2=4(x-4)^2 + (y+3)^2 = 4

对应的齐次坐标变换矩阵:

(103011001)\begin{pmatrix} 1 & 0 & 3 \\ 0 & 1 & -1 \\ 0 & 0 & 1 \end{pmatrix}

“现在让我们看看平移与旋转的组合。”

例题2:将单位圆 x2+y2=1x^2 + y^2 = 1 先旋转45度,再平移 (2,1)(2,1)。求最终变换的矩阵。

解答

旋转45度矩阵: R=(cos45°sin45°0sin45°cos45°0001)=(2222022220001)R = \begin{pmatrix} \cos45° & -\sin45° & 0 \\ \sin45° & \cos45° & 0 \\ 0 & 0 & 1 \end{pmatrix} = \begin{pmatrix} \frac{\sqrt{2}}{2} & -\frac{\sqrt{2}}{2} & 0 \\ \frac{\sqrt{2}}{2} & \frac{\sqrt{2}}{2} & 0 \\ 0 & 0 & 1 \end{pmatrix}

平移 (2,1)(2,1) 矩阵: T=(102011001)T = \begin{pmatrix} 1 & 0 & 2 \\ 0 & 1 & 1 \\ 0 & 0 & 1 \end{pmatrix}

组合变换矩阵: TR=(102011001)(2222022220001)T \cdot R = \begin{pmatrix} 1 & 0 & 2 \\ 0 & 1 & 1 \\ 0 & 0 & 1 \end{pmatrix} \begin{pmatrix} \frac{\sqrt{2}}{2} & -\frac{\sqrt{2}}{2} & 0 \\ \frac{\sqrt{2}}{2} & \frac{\sqrt{2}}{2} & 0 \\ 0 & 0 & 1 \end{pmatrix}

计算矩阵乘法: TR=(2222222221001)T \cdot R = \begin{pmatrix} \frac{\sqrt{2}}{2} & -\frac{\sqrt{2}}{2} & 2 \\ \frac{\sqrt{2}}{2} & \frac{\sqrt{2}}{2} & 1 \\ 0 & 0 & 1 \end{pmatrix}

“同学们注意到了吗?这个组合矩阵的前两列包含了旋转信息,第三列包含了平移信息。”

现在让我们计算一个点经过这个变换后的结果。取点 (1,0)(1,0)

  1. 先旋转45度: (1,0)(cos45°,sin45°)=(22,22)(1,0) \rightarrow (\cos45°, \sin45°) = (\frac{\sqrt{2}}{2}, \frac{\sqrt{2}}{2})

  2. 再平移 (2,1)(2,1)(22,22)(22+2,22+1)(\frac{\sqrt{2}}{2}, \frac{\sqrt{2}}{2}) \rightarrow (\frac{\sqrt{2}}{2}+2, \frac{\sqrt{2}}{2}+1)

使用齐次坐标计算:

(2222222221001)(101)=(221+(22)0+21221+220+1101+00+11)=(22+222+11)\begin{pmatrix} \frac{\sqrt{2}}{2} & -\frac{\sqrt{2}}{2} & 2 \\ \frac{\sqrt{2}}{2} & \frac{\sqrt{2}}{2} & 1 \\ 0 & 0 & 1 \end{pmatrix} \begin{pmatrix} 1 \\ 0 \\ 1 \end{pmatrix} = \begin{pmatrix} \frac{\sqrt{2}}{2} \cdot 1 + (-\frac{\sqrt{2}}{2}) \cdot 0 + 2 \cdot 1 \\ \frac{\sqrt{2}}{2} \cdot 1 + \frac{\sqrt{2}}{2} \cdot 0 + 1 \cdot 1 \\ 0 \cdot 1 + 0 \cdot 0 + 1 \cdot 1 \end{pmatrix} = \begin{pmatrix} \frac{\sqrt{2}}{2} + 2 \\ \frac{\sqrt{2}}{2} + 1 \\ 1 \end{pmatrix}

“结果完全一致!这说明我们的方法是正确的。”

例题3:求将圆 (x+1)2+(y2)2=9(x+1)^2 + (y-2)^2 = 9 进行以下变换后的新圆方程:

  1. 先缩放2倍
  2. 再旋转30度
  3. 最后平移 (3,2)(3,-2)

解答

  1. 缩放2倍矩阵: S=(200020001)S = \begin{pmatrix} 2 & 0 & 0 \\ 0 & 2 & 0 \\ 0 & 0 & 1 \end{pmatrix}

  2. 旋转30度矩阵: R=(cos30°sin30°0sin30°cos30°0001)=(3212012320001)R = \begin{pmatrix} \cos30° & -\sin30° & 0 \\ \sin30° & \cos30° & 0 \\ 0 & 0 & 1 \end{pmatrix} = \begin{pmatrix} \frac{\sqrt{3}}{2} & -\frac{1}{2} & 0 \\ \frac{1}{2} & \frac{\sqrt{3}}{2} & 0 \\ 0 & 0 & 1 \end{pmatrix}

  3. 平移 (3,2)(3,-2) 矩阵: T=(103012001)T = \begin{pmatrix} 1 & 0 & 3 \\ 0 & 1 & -2 \\ 0 & 0 & 1 \end{pmatrix}

组合变换矩阵: M=TRS=(103012001)(3212012320001)(200020001)M = T \cdot R \cdot S = \begin{pmatrix} 1 & 0 & 3 \\ 0 & 1 & -2 \\ 0 & 0 & 1 \end{pmatrix} \begin{pmatrix} \frac{\sqrt{3}}{2} & -\frac{1}{2} & 0 \\ \frac{1}{2} & \frac{\sqrt{3}}{2} & 0 \\ 0 & 0 & 1 \end{pmatrix} \begin{pmatrix} 2 & 0 & 0 \\ 0 & 2 & 0 \\ 0 & 0 & 1 \end{pmatrix}

先计算 RSR \cdot SRS=(3212012320001)(200020001)=(310130001)R \cdot S = \begin{pmatrix} \frac{\sqrt{3}}{2} & -\frac{1}{2} & 0 \\ \frac{1}{2} & \frac{\sqrt{3}}{2} & 0 \\ 0 & 0 & 1 \end{pmatrix} \begin{pmatrix} 2 & 0 & 0 \\ 0 & 2 & 0 \\ 0 & 0 & 1 \end{pmatrix} = \begin{pmatrix} \sqrt{3} & -1 & 0 \\ 1 & \sqrt{3} & 0 \\ 0 & 0 & 1 \end{pmatrix}

再计算 T(RS)T \cdot (R \cdot S)T(RS)=(103012001)(310130001)=(313132001)T \cdot (R \cdot S) = \begin{pmatrix} 1 & 0 & 3 \\ 0 & 1 & -2 \\ 0 & 0 & 1 \end{pmatrix} \begin{pmatrix} \sqrt{3} & -1 & 0 \\ 1 & \sqrt{3} & 0 \\ 0 & 0 & 1 \end{pmatrix} = \begin{pmatrix} \sqrt{3} & -1 & 3 \\ 1 & \sqrt{3} & -2 \\ 0 & 0 & 1 \end{pmatrix}

原圆中心:(1,2)(-1, 2),半径:33

缩放后半径:3×2=63 \times 2 = 6

变换后新圆中心: (313132001)(121)=(3(1)+(1)2+311(1)+32+(2)10(1)+02+11)=(32+31+2321)=(133+231)\begin{pmatrix} \sqrt{3} & -1 & 3 \\ 1 & \sqrt{3} & -2 \\ 0 & 0 & 1 \end{pmatrix} \begin{pmatrix} -1 \\ 2 \\ 1 \end{pmatrix} = \begin{pmatrix} \sqrt{3} \cdot (-1) + (-1) \cdot 2 + 3 \cdot 1 \\ 1 \cdot (-1) + \sqrt{3} \cdot 2 + (-2) \cdot 1 \\ 0 \cdot (-1) + 0 \cdot 2 + 1 \cdot 1 \end{pmatrix} = \begin{pmatrix} -\sqrt{3} - 2 + 3 \\ -1 + 2\sqrt{3} - 2 \\ 1 \end{pmatrix} = \begin{pmatrix} 1 - \sqrt{3} \\ -3 + 2\sqrt{3} \\ 1 \end{pmatrix}

所以新圆方程为: (x(13))2+(y(3+23))2=36(x - (1 - \sqrt{3}))^2 + (y - (-3 + 2\sqrt{3}))^2 = 36

化简: (x1+3)2+(y+323)2=36(x - 1 + \sqrt{3})^2 + (y + 3 - 2\sqrt{3})^2 = 36

“同学们,通过齐次坐标,我们可以用矩阵表示任意复杂的变换组合!“

结论与应用

今天我们学习了圆的平移,收获如下:

  1. 平移不是线性变换,因为不满足线性变换的性质 T(cu)=cT(u)T(c\mathbf{u}) = cT(\mathbf{u})

  2. 齐次坐标是解决问题的关键,将二维坐标扩展到三维:(x,y)[x,y,1](x,y) \rightarrow [x,y,1]

  3. 3×3矩阵可以表示平移(10tx01ty001)(xy1)=(x+txy+ty1)\begin{pmatrix} 1 & 0 & t_x \\ 0 & 1 & t_y \\ 0 & 0 & 1 \end{pmatrix} \begin{pmatrix} x \\ y \\ 1 \end{pmatrix} = \begin{pmatrix} x+t_x \\ y+t_y \\ 1 \end{pmatrix}

  4. 圆的平移:原圆 (xh)2+(yk)2=r2(x-h)^2 + (y-k)^2 = r^2 平移 (tx,ty)(t_x,t_y) 后变为 (x(h+tx))2+(y(k+ty))2=r2(x-(h+t_x))^2 + (y-(k+t_y))^2 = r^2

  5. 变换组合:多个变换可以通过矩阵乘法组合,如先旋转再平移:TRT \cdot R

“同学们,齐次坐标是计算机图形学的基础。在游戏开发、CAD设计、虚拟现实等领域,我们每天都在使用这些概念。”

“今天的作业是:给定圆 (x2)2+(y+1)2=16(x-2)^2 + (y+1)^2 = 16,要求:

  1. 先缩放0.5倍
  2. 再旋转60度
  3. 最后平移 (1,3)(-1,3) 求变换后的新圆方程,并写出完整的变换矩阵组合。”

“我相信通过今天的课程,大家对圆的平移和齐次坐标有了深入的理解!记住,数学不仅是抽象的符号,更是解决实际问题的强大工具!”

搜索