Unity中Shader 齐次坐标


前言

在之前的文章中,我们进行了正交相机视图空间转化到裁剪空间的推导。

在这篇文章中,我们进行透视相机视图空间转化到裁剪空间的推导的前置准备——齐次坐标是什么。


一、什么是齐次坐标

齐次坐标:就是将一个原本是 n 维的向量 用一个n + 1维向量来表示


二、齐次坐标增加分量 w 的意义

  • (x,y,z) -> (x,y,z,w)

1、当 w ≠ \neq = 0时:

可以把式子化简为 (x/w,y/w,z/w,1)

用(1,2,3)为例,以下式子都是等价的:

  • (1,2,3)
  • (1,2,3,1)
  • (2,4,6,2)
  • (3,6,9,3)
  • (……)

2、当 w = 0时:

(x,y,z,0)表示的是一个无穷远的点

3、用方程组,直观的看一下w的意义

  • Ax + By + C = 0(不动的那条线)
  • Ax + By + D = 0(下面移动的那条线)
  1. 若 C ≠ \neq = D,则方程无解
  2. 若 C = D,则表示的是同一直线
    请添加图片描述
  3. 此时,我们使用 x w 代替 x \frac{x}{w}代替x wx代替x, y w 代替 y \frac{y}{w}代替y wy代替y
  • A x w + B y w + C = 0 A\frac{x}{w} + B \frac{y}{w} + C = 0 Awx+Bwy+C=0
  • A x w + B y w + D = 0 A\frac{x}{w} + B \frac{y}{w} + D = 0 Awx+Bwy+D=0

->

  • A x + B y + C w = 0 Ax + By + Cw = 0 Ax+By+Cw=0
  • A x + B y + D w = 0 Ax + By + Dw = 0 Ax+By+Dw=0

若C ≠ \neq =D,则有唯一解(x,y,0)
若w = 0,表示的点是无穷远处

相关推荐

  1. 矩阵的理解深入和在图形学、Unity的应用

    2023-12-27 17:54:01       47 阅读
  2. unity屏幕坐标转UI坐标

    2023-12-27 17:54:01       44 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2023-12-27 17:54:01       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2023-12-27 17:54:01       106 阅读
  3. 在Django里面运行非项目文件

    2023-12-27 17:54:01       87 阅读
  4. Python语言-面向对象

    2023-12-27 17:54:01       96 阅读

热门阅读

  1. init_appium_and_devices 的实现思路分析

    2023-12-27 17:54:01       60 阅读
  2. 【vim编辑器的使用】

    2023-12-27 17:54:01       62 阅读
  3. Vue中使用require.context自动引入组件的方法介绍

    2023-12-27 17:54:01       54 阅读
  4. Hive-数据模型详解(超详细)

    2023-12-27 17:54:01       58 阅读
  5. 数据结构-怀化学院期末题(59)

    2023-12-27 17:54:01       54 阅读
  6. $bus的用法 vue

    2023-12-27 17:54:01       47 阅读
  7. Spring 表达式expression

    2023-12-27 17:54:01       49 阅读
  8. 相机FOV是什么英文单词的缩写,是什么意思。

    2023-12-27 17:54:01       56 阅读
  9. 前端axios与python库requests的区别

    2023-12-27 17:54:01       59 阅读
  10. effective c++ 笔记 导读/条款2-4

    2023-12-27 17:54:01       51 阅读