【计算机图形学01】坐标变换

这篇具有很好参考价值的文章主要介绍了【计算机图形学01】坐标变换。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

  1. 坐标系统

         将坐标变换为标准化设备坐标,接着再转化为屏幕坐标的过程通常是分步进行的,也就是类似于流水线那样子。在流水线中,物体的顶点在最终转化为屏幕坐标之前还会被变换到多个坐标系统(Coordinate System)。将物体的坐标变换到几个过渡坐标系(Intermediate Coordinate System)的优点在于,在这些特定的坐标系统中,一些操作或运算更加方便和容易,这一点很快就会变得很明显。对我们来说比较重要的总共有5个不同的坐标系统

  • 局部坐标系
  • 世界坐标系
  • 观察坐标系
  • 裁剪坐标系
  • 屏幕坐标系

    【计算机图形学01】坐标变换

 局部坐标系->模型矩阵变换->世界坐标系->视图矩阵变换->相机坐标系->投影矩阵->裁剪坐标系->视口变换->屏幕坐标


【计算机图形学01】坐标变换


【计算机图形学01】坐标变换


  1. 局部空间坐标系/物体空间坐标系/模型空间坐标系

                局部空间是指物体所在的坐标空间,即对象最开始所在的地方.

  1. 局部模型矩阵变换 

                子模型矩阵的缩放S,平移T,旋转R矩阵。(先做缩放线性变换再平移旋转)

缩放矩阵      

【计算机图形学01】坐标变换

平移矩阵

【计算机图形学01】坐标变换

旋转矩阵

        绕X轴旋转

        【计算机图形学01】坐标变换

        绕Y轴旋转

        【计算机图形学01】坐标变换

        绕Z轴旋转

【计算机图形学01】坐标变换


  1. 世界空间坐标系

        一旦对物体进行了建模,下一步就是将各个对象或者图形组合放到我们希望绘制的平面场景中。如上所述,每一个对象在创建时都有自身的建模坐标系,当我们将其组合放置在一起时,为了确定每一个对象的位置及其他对象的相对位置,就必须抛弃每一个对象自身的坐标系,将其纳入到一个统一的坐标系中,这个坐标系称为世界坐标系,也称用户坐标系,它是一个全局坐标系,也是一个典型的平面直角坐标系。这个过程实质上是将一个物体从局部空间组合装配到世界空间的变换过程。

  1. 视图变换矩阵

  • 视图矩阵

    原点为e向量

    看物体的方向g向量

    向上看的t向量

    【计算机图形学01】坐标变换

    把摄像机(观察者)坐标系变换到原点

    【计算机图形学01】坐标变换

     具体矩阵R为正交矩阵所以R的逆矩阵=R的转置矩阵

    【计算机图形学01】坐标变换


     

            在模型矩阵中,我们关心的是空间中的点在经历变换后在世界坐标系下的位置。事实上,我们更加关心空间中的点相对于观察者的位置。最简单的方案是将观察者置于原点处,面向z轴(或x轴、y轴)正半轴,那么空间中的点在世界坐标系下的位置就是其相对于观察者的位置。 
            观察者的位置和方向会变化,看上去就好像整个世界的位置和方向发生变化了一样,所以解决的方案很简单,将世界里的所有模型看作一个大模型,在所有模型矩阵的左侧再乘以一个表示整个世界变换的模型矩阵,就可以了。这个表示整个世界变换的矩阵又称为“视图矩阵”,因为他们经常一起工作,所以将视图矩阵乘以模型矩阵得到的矩阵称为“模型视图矩阵”。模型视图矩阵的作用是:乘以一个点坐标,获得一个新的点坐标,获得的点坐标表示点在世界里变换,同时观察者也变换位置,观察者也变换后,点相对于观察者的位置。

            视图矩阵同样也可以分为平移、旋转和缩放,视图矩阵是将观察者视为一个模型,获得的观察者在世界中变换的模型矩阵的逆矩阵(这里可以看成观察者不移动,但是世界相对观察者运动)。

            相机平移了(tx,ty,tz),视图矩阵如下,可以看出如果将视图矩阵看作整个世界的模型矩阵,相当于整个世界平移了(-tx,-ty,-tz)。

            相机绕z轴旋转了角度θ,视图矩阵如下,相当于整个世界绕z轴旋转了-θ度。

            相机在三个方向等比例缩小了s倍,视图矩阵如下,相当于整个世界放大了s倍。

            一个模型可能由多个较小的子模型组成,模型自身有其模型矩阵,而子模型也有自己的局部模型矩阵


  1. 观察空间坐标系/视觉空间坐标系/相机空间坐标系

        观察空间经常被人们称之OpenGL的摄像机(Camera)(所以有时也称为摄像机空间(Camera Space)或视觉空间(Eye Space))。观察空间是将世界空间坐标转化为用户视野前方的坐标而产生的结果。因此观察空间就是从摄像机的视角所观察到的空间。而这通常是由一系列的位移和旋转的组合来完成,平移/旋转场景从而使得特定的对象被变换到摄像机的前方。

  1. 投影矩阵

        正交投影

            正交投影就是摄像机在原点,看向-z方向,顶部在y方向,在看向物体时将所有物体的z值归0,然后将物体平移并缩放到[-1,1]^2之间。

        [左,右],[下,上],[远,近]        把模型正交投影到世界坐标下的正方体上

【计算机图形学01】坐标变换

 【计算机图形学01】坐标变换

        透视投影   

             简而言之,透视投影就是近大远小,平行线也会变得不平行,人们眼睛所看到的就是透视投影的结果。

空间上为圆锥:

【计算机图形学01】坐标变换

摄像机为坐标轴的放射出一个四棱锥中的点上的近平面与远平面的空间图:

【计算机图形学01】坐标变换

二维图: 


【计算机图形学01】坐标变换

远近平面形成两个三角形,且这两个三角形互为相似三角形

故:

【计算机图形学01】坐标变换

 同理

        【计算机图形学01】坐标变换

在其次坐标系中近平面上的向量可以写作:

 【计算机图形学01】坐标变换

 近平面的向量写作矩阵形式为:

【计算机图形学01】坐标变换【计算机图形学01】坐标变换【计算机图形学01】坐标变换

       由于任何在近平面上的点是不会变的。
       任何在远平面的点的z值也不会变。

故:

【计算机图形学01】坐标变换

         由于其他三行的值都已知,所以现在只用算第三行的值。又因为由近平面得出的第三行为n^2,所以可确定透视变正交矩阵第三行的前两维为0,所以可得:

 【计算机图形学01】坐标变换

 可得:

【计算机图形学01】坐标变换

同理远平面

【计算机图形学01】坐标变换

 【计算机图形学01】坐标变换

 联立连个方程可得:

【计算机图形学01】坐标变换

 求出投影矩阵的压缩矩阵

【计算机图形学01】坐标变换

 透视投影矩阵就等于正交投影矩阵乘以透视变正交矩阵

【计算机图形学01】坐标变换


  1. 裁剪空间坐标系

    ​​​​​​

    【计算机图形学01】坐标变换

        在一个顶点着色器运行的最后,OpenGL期望所有的坐标都能落在一个特定的范围内,且任何在这个范围之外的点都应该被裁剪掉(Clipped)。被裁剪掉的坐标就会被忽略,所以剩下的坐标就将变为屏幕上可见的片段。这也就是裁剪空间(Clip Space)名字的由来。

  1. 视口变换

        在我们做完投影变换后所有物体都映射在标准坐标系中,但是屏幕会有各种各样的分辨率,所以视口变换是为了将正常设备坐标映射到屏幕坐标。

        假设屏幕的宽为width,高度为height,那么视口变换就是把[-1,1]^2的xy平面变到[0,width]x[0,height],这里为什么没有考虑z轴的变换是因为z轴在之后的其他地方有用。
根据上述可得出视口变换矩阵为:

        【计算机图形学01】坐标变换

  1. 屏幕空间坐标系/设备坐标系统

        【计算机图形学01】坐标变换文章来源地址https://www.toymoban.com/news/detail-496072.html

到了这里,关于【计算机图形学01】坐标变换的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 计算机图形学 | 变换与观察

    华中科技大学《计算机图形学》课程 MOOC地址:计算机图形学(HUST) 回顾几何阶段 整体流程: 这其中存在3种变换: 坐标系的变换 模型本身的运动 观察者的运动 几何变换 以上各种变换都可以通过以下变换的复合来计算: 平移 比例 旋转 对称 错切 图形的几何变换是指对图

    2023年04月27日
    浏览(44)
  • 【计算机图形学】图形变换(以任意直线为对称轴的对称变换)

    模块3-2 图形变换 一 实验目的 编写图形各种变换的算法 二 实验内容 1 :任意直线的对称变换。要求将变换矩阵写在实验报告中,并与代码匹配。求对任意直线Ax+By+C=0的对称变换矩阵。 实验结果如下图所示: 1:预设图形初始化 2:鼠标左键点击直线起点 3:鼠标右键点击直线

    2024年02月01日
    浏览(57)
  • 计算机图形学:二维图形的几何变换(算法原理及代码实现)

    对于一个二维图形作平移、旋转、放缩变换,可以转换为在二维坐标系中图形的所有点分别可以对应到在x,y轴方向分别平移tx,ty(平移)、绕一点旋转固定的角(旋转)、在x,y轴方向分别放缩sx,sy倍。 对于变换的原理,只需要将原图形的点通过极坐标或者相加、相乘,再

    2024年02月11日
    浏览(48)
  • 计算机视觉 图像形成 几何图形和变换 3D到2D投影

            现在我们知道如何表示2D和3D几何图元以及如何在空间上转换它们,我们需要指定如何将 3D图元投影到图像平面上。 我们可以使用线性3D到2D投影矩阵来做到这一点。最简单的模型是正交法,它不需要除法就可以得到最终的(不均匀的)结果。更常用的模型是透视,

    2023年04月08日
    浏览(57)
  • 【计算机视觉】二、图像形成:1、向量和矩阵的基本运算:线性变换与齐次坐标

    x = [ x y ] boldsymbol{x} =begin{bmatrix}x\\\\yend{bmatrix} x = [ x y ​ ] 1. 平移变换 [ x ′ y ′ ] = [ x y ] + [ a b ] begin{bmatrix}x\\\'\\\\y\\\'end{bmatrix} = begin{bmatrix}x\\\\yend{bmatrix} + begin{bmatrix}a\\\\bend{bmatrix} [ x ′ y ′ ​ ] = [ x y ​ ] + [ a b ​ ]   将向量 [ a b ] begin{bmatrix}a\\\\bend{bmatrix} [ a b ​ ] 加到 [

    2024年03月17日
    浏览(45)
  • 计算机图形图像技术(OpenCV核心功能、图像变换与图像平滑处理)

    1、显示图像 ①功能:在指定窗口中显示图像。 ②参数: name 为窗口的名字; image 为待显示的图像。 ③说明:可显示彩色或灰度的字节图像和浮点数图像,彩色图像数据按BGR顺序存储。 2、读入图像 ①功能:从指定文件读入图像。 ②参数: filename 为图像文件名,支持BMP、

    2024年02月03日
    浏览(46)
  • 【计算机图形学算法工具技巧】用Blender查看三维点云ply文件的点的序号和坐标

    因为用最近在学拉普拉斯曲面编辑的算法,需要查看三维点云ply文件的点的序号和坐标,然后固定或移动这些点的坐标。 这里介绍使用Blender 3.2软件查看三维点云ply文件的点的序号和坐标。 导入ply文件 隐藏不必要的物体(如cube),并将物体模式变成编辑模型!! 选择 gemo

    2024年02月13日
    浏览(71)
  • 计算机图形硬件(二) 5 - 2 光栅扫描系统

    2.1视频控制器 图2.17给出了常用的光栅系统组织。缓存使用系统存储器的固定区域且由视频控制器直接访问。          帧缓存的位置及相应的屏幕位置均使用笛卡儿(Cartesian)坐标。应用程序使用图形软件包的命令来设定显示对象相对于笛卡儿坐标系原点的坐标位置。尽管

    2024年02月11日
    浏览(40)
  • 计算机专业毕业设计项目推荐01-生产管理系统(JavaSpringBoot+原生Js+Mysql)

    本系列(后期可能博主会统一为专栏)博文献给即将毕业的计算机专业同学们,因为博主自身本科和硕士也是科班出生,所以也比较了解 计算机专业 的 毕业设计流程以及模式 ,在编写的过程中可以说几乎是参照 毕业设计目录样式 来进行的. 博主分享的基本都是自己接触过的项目

    2024年02月09日
    浏览(40)
  • 【计算机图形学】二维图形裁剪算法

    Cohen-Sutherland算法 Cohen-Sutherland是最早最流行的算法。 核心思想:通过 编码测试 来减少计算交点的次数。(编码算法) 1. 区域码: 线段端点以区域赋值以四位二进制码。 编码顺序:四位从右到左分别为:左边界、右边界、下边界、上边界。 编码值:落在相应位置为1,否则

    2024年02月02日
    浏览(58)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包