• 线性代数之齐次坐标


    本文解释为何齐次坐标可用来实现平移

    解释1:标准变换矩阵

    齐次坐标的标准变换矩阵可写为[T(e1)  T(e2)  T(e3)]

    T(e1)=[1 0 0]T

    T(e2)=[0 1 0]T

    T(e3)=[h k 1]T

    可以看出,e1、e2在变换后都维持不变;而e3变换为[h k 1]T

    我们知道,矩阵与向量的乘法可看作以向量各元素为权对矩阵各列的线性组合。

    用齐次坐标完成的平移变换矩阵就是将z向坐标(1)分别乘以h和k(加权)然后加到x方向和y方向上(线性组合)。

    或者说,由于向量加法不是线性变换,所以我们需要额外的一维,利用这额外的一维,将“加法(非线性变换)”变换为“加权的线性组合(线性变换)”。

    解释2:从二维到三维

    我们已经知道,所有的矩阵变换都是线性变换,所以齐次坐标下的平移也是线性变换。

    让我们从一维平移说起。为了实现一维平移,我们需要二维变换矩阵:

    我们发现这实际上就是二维水平剪切的变换矩阵。将其效果写成向量乘法形式:

                                                                                                                                                                                              

    可以看出,二维剪切不改变某个点的y坐标,而将x坐标移动ky距离(x变换为x+ky)。当y=1时,x方向的平移距离就是k。这和二维剪切图形的直观效果是一致的。若将上述内容推广到更高维度,那就是N+1维的剪切在N维产生平移的效果。反过来就是,为了实现N维的平移,我们可以在N+1维对齐次坐标做剪切。

  • 相关阅读:
    前端面试详解
    nodejs mysql模块简单封装
    关于python字符串拼接的几种方法
    JavaScript递归简单实现个对象深拷贝
    HTTP协议类
    dom事件类
    css之浮动
    Less主要用法
    js中控制流管理的四种方法
    js for in 和 for of 的区别
  • 原文地址:https://www.cnblogs.com/byeyear/p/5149696.html
Copyright © 2020-2023  润新知