计算机图形与OpenGL学习六(二维观察1.二维观察流水线、裁剪窗口、规范化和视口变换)

原创 2018年04月15日 19:41:27

二维观察

1.   二维观察流水线

1.1概念

1)      裁剪窗口(ClippingWindow):二维场景中要显示的窗口,所有在此区域之外的场景均要裁去。

  •          又称为世界窗口或观察窗口,简称窗口
  •          在世界坐标系(又称用户坐标系)内定义

2)      视口(Viewport):指显示设备上用来显示图形区域,又称视区,在设备(屏幕)坐标系内定义

3)       裁剪(Clip):从场景中确定位于窗口内的图形

1.2    裁剪窗口和观察坐标系的关系

要将窗口内的图形在视口中显示出来,必须经过将窗口到视口的变换处理(世界坐标系到设备坐标系的变换,也称二维观察变换

 

 

1.3    规范化坐标系和观察坐标系的关系:

  •   观察坐标系是根据窗口方向和形状在世界坐标平面中定义的直角坐标系

  •   规格化坐标系也是直角坐标系,它是将二维的坐标系规格化到(0.0,0.0)到(1.0,10.)的坐标范围内形成的,规格化坐标系是为了使观察处理独立于输出设备。

1.4 二维观察流程


裁剪工作通常在规范化设备坐标系中进行,这样这使我们可以在此之前合并变换矩阵从而减少计算时间。

一个实例如下:

2.   裁剪窗口

2.1 观察坐标系裁剪窗口

    二维观察变换的一般方法是在世界坐标系中制定一个观察坐标系。以该坐标系为参考,通过选定方向和位置来指定矩形裁剪窗口

 

观察坐标系变换成与世界坐标系重合的步骤

1)      将观察坐标系原点移动到与世界坐标系原点重合(平移变换,如下图a)

 

2)      旋转观察坐标系使其与世界坐标系重合(旋转变换,如下图b)

具体变换过程,请参照上篇博文,地址:

https://blog.csdn.net/lhs322/article/details/79950700   

3.   规范化和视口变化

很多图形系统都是将规范化和窗口-视口转换合并成一步,即直接通过裁剪窗口转换为规范化视口。

3.1 裁剪窗口到规范化视口的映射

    首先定义一个规范化视口,其规范坐标值从0到1。按点的变换方式将对象描述变换到该视口。如果对象在观察坐标系中心,则它必然也显示在规范化视口的中心。下图中,窗口内的点(xw,yw)映射到对应视口的点(xv,yv)

为了保持视口与窗口中对象具有同样的相对位置,即将裁剪窗口等比例缩放,再对应到同样位置,可以以一下两步进行:

1)      可以先以点(xwmin,ywmin)为固定点进行缩放,缩放到规范化视口大小

2)      将(xwmin,ymin)移到(xvmin,yvmin)

第一步,以(xwmin,ywmin)为固定点进行缩放,其矩阵为:

为确定缩放系数Sx,Sy,我们可以做一下推导:

若要保证缩放后的对象具有同样的相对位置,那么

第二步中,平移矩阵为:

所以变换到规范化视口的符合矩阵为:

 

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/lhs322/article/details/79952196

透视投影的原理和实现

透视投影的原理和实现by Goncely 摘  要 :透视投影是3D渲染的基本概念,也是3D程序设计的基础。掌握透视投影的原理对于深入理解其他3D渲染管线具有重要作用。本文详细介绍了透视投影的原理和算...
  • wong_judy
  • wong_judy
  • 2011-03-28 11:10:00
  • 37273

系统学习深度学习(四) --CNN原理,推导及实现源码分析

之前看机器学习中,多层感知器部分,提到可以在设计多层感知器时,对NN的结构设计优化,例如结构化设计和权重共享,当时还没了解深度学习,现在看到CNN,原来CNN就是这方面的一个代表。CNN由纽约大学的Y...
  • App_12062011
  • App_12062011
  • 2017-01-12 09:10:44
  • 15009

OpenGL从1.0开始--二维观察

正本清源,这一节我们重新来给大家解释下OpenGL如何实现图元在屏幕上的显示功能。#include class wcPt2D { public: GLfloat x, y; }; void ...
  • wudiliyao
  • wudiliyao
  • 2017-11-16 17:43:37
  • 131

Direct3D几何流水线由世界变换、观察变换、投影变换和视口变换几个部分组成。

Direct3D几何流水线由世界变换、观察变换、投影变换和视口变换几个部分组成。 一、坐标空间 1.1 局部坐标系 用于描述物体自身属性的独立坐标系,它相对于物体中心位置构成一个模型...
  • human_cn
  • human_cn
  • 2012-05-11 23:25:01
  • 737

卷积神经网络的原理公式推导与实现

这个主要是CNN的推导和实现的一些笔记,再看懂这个笔记之前,最好具有CNN的一些基础。这里也先列出一个资料供参考: [1] Deep Learning(深度学习)学习笔记整理系列之(七) ...
  • gogoky
  • gogoky
  • 2016-05-16 11:30:18
  • 2994

投影矩阵的推导(Deriving Projection Matrices)(转)

概述: 什么是投影? 计算机显示器是一个二维表面,所以如果你想显示三维图像,你需要一种方法把3D几何体转换成一种可作为二维图像渲染的形式。那也正是投影做的。拿一个简单的例子来说,一种把...
  • gggg_ggg
  • gggg_ggg
  • 2015-05-25 14:38:46
  • 3313

计算机图形学Opengl实现二维图形的…

实现了一个矩形在窗口中匀速转动(单击鼠标右键停止转动),请首先读懂代码,再修改代码,实现矩形在窗口内沿着水平线匀速移动。为了实现这类要求,要做的就是将已经给出的旋转的代码块部分修改为平移的实现方法,完...
  • CHINAonlyQiu
  • CHINAonlyQiu
  • 2013-08-23 15:07:50
  • 1855

OpenGL中的空间变换

OpenGL中的空间变换          在使用OpenGL的三维虚拟程序中,当我们指定了模型的顶点之后,在屏幕上显示它们之前,一共会发生3种类型的变换:视图变换、模型变换、投影变换。 ...
  • Haohan_Meng
  • Haohan_Meng
  • 2014-05-13 22:43:20
  • 2282

视觉里程计问题的公式推导

视觉里程计问题的公式推导   假设在时间k,通过相机移动,追踪环境图像。如果是单目相机,k时间上拍摄的一组图像表示为I0:n={I0,…,In}。如果是立体相机,每个时刻有左右两幅图像,记为Il...
  • u012525173
  • u012525173
  • 2017-04-21 17:19:50
  • 2282

机器学习复习

七月的博客还有很多数据结构基础知识,很多面试题,写的非常好,其七月在线app很多课程也很不错。 这只是部分题,后面还有题目。见http:/...
  • MOVIE14
  • MOVIE14
  • 2018-02-21 20:41:10
  • 2935
收藏助手
不良信息举报
您举报文章:计算机图形与OpenGL学习六(二维观察1.二维观察流水线、裁剪窗口、规范化和视口变换)
举报原因:
原因补充:

(最多只允许输入30个字)