计算机图形学
1计算机图形学综述
计算机图形学的研究内容
-
如何在计算机中表示图形
- 图形通常由点、线、面、体等几何元素和灰度、色彩、线型、线宽等非几何属性组成
-
如何利用计算机进行图形的生成、处理和显示的相关原理与算法
从处理技术上来看,图形主要分为两类
- 由线条组成的图形,如工程图、等高线地图、曲面的线框图等
- 类似于照片的明暗图(Shading),也就是通常所说的真实感图形
主要内容
-
计算机辅助设计
-
图示图形学
-
计算机艺术
-
娱乐
-
教学和培训
-
可视化
-
图像处理
-
图形用户界面
-
典型的图形用户界面包括
- 一个窗口管理器
- 菜单显示
- 图标
-
2图形系统综述
视频显示设备
-
图形系统一般使用视频显示器作为基本的输出设备,主要的视频显示器设备有:
- 刷新式CRT(阴极射线管)、光栅扫描显示器、随机扫描显示器、彩色CRT监视器、直视存储管、
平板显示器、三维观察设备、立体感和虚拟现实系统
- 刷新式CRT(阴极射线管)、光栅扫描显示器、随机扫描显示器、彩色CRT监视器、直视存储管、
光栅扫描系统
随机扫描系统
图形监视器与工作站
※输入设备
-
有多种设备用于图形工作站的数据输入:
- 键盘
- 鼠标
- 跟踪球和空间球
- 操纵杆
- 数据手套
- 数字化仪
- 图像扫描仪
- 触摸板
- 光笔
- 声音系统
※硬拷贝设备
-
35-mm幻灯片
-
投影胶片
-
打印机
-
打印机以击打式或非击打式产生输出
- 击打式打印机隔着色带将某种格式的字符压在纸上
- 非击打式打印机和绘图仪使用激光技术、喷墨技术、复印处理、静电方式和电热方式,把图像印在纸上
-
-
绘图仪
图形软件
-
图形软件通常分为两类
- 通用编程软件包
- 专用应用软件包
3输出图元
1.点和线
-
如何绘制点?
- 通过将应用程序提供的单个坐标位置转换成输出设备的相应操作,可以进行点的绘制
-
如何绘制线?
- 通过计算沿路径上两指定端点间的中间位置,可以绘制一条线段
※2画线算法
- DDA算法
- Bresenham画线算法
3.帧缓冲的装载
*4.画线函数
※5.圆生成算法
- 圆的特性
- 中点圆算法
※6.椭圆生成算法
- 椭圆特征
- 中点椭圆算法
7.其他曲线
8.并行曲线算法
9.曲线函数
10.像素编址和物体的集合表示
11.填充区域图元
-
扫描线多边形填充算法
-
※内外测试
-
奇偶规则
- 从任何位置点P到对象坐标范围以外的远点画一条射线,统计沿该射线与各边的交点数目。
如果交点数为奇数,P是内部点。
如果交点数为偶数,P是外部点。
- 从任何位置点P到对象坐标范围以外的远点画一条射线,统计沿该射线与各边的交点数目。
-
非零环绕数规则
- 该方法统计多边形边以逆时针方向环绕某一特定点的次数,这个数称为环绕数。将二维物体的内部点定义为具有非零值的环绕数
- 初始化环绕数为0,若从左往右穿过射线+1,从右往左穿过射线减1,内部点环绕数非零
-
特殊情况
- 穿过一个点时,若两边在射线同测则算2,在异侧则算1
-
-
曲线边界区域的扫描线填充
-
※边界填充算法
-
区域填充的另一种方法是从区域的一个内部点开始,由内向外绘制点直到边界
-
假如边界是以单一颜色指定的,则填充算法可逐个像素地向外处理,直至遇到边界颜色。这种方法称为边界填充算法
- 边界填充程序接收作为输入的内部点(x ,y)的坐标、填充颜色和边界颜色。
- 从(x ,y)开始,程序检测相邻位置以确定其是否是边界颜色,如果不是,就用填充颜色涂色,并检测其相邻位置。
- 这个过程延续到检测完区域边界颜色范围内的所有像素为止。
-
4连通区域、8连通区域
-
逼近法
- 利用堆栈,一次填充一行,不可穿墙
-
-
泛滥填充算法
-
有时,我们要对一个不是用单一颜色边界定义的区域进行填充(或重新涂色)
-
通过替换指定的内部颜色,从而对该区域涂色而不是搜索边界颜色值,这个方法称为泛滥填充算法
- 从指定的内部点(x ,y)开始,将期望的填充颜色赋给所有当前设置为给定的内部颜色的像素。假如所要涂色的区域具有多种内部颜色,可以重新设置像素值,从而使所有的内部点具有相同的颜色。然后使用4 —连通或8 —连通方法,逐步连通各像素位置,直到所有内部点都已被涂色
-
12.区域填充函数
13.单元阵列
14.字符生成
-
存储的计算机字体有两种不同的表示方法
- 点阵字体
- 轮廓字体
-
两种不同的字体
-
有衬线
- 在字符笔画末端有细线或加重
-
无衬线
-
4输出图元的属性
线属性
-
线型
- 实线、虚线、点线、点划线
- 光栅线算法通过绘制像素段来显示线型属性
-
线宽
-
线宽选择的实现取决于输出设备的能力
-
其他线宽则是作为标准线宽的正整数倍,通过沿相邻平行线路径绘制额外的像素而显示的
-
对于斜率绝对值小于1的直线,可修改画线程序,上下加像素来显示粗线;大于1左右加像素
-
段长度和中间空白段的像素数目可以用像素掩
-