图形学笔记一

来源:互联网 发布:新浪微博绑定淘宝 编辑:程序博客网 时间:2024/06/01 19:36

一、概述

学习的课本是电子工业出版社的《计算机图形学第四版》。这里记录一下学习本书过程中遇到的重点内容。前两章都是对图形学和硬件的科普性质的综述,我们从第三章开始mark。
计算机图形学

二、第三章 计算机图形软件

本书使用的是openGL图形库,所以这一章就简要介绍了一下openGL。

(1)openGL渲染管线中的坐标转换(P27)
局部/建模/主坐标系->世界坐标系->观察和投影坐标系->屏幕坐标系
(local/model->world->view projection->screen)

(2)glut(P30)
glut(OpenGL Utility Toolkit),openGL实用工具包,提供了与任意屏幕窗口系统进行交互的函数库,使我们的程序与设备无关。

三、第四章 输出图元

(1)凸多边形和凹多边形(P44)
1.定义:所有内角均小于180°的就是凸多边形。其他则为凹多边形。
2.识别凹多边形:按逆时针方向,通过连续两边向量的叉乘来识别凹多边形。只要有一个结果为负,则这个多边形就是凹多边形。
3.分割凹多边形:向量法和旋转法(本质上是同一种方法)。

(2)二维边界的内外测试(P46)
1.奇偶规则:从任意点P发射一条足够远的射线(不经过图元的顶点),与图元相交的边数为奇数,则为内部点。偶数则为外部点。
2.非零环绕数规则:依次连接图元的顶点。从任意点P发射一条足够远的射线(不经过图元的顶点),与从左到右的边相交边数减1,与从右到左的边相交边数加1。最终边数非0则为内部点,反之则为外部点。
3.上述两条规则并不等价,存在图元,使用两种规则得到的内部和外部区域不同的情况。

(3)平面方程(P49)
1.Cramer规则:假设平面方程为Ax+By+Cz+D=0,给定任意三点(x1,y1)(x2,y2)(x3,y3),通过行列式可计算出A,B,C,D的值,进而得到平面方程。
2.三维边界的内外检测:Ax+By+Cz+D>0,则点在平面外部,反之则在平面内部。
3.平面的法向量:逆时针方向连续两边的向量叉乘即为平面的法向量。假设法向量为N,则N·(x-x1,y-y1,z-z1)=0是平面方程的向量形式。

(4)openGL顶点数组(P56)
使用顶点数组可以提高效率。

(5)openGL像素阵列函数(P58)
1.glBitmap、glDrawPixels、glDrawBuffer等,将像素阵列写入到指定缓存中,比如颜色缓存、深度缓存等。(TODO)
2.DoubleBuffer(双缓冲技术):正常情况刷新帧时,需要先用背景色填充画布再绘制新的图像,就可能会出现闪烁现象。双缓冲就是现在缓冲区绘图,当需要更新帧画面时,直接将缓冲区的值拷贝到画布上,避免了闪烁的情况。

(6)openGL光栅操作(P60)
glReadPixels,glReadBuffer,glCopyPixels,glDrawBuffer等。(TODO)

(7)字符图元(P62)
1.保存字符主要有两种方式:位图字体/光栅字体,即使用位图来保存某个字的矩形网格图案;轮廓字体/笔画字体,即使用直线和曲线来描述字符形状。
前者的好处是简单,需要显示时直接将网格位图赋值到帧缓存的指定位置即可,缺点是占用的空间过多,且改变大小会增加粗糙程度。
后者的好处是增加大小字符不会变形,需要的空间较少,但缺点是在赋值到帧缓存之前需要对轮廓字体进行处理。

(8)openGL显示表(64)
glGenLists,glNewList,glEndList,glCallList,glDeleteList等。

四、第五章 图元的属性
(这一章介绍的是openGL中的一些细节,后面有空再看~)

五、第六章 实现图元及属性的算法

0 0
原创粉丝点击