- 1、本文档共62页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第7章 二维观
第7章 二维观察 本章目标 理解二维图形的绘制过程 图形裁剪方法 窗口到视区的变换 学会使用OpenGL的显示函数 主要内容 二维观察流水线 窗口到视区的变换 OpenGL二维观察函数 裁剪 直线段裁剪 多边形裁剪 字符裁剪 7.1 二维观察流水线 几个概念 裁剪窗口(Clipping Window) :需要显示的场景区域 又称为世界窗口或观察窗口,简称窗口 在世界坐标系(又称用户坐标系)内定义 视口(Viewport):指显示设备上用来显示图形的区域 又称视区,在设备(屏幕)坐标系内定义 裁剪(Clip):从场景中确定位于窗口内的图形 7.1 二维观察流水线 裁剪窗口和视区的关系 改变视口位置可以在输出设备的不同位置上观察物体 使用多个视口可以在屏幕不同的位置观察场景的不同部分 改变视口的尺寸达到改变显示对象的多少 改变视口的尺寸达到放大对象 7.1 二维观察流水线 二维观察变换 二维世界坐标系场景描述到设备坐标系的映射 又称为窗口到视区的变换或窗口变换 二维图形的显示流程 7.2 窗口到视区的变换 目标 将窗口之中的图形变换到视区中 变换的计算 变换的分解与合成 窗口 (xmin, ymin) : 长度(Ex); 宽度(Ey) 视区 (umin, vmin) : 长度(Eu); 宽度(Ev) 7.2 窗口到视区的变换 步骤 在世界坐标系中,平移使(xmin, ymin)至坐标原点,变换为T (-xmin, -ymin) 放缩使窗口的大小与视区相等,变换为S(Eu/Ex, Ev/Ey) 在设备坐标系中,平移使窗口与视区重合,变换为T (umin, vmin) 7.2 窗口到视区的变换 变换矩阵 7.3 OpenGL二维观察函数 流程 程序窗口- 裁剪窗口- 视区 GLUT显示窗口 初始化:glutInit(argc, argv); //参数与main函数一致 位置:glutInitWindowPosition(xTopLeft, yTopLeft); 大小:glutInitWindowSize(dwWidth, dwHeight); 建立:glutCreateWindow(“Title of Display Windows”); 模式:glutInitDisplayMode(mode); 选择颜色和缓存,如GLUT_RGB|GLUT_SINGLE 背景颜色:glClearColor(red, green, blue, alpha) 参数与选择的颜色模式相关,取值在0和1之间 7.3 OpenGL二维观察函数 投影模式 OpenGL专门为三维应用而设计,但将三维观察函数应用于二维观察 应用方法 glMatrixMode(GL_PROJECTION); //指定投影矩阵为当前矩阵 glLoadIdentity(); //初始化 GLU裁剪窗口函数 定义函数:gluOrtho2D(left,right,bottom,top); 功能:将场景映射到屏幕的正交投影 参数为4个平面(3维) 默认大小为(-1,1,-1,1) 7.3 OpenGL二维观察函数 OpenGL视口函数 定义函数:glViewport(xvmin,yvmin,vpwidth,vpheight); 视口为矩形 在视口内绘制图形对象 指定显示内容函数:glutDisplayFunc(pictureDescrip) pictureDescrip为回调函数,主要绘制图形 启动程序 glutMainLoop() 7.3 OpenGL二维观察函数 实例7-1 7.3 OpenGL二维观察函数 实例7-1(续) 7.3 OpenGL二维观察函数 实例7-1(续) 7.3 OpenGL二维观察函数 问题 图形越出视口? 只绘制视口内 还是全绘制? 7.4 裁剪 流程 扫描转换+裁剪 算法简单 裁剪---〉扫描转换 最常用,节约计算时间 7.4 裁剪 裁剪(clip) 判断图形元素是否落在裁剪窗口之内并找出其位于内部的部分 裁剪处理的主要步骤 图元关于窗口内外关系的判别 图元与窗口的求交 假定条件 矩形裁剪窗口: [xmin, ymin]-[xmax, ymax] 主要内容: 线段、多边形裁剪 7.5 直线段裁剪 待裁剪线段 待裁剪线段和窗口的关系 线段完全可见:端点位于窗口内 显然不可见 :端点位于边界同侧 线段至少有一端点 在窗口之外,但非显然 不可见 7.5.1 点裁剪 线段的特殊情况 两端点重合 点(x, y)在窗口内的充分必要条件是 7.5.2 直接求交算法 端点与窗口位置关系 都在窗口内(完全可见) 1个在窗口内,另一个在外 (有1个交点) 2个都不在窗口内 可能相交 可能不相交 7.5
文档评论(0)