当前位置: 首页 > news >正文

我做动作你来猜的网站阿里云外贸建站

我做动作你来猜的网站,阿里云外贸建站,中国一级爱做电影网站,wordpress没人用文章目录 前言正文为什么需要屏幕空间变换?什么是屏幕空间变换?屏幕空间变换矩阵如何推导?问题描述步骤描述 结尾:喜欢的小伙伴点点关注赞哦! 前言 前面章节主要讲解了视图变换和投影变换,此时距离在屏幕空间显示也就…

文章目录

  • 前言
  • 正文
    • 为什么需要屏幕空间变换?
    • 什么是屏幕空间变换?
    • 屏幕空间变换矩阵如何推导?
      • 问题描述
      • 步骤描述
  • 结尾:喜欢的小伙伴点点关注+赞哦!

前言

前面章节主要讲解了视图变换和投影变换,此时距离在屏幕空间显示也就只差一步之遥了,只需要将NDC坐标转换为屏幕空间坐标即可!有了前面一些章节的学习,相信大家对于本章节的学习还是很容易的!

正文

为什么需要屏幕空间变换?

因为经过了视图变换和投影变换后,咱们已经将所有的顶点坐标转换成了NDC坐标,也就是x/y/z的范围都在 [ − 1 , 1 ] [-1,1] [1,1] 的坐标,但是正常咱们得电脑屏幕的XY坐标范围一般都是 [ 0 , w i d t h − 1 ] × [ 0 , h e i g h t − 1 ] [0,width-1] \times [0, height-1] [0,width1]×[0,height1] ,所以咱们需要屏幕空间变换!

什么是屏幕空间变换?

本质上和之前的视图变换、投影变换并无不同,就是一个矩阵罢了!

屏幕空间变换矩阵如何推导?

问题描述

将x坐标由 [ − 1 , 1 ] [-1,1] [1,1] 变换为 $ [0,screen_width - 1]$ ,将y坐标由 [ − 1 , 1 ] [-1,1] [1,1] 变换为 $ [0,screen_height - 1]$ ,将z坐标由 [ − 1 , 1 ] [-1,1] [1,1] 变换为 $ [0,1]$​.

如下图所示:

在这里插入图片描述

步骤描述

步骤1:将xyz坐标变换到 [ 0 , 1 ] [0,1] [0,1] 的范围

步骤2:将xy坐标缩放至 [ 0 , s c r e e n w i d t h − 1 ] × [ 0 , s c r e e n h e i g h t − 1 ] [0, screen_width - 1] \times [0, screen_height - 1] [0,screenwidth1]×[0,screenheight1]

咱们先思考下步骤1如何实现呢?当前的xyz坐标范围为 [ − 1 , 1 ] [-1,1] [1,1] ,目标的坐标范围为 [ 0 , 1 ] [0,1] [0,1] ,如何做呢?

这时候其实咱们分两步:

第一步:将 [ − 1 , 1 ] [-1,1] [1,1] 缩放至 [ − 0.5 , 0.5 ] [-0.5,0.5] [0.5,0.5] 的范围。

第二步:将 [ − 0.5 , 0.5 ] [-0.5,0.5] [0.5,0.5] 沿着对应轴轴方向移动0.5单位即可。

于是咱们分别得到缩放矩阵和平移矩阵如下:
S = [ 0.5 0 0 0 0 0.5 0 0 0 0 0.5 0 0 0 0 1 ] S = \begin{bmatrix} 0.5&0&0&0\\ 0&0.5&0&0\\ 0&0&0.5&0\\ 0&0&0&1\\ \end{bmatrix} S= 0.500000.500000.500001

T = [ 0 0 0 0.5 0 0 0 0.5 0 0 0 0.5 0 0 0 1 ] T = \begin{bmatrix} 0&0&0&0.5\\ 0&0&0&0.5\\ 0&0&0&0.5\\ 0&0&0&1\\ \end{bmatrix} T= 0000000000000.50.50.51

于是咱们只需要将两者相乘,即可获得相应的结果:
M 1 = T ∗ S = [ 0.5 0 0 0.5 0 0.5 0 0.5 0 0 0.5 0.5 0 0 0 1 ] M_1 = T * S = \begin{bmatrix} 0.5&0&0&0.5\\ 0&0.5&0&0.5\\ 0&0&0.5&0.5\\ 0&0&0&1\\ \end{bmatrix} M1=TS= 0.500000.500000.500.50.50.51

然后咱们思考下步骤二,当前的xy坐标范围为: [ 0 , 1 ] [0,1] [0,1] ,目标范围为 $[0,screen_width-1] 和 [0,screen_height-1] $

这个问题也就只是个xy轴的缩放问题而已,很容易得到以下缩放矩阵:
M 2 = [ s c r e e n _ w i d t h 0 0 0 0 s c r e e n _ h e i g h t 0 0 0 0 1 0 0 0 0 1 ] M_2 = \begin{bmatrix} screen\_width&0&0&0\\ 0&screen\_height&0&0\\ 0&0&1&0\\ 0&0&0&1\\ \end{bmatrix} M2= screen_width0000screen_height0000100001

然后咱们将步骤一的结果和步骤二的结果结合起来即可得到最终的屏幕空间变换矩阵,如下:
M s c r e e n = M 2 ∗ M 1 = M 2 = [ 0.5 ∗ s c r e e n _ w i d t h 0 0 0.5 ∗ s c r e e n _ w i d t h 0 0.5 ∗ s c r e e n _ h e i g h t 0 0.5 ∗ s c r e e n _ h e i g h t 0 0 0.5 0.5 0 0 0 1 ] M_{screen}= M_2 * M_1 = M_2 = \begin{bmatrix} 0.5*screen\_width&0&0&0.5*screen\_width\\ 0&0.5*screen\_height&0&0.5*screen\_height\\ 0&0&0.5&0.5\\ 0&0&0&1\\ \end{bmatrix} Mscreen=M2M1=M2= 0.5screen_width00000.5screen_height00000.500.5screen_width0.5screen_height0.51

于是大功告成啦!咱们成功的将NDC坐标转换成了屏幕空间坐标!

结尾:喜欢的小伙伴点点关注+赞哦!

你们的点赞就是我创作的最大动力!希望对各位小伙伴能够有所帮助哦,永远在学习的道路上伴你而行, 我是航火火,火一般的男人!

http://www.yayakq.cn/news/179303/

相关文章:

  • 网站页面标题设置网络推广合作平台
  • wordpress后台排版错乱怎么做企业网站优化
  • 站长工具大全微网站是什么
  • 天津优化网站哪家好用可以做兼职的网站有哪些工作室
  • 传奇广告查询网站做网站公司昆明
  • 网站 网络营销价值学校网页设计方案
  • 西安建设网站首页公司网页设计文案
  • 广东宏昌建设有限公司网站搜资源
  • 销售产品单页面网站推荐几个做网页设计的网站
  • 校园网二级网站的建设电子商务网站建设维护
  • 网站搭建哪家比较好网站界面分析
  • 三门峡高端网站建设企业运营管理平台
  • 手机上怎么制作网站吗网站找哪些单位做实名认证
  • 广州自适应网站建设济南市新闻最新消息
  • 什么叫网站的域名网站建设方案编写人
  • 湖北网站建设软件有哪些网页模板网站都有什么作用
  • 怎样做网站推广啊视频个人网站的前途
  • 晋城网站设计人免费的国外服务器
  • 怎么把做的网页放入网站微信公众平台和微网站的区别
  • dede投票类网站源码wordpress连接微博专业版
  • 以应用为导向的高职高专数学课程改革与建设 教学成果奖申报网站中文网站后台
  • 谷歌优化网站链接怎么做六盘水网站开发
  • 国际摄影作品网站如何申请一个网站 做视频
  • pc网页游戏网站wordpress演示版
  • 网站开发公司对比wordpress外汇
  • 烟台高新区规划国土建设局网站网站开发毕设参考文献
  • 沧州做网站推广揭阳专业网站设计公司
  • 沈阳做网站 熊掌号wordpress投票小工具
  • 网站文件名格式牛推网官网
  • 网站开发还有哪些江西建筑工程网