US2S1L5——齐次坐标

齐次坐标

齐次坐标是一种在计算机图形学中常用的表示坐标的方式。
它是通过引入一个额外的维度来扩展传统的笛卡尔坐标系就是将一个原本是 nn 维的向量或矩阵用 n+1n + 1 维来表示
让我们可以更方便的进行几何变换和矩阵运算

举例:
三维空间中有一个向量或点 (x,y,z)(x , y , z),它对应的齐次坐标就是给它加一维,变成 (x,y,z,w)(x , y , z , w)
其中 ww 值的改变可以让它有具有不同的含义

  1. 齐次坐标是什么

    就是将一个原本是 nn 维的向量或矩阵用 n+1n + 1 维来表示

  2. 为什么要使用齐次坐标进行矩阵运算

    1. 明确的区分向量和点
    2. 能够表示出平移变换

为什么要使用齐次坐标进行矩阵运算

  • 主要原因1:通过齐次坐标,我们可以明确的区分向量和点

    刚才的例子讲解:
    三维空间中的 (x,y,z)(x , y , z) ,它既可以表示点,也可以表示向量。
    那么我们可以利用齐次坐标给它加一维,变成 (x,y,z,w)(x , y , z , w)
    其中 w=1w = 1 时 代表是一个点,w=0w = 0 时 代表一个向量。
    这样我们就可以明确它是点还是向量了

    至于为什么要这么做,之后讲解平移变换时就知道答案了

  • 主要原因2:3×33 \times 3 矩阵不能直接表示平移变换

    (具体为什么不能,之后讲解平移变换时就知道答案了)
    3×33 \times 3 矩阵只能表示线性变换,也就是只能描述对象的旋转、缩放等线性变换,而不能描述对象的平移。

    平移涉及到改变对象在空间中的位置,包括移动对象的原点。因此,我们需要引入一个额外的维度来表示平移操作,
    所以我们使用齐次坐标来将 3×33 \times 3 矩阵加一个维度变为 4×44 \times 4 的矩阵

    • 3×33 \times 3 矩阵一般称为线性矩阵,主要处理线性变换(主要进行旋转、缩放等线性变换)
    • 4×44 \times 4 矩阵一般称为仿射矩阵,主要处理仿射变换(线性变换 + 平移变换)

补充:表示点位置的四维齐次坐标乘以非零数(标量)所映射的三维空间的点不变

对于一个表示三维空间内的点的四维齐次坐标,它乘以或者除以一个非零的数(标量),所映射的三维坐标始终是同一个坐标

因为对于一个四维齐次坐标 (x,y,z,w)(x,y,z,w) ,它实际上映射到的三维空间内的坐标是 (xw,yw,zw)(\frac{x}{w},\frac{y}{w},\frac{z}{w})

这也是为什么会将表示点的坐标的四维齐次坐标规定为 (x,y,z,1)(x,y,z,1),通过 (xw,yw,zw)(\frac{x}{w},\frac{y}{w},\frac{z}{w}) 计算得到,它映射的点正好是 (x,y,z)(x,y,z)
这也是为什么表示向量的坐标的四维齐次坐标规定为 (x,y,z,0)(x,y,z,0),它可解释为无穷远的“点”,其意义就变成了描述方向

理解了四维齐次坐标 (x,y,z,w)(x,y,z,w) 后,映射到三维空间内的坐标是 (xw,yw,zw)(\frac{x}{w},\frac{y}{w},\frac{z}{w}) 后,
设定点的坐标为 (x,y,z,1)(x,y,z,1),当我们不对点乘以一个标量时,它映射到三维空间内的坐标是 (x,y,z)(x,y,z)

当坐标乘以一个非零标量2时,新的四维齐次坐标变为 (2x,2y,2z,2)(2x,2y,2z,2),通过 (xw,yw,zw)(\frac{x}{w},\frac{y}{w},\frac{z}{w}) 得到其映射的坐标还是 (x,y,z)(x,y,z)

因此,对四维齐次坐标乘以或者除以一个非零的数(标量),所映射的三维坐标始终是同一个坐标