计算机图形学基础-第2章 光栅图形学
计算机图形学 答案
计算机图形学Ⅰ专业:计算机科学与技术计算机科学与技术20922012年12月第1章绪论1、计算机图形学的概念?(或什么是计算机图形学?)计算机图形学是研究怎样利用计算机表示、生成、处理和显示图形的(原理、算法、方法和技术)一门学科。
2、图形与图像的区别?图像是指计算机内以位图(Bitmap)形式存在的灰度信息;图形含有几何属性,更强调物体(或场景)的几何表示,是由物体(或场景)的几何模型(几何参数)和物理属性(属性参数)共同组成的。
3、计算机图形学的研究内容?计算机图形学的研究内容非常广泛,有图形硬件、图形标准、图形交互技术、光栅图形生成算法、曲线曲面造型、实体造型、真实感图形计算与显示算法,以及科学计算可视化、计算机动画、自然景物仿真和虚拟现实等。
4、计算机图形学的最高奖是以 Coons 的名字命名的,而分别获得第一届(1983年)和第二届(1985年)Steven A. Coons 奖的,恰好是 Ivan E. Sutherland 和 Pierre Bézier 。
5、1971年,Gourand提出“漫反射模型+插值”的思想,被称为 Gourand 明暗处理。
6、1975年,Phong提出了著名的简单光照模型—— Phong模型。
7、1980年,Whitted提出了一个光透明模型—— Whitted模型,并第一次给出光线跟踪算法的范例,实现了Whitted模型。
8、以 SIGGRAPH 会议的情况介绍,来结束计算机图形学的历史回顾。
9、什么是三维形体重建?三维形体重建就是从二维信息中提取三维信息,通过对这些信息进行分类、综合等一系列处理,在三维空间中重新构造出二维信息所对应的三维形体,恢复形体的点、线、面及其拓扑关系,从而实现形体的重建。
10、在漫游当中还要根据CT图像区分出不同的体内组织,这项技术叫分割。
11、一个图形系统通常由图形处理器、图形输入设备和输出设备构成。
12、CRT显示器的简易结构图12、LCD液晶显示器的基本技术指标有:可视角度、点距和分辨率。
计算机图形学——多边形的扫描转换(基本光栅图形算法)
计算机图形学——多边形的扫描转换(基本光栅图形算法)⼀、多边形扫描转换在光栅图形中,区域是由【相连的】像素组成的集合,这些像素具有【相同的】属性值或者它们位于某边界线的内部1、光栅图形的⼀个基本问题是把多边形的顶点表⽰转换为点阵表⽰。
这种转换成为多边形的扫描转换。
2、多边形的扫描转换与区域填充问题是怎样在离散的像素集上表⽰⼀个连续的⼆维图形。
3、多边形有两种重要的表⽰⽅法:(1)顶点表⽰:⽤多边形的定点序列来表⽰多边形优点:直观、⼏何意义强、占内存少、易于进⾏⼏何变换缺点:没有明确指出那些象素在多边形内,故不能直接⽤于上⾊(2)点阵表⽰:是⽤位于多边形内的象素集合来刻画多边形缺点:丢失了许多⼏何信息(eg:边界、顶点等)但是【点阵表⽰是光栅显⽰系统显⽰时所需的表现形式。
】多边形的扫描转换就是把多边形的顶点表⽰转换为点阵表⽰,即从多边形的给定边界出发,求出位于其内部的各个像素,并将帧缓冲器内的各个对应元素设置相应的灰度或颜⾊。
实际上就是多边形内的区域的着⾊过程。
4、多边形分类⼆、X扫描线算法X扫描线算法填充多边形的基本思想是按扫描线顺序,计算扫描线与多边形的相交区间,再⽤要求的颜⾊显⽰这些区间的象素,即完成填充⼯作。
区间的端点可以通过计算扫描线与多边形边界线的交点获得。
如扫描线y=3与多边形的边界相交于4点(2,3)、(4,3)、(7,3)、(9,3)这四个点定义了扫描线从x=2到x=4,从x=7到x=9两个落在多边形内的区间,该区间内像素应取填充⾊。
算法的核⼼是按x递增顺序排列交点的x坐标序列。
由此可得到扫描线算法步骤如下:算法步骤:1.确定多边形所占有的最⼤扫描线数,得到多边形定点的最⼩最⼤值(y min和y max);2.从y min到ymax每次⽤⼀条扫描线进⾏填充;3.对⼀条扫描线填充的过程分为四个步骤:a)求交点;b)把所有交点按递增顺序排序;c)交点配对(第⼀个和第⼆个,第三个和第四个);d)区间填⾊。
计算机图形学基础(第2版)课后习题答案__陆枫__何云峰
计算机图形学基础(第2版)课后习题答案__陆枫__何云峰第⼀章绪论概念:计算机图形学、图形、图像、点阵法、参数法、图形的⼏何要素、⾮⼏何要素、数字图像处理;计算机图形学和计算机视觉的概念及三者之间的关系;计算机图形系统的功能、计算机图形系统的总体结构。
第⼆章图形设备图形输⼊设备:有哪些。
图形显⽰设备:CRT的结构、原理和⼯作⽅式。
彩⾊CRT:结构、原理。
随机扫描和光栅扫描的图形显⽰器的结构和⼯作原理。
图形显⽰⼦系统:分辨率、像素与帧缓存、颜⾊查找表等基本概念,分辨率的计算第三章交互式技术什么是输⼊模式的问题,有哪⼏种输⼊模式。
第四章图形的表⽰与数据结构⾃学,建议⾄少阅读⼀遍第五章基本图形⽣成算法概念:点阵字符和⽮量字符;直线和圆的扫描转换算法;多边形的扫描转换:有效边表算法;区域填充:4/8连通的边界/泛填充算法;内外测试:奇偶规则,⾮零环绕数规则;反⾛样:反⾛样和⾛样的概念,过取样和区域取样。
5.1.2 中点 Bresenham 算法(P109)5.1.2 改进 Bresenham 算法(P112)习题解答习题5(P144)5.3 试⽤中点Bresenham算法画直线段的原理推导斜率为负且⼤于1的直线段绘制过程(要求写清原理、误差函数、递推公式及最终画图过程)。
(P111)解: k<=-1 |△y|/|△x|>=1 y为最⼤位移⽅向故有构造判别式:推导d各种情况的⽅法(设理想直线与y=yi+1的交点为Q):所以有: y Q-kx Q-b=0 且y M=y Qd=f(x M-kx M-b-(y Q-kx Q-b)=k(x Q-x M)所以,当k<0,d>0时,M点在Q点右侧(Q在M左),取左点 P l(x i-1,y i+1)。
d<0时,M点在Q点左侧(Q在M右),取右点 Pr(x i,y i+1)。
d=0时,M点与Q点重合(Q在M点),约定取右点 Pr(x i,y i+1) 。
计算机图形学_ 光栅图形学算法(一)_24 多边形扫描转换X扫描线算法_
x
d、区间填色:把这些相交区间内的 像素置成不同于背景色的填充色
当扫描线与多边形顶点相交时,交点的取舍问题(交点的个数 应保证为偶数个)
y 12 11 10 9 8 7 6 5 4 3 2 1
1 2 3 4 5 6 7 8 9 101112 x
解决方案:
y
(1)若共享顶点的两条边分别落
12 11
x
算法的核心是按X递增顺序
排列交点的X坐标序列。由 y P7
此,可得到X-扫描线算法步
12 11
骤如下:
10 9
P6
P5
8
(3)对一条扫描线填充的过
7 6
P1
P3
5
程可分为四个步骤:
4 3
2
a、求交:计算扫描线与多边
1
1 2P23 4 5 6 7 8P4 9 101112 x
形各边的交点
b、排序:把所有交点按递增 顺序进行排序
任意两顶点间的连线均在多边形内
(2)凹多边形 任意两顶点间的连线有不在在多边形内
(3)含内环的多边形 多边形内包含多边形
现在的问题是,知道多边形的边界,如何找到多边形内部 的点,即把多边形内部填上颜色
P2
P3
P4
P1 P6
P5
顶点表示
点阵表示
1、X-扫描线算法
X-扫描线算法填充多边形的基本思想是按扫描线顺序,计算 扫描线与多边形的相交区间,再用要求的颜色显示这些区间 的像素,即完成填充工作
区间的端点可以通过计算扫 描线与多边形边界线的交点 获得
扫描线
交点 交点
交点
交点
如扫描线y=3与多边形的边界相 y
交于4点:
11
计算机图形学——圆的扫描转换(基本光栅图形算法)
计算机图形学——圆的扫描转换(基本光栅图形算法)与直线的⽣成类似,圆弧⽣成算法的好坏直接影响到绘图的效率。
本篇博客将讨论圆弧⽣成的3个主要算法,正负法、Bresenham 法和圆的多边形迫近法,在介绍算法时,只考虑圆⼼在原点,半径为R的情况。
⼀、正负法1、基本原理假设已选取Pi-1为第i-1个像素,则如果Pi-1在圆内,就要向圆外⽅向⾛⼀步;若已在圆外就要向圆内⾛⼀步。
总之,尽量贴近圆的轮廓线。
2、正负法的具体实现1)圆的表⽰:设圆的圆⼼为(0,0),半径为R,则圆的⽅程为:F(x,y)=x2+y2–R2=0当点(x,y)在圆内时,F(x,y)<0。
当点(x,y)在圆外时,F(x,y)>0。
2)实现步骤第1步:x0=0,y0=R第2步:求得Pi(x i,y i)后找点P i+1的原则为:当P i在圆内时(F(xi,yi)≤0),要向右⾛⼀步得P i+1,这是向圆外⽅向⾛去。
取x i+1= x i+1, y i+1= y i当P i在圆外时(F(xi,yi)>0),要向下⾛⼀步得P i+1,这是向圆内⽅向⾛去,取x i+1= x i, y i+1= y i-1⽤来表⽰圆弧的点均在圆弧附近且 F(xi, yi)时正时负假设已经得到点(x i, y i),则容易算出F(x i, y i),即确定了下⼀个点(x i+1, y i+1),则如何计算F(x i+1, y i+1),以确定下下个点(x i+2, y i+2)?分为两种情况:右⾛⼀步后:x i+1=x i+1,y i+1=y i,此时:F(x i+1, y i+1)=x i+12+y i2-R2=x i2+y i2-R2+2x i+1 = F(x i, y i)+2x i+1下⾛⼀步后:x i+1=x i,y i+1=y i-1, 此时:F(x i+1, y i+1)=x i2+(y i-1)2-R2= F(x i, y i)-2y i+1由此可得:确定了F(xi+1, yi+1)之后,即可决定下⼀个点(xi+2, yi+2),选择道理同上。
计算机图形学课后习题答案
计算机图形学课后习题答案计算机图形学课后习题答案计算机图形学是一门研究计算机生成和处理图像的学科,它在现代科技和娱乐领域扮演着重要的角色。
在学习这门课程时,我们通常会遇到一些习题,用以巩固所学知识。
本文将提供一些计算机图形学课后习题的答案,希望能对大家的学习有所帮助。
1. 什么是光栅化?如何实现光栅化?光栅化是将连续的几何图形转换为离散的像素表示的过程。
它是计算机图形学中最基本的操作之一。
实现光栅化的方法有多种,其中最常见的是扫描线算法。
该算法通过扫描图形的每一条扫描线,确定每个像素的颜色值,从而实现光栅化。
2. 什么是反走样?为什么需要反走样?反走样是一种减少图像锯齿状边缘的技术。
在计算机图形学中,由于像素是离散的,当几何图形的边缘与像素格子不完全对齐时,会产生锯齿状边缘。
反走样技术通过在边缘周围使用不同颜色的像素来模拟平滑边缘,从而减少锯齿状边缘的出现。
3. 什么是光照模型?请简要介绍一下常见的光照模型。
光照模型是用来模拟光照对物体表面的影响的数学模型。
常见的光照模型有以下几种:- 环境光照模型:模拟环境中的整体光照效果,通常用来表示物体表面的基本颜色。
- 漫反射光照模型:模拟光线在物体表面上的扩散效果,根据物体表面法线和光线方向计算光照强度。
- 镜面反射光照模型:模拟光线在物体表面上的镜面反射效果,根据光线方向、物体表面法线和观察者方向计算光照强度。
- 高光反射光照模型:模拟光线在物体表面上的高光反射效果,通常用来表示物体表面的亮点。
4. 什么是纹理映射?如何实现纹理映射?纹理映射是将二维图像(纹理)映射到三维物体表面的过程。
它可以为物体表面增加细节和真实感。
实现纹理映射的方法有多种,其中最常见的是将纹理坐标与物体表面的顶点坐标关联起来,然后通过插值等技术将纹理映射到物体表面的每个像素上。
5. 什么是投影变换?请简要介绍一下常见的投影变换方法。
投影变换是将三维物体投影到二维平面上的过程。
常见的投影变换方法有以下几种:- 正交投影:将物体投影到一个平行于观察平面的平面上,保持物体在不同深度上的大小不变。
计算机图形学第二讲光栅图形学ppt课件
中点画线法
构造判别式:
d=F(M)=F(xp+1,yp+0.5)
P2
=a(xp+1)+b(yp+0.5)+c
Q
当d<0,M在直线(Q点)下 方,取右上方P2;
P=(xp,yp) P1
当d>0,M在直线(Q点)上
方,取右方P1;
当d=0,选P1或P2均可, 约定取P1;
能否采用增量算法呢?
中点画线法
Bresenham算法
Bresenham画线算法
在直线生成的算法中Bresenham算法 是最有效的算法之一。令 k=Δy/Δx, 就0≤k≤1的情况来说明Bresenham算法。 由DDA算法可知:
yi+1=yi+k (1) 由于k不一定是整数,由此式求出的yi也 不一定是整数,因此要用坐标为(xi,yir) 的象素来表示直线上的点,其中yir表示 最靠近yi的整数。
x y int(y+0.5)
00
0
Line: P0(0, 0)-- P1(5, 2)
1 0.4 0
3
2 0.8 1
2
3 1.2 1
4 1.6
2
1
5 2.0
2
0 12 3 4 5
数值微分(DDA)法
• 缺点: 在此算法中,y、k必须是float,且每一 步都必须对y进行舍入取整,不利于硬件实现。
• 原理:
更新为(x+1,y+1),同时将e更新为e-2△x;否则 (x,y)更新为(x+1,y)。 5.当直线没有画完时,重复步骤3和4。否则结束。
Bresenham画线算法
BresenhamLine(x0,y0,x1,y1,color) {
计算机图形学基础答案全
计算机图形学作业答案第二章图形系统第二章图形系统1. 什么是图像的分辨率?什么是图像的分辨率?解答:在水平和垂直方向上每单位长度(如英寸)所包含的像素点的数目。
在水平和垂直方向上每单位长度(如英寸)所包含的像素点的数目。
2. 计算在240像素像素//英寸下640640××480图像的大小。
图像的大小。
解答:(640/240640/240))×(480/240)(480/240)或者(或者(或者(8/38/38/3)×)×)×22英寸。
英寸。
3. 计算有512512××512像素的2×2英寸图像的分辨率。
英寸图像的分辨率。
解答:512/2或256像素像素//英寸。
英寸。
第三章 二维图形生成技术a) 一条直线的两个端点是(0,0)和(6,18),计算x 从0变到6时y 所对应的值,并画出结果。
并画出结果。
解答:由于直线的方程没有给出,所以必须找到直线的方程。
下面是寻找直线方程(由于直线的方程没有给出,所以必须找到直线的方程。
下面是寻找直线方程(y y =mx mx++b )的过程。
首先寻找斜率:)的过程。
首先寻找斜率: m m == ⊿y/y/⊿⊿x x == (y 2-y 1)/(x 2-x 1) = (1818--0)/(6/(6--0) 0) == 3 接着b 在y 轴的截距可以代入方程y =3x 3x++b 求出求出 0 0 0==3(0)+)+b b 。
因此b =0,所以直线方程为y =3x 3x。
b) 使用斜截式方程画斜率介于0°和45°之间的直线的步骤是什么?°之间的直线的步骤是什么? 解答:1.1. 计算dx dx::dx dx==x 2-x 1。
2.2. 计算dy dy::dy dy==y 2-y 1。
3.3. 计算m :m =dy/dx dy/dx。
4.4. 计算b: b b: b==y 1-m ×x 15.5. 设置左下方的端点坐标为(x ,y ),同时将x end 设为x 的最大值。
光栅图形学 (2)
2.1.1 数值微分(DDA)法
• void DDALine(int x0,int y0,int x1,int y1,int color) • • int x; • float dx, dy, y, k; • • dx= x1-x0, dy=y1-y0; k=dy/dx, y=y0;
–当M在Q的下方-> P2离直线更近更近->取P2 。 –M在Q的上方-> P1离直线更近更近->取P1 –M与Q重合, P1、P2任取一点。
计算机图形学 福建师范大学
2.1.2 中点画线法
问题:如何判断M与Q点的关系?
计算机图形学
福建师范大学
2.1.2 中点画线法
• 假设直线方程为:F(x,y)=ax+by+c=0 • 其中a=y0-y1, b=x1-x0, c=x0y1-x1y0 • 由常识知:
– 作为最底层的光栅图形算法,在通常的CAD/图 形系统中,会被大量应用,因此,哪怕节约一 个加法或减法,也是很了不起的改进。 – 由此出发点,导致增量算法的思想。 – 增量算法:在一个迭代算法中,如果每一步的x、 y值是用前一步的值加上一个增量来获得,则称 为增量算法。
计算机图形学
福建师范大学
2.1.1 数值微分(DDA)法
• • • • •
for (x=x0; xx1, x++) drawpixel (x, int(y+0.5), color); y=y+k;
福建师范大学
计算机图形学
2.1.1 数值微分(DDA)法 • 注意上述分析的算法仅适用于k ≤1的情形。 在这种情况下,x每增加1, y最多增加1。 • 问题: • 当 k 1时,会如何?(答案见下页)
光栅图形学.ppt
清华大学
矢量轮廓字符 计算机图形学
• 特点:
– 点阵字符:存储量大,易于显示 – 矢量字符:存储量小,美观,变换方便; 但需要光
栅化后才能显示。
清华大学
计算机图形学
字符属性
–字体 宋体 仿宋体 楷体 黑体 隶书
–字高 宋体 宋体 宋体 宋体
–字宽 大海 大海 大海 大海
–字倾斜角
倾斜 倾斜
–对齐 (左对齐、中心对齐、右对齐)
在使用计算机处理图形信息时,计算机内部存储的图形 往往比较大,而屏幕显示的只是图的一部分。
清华大学
计算机图形学
问:为什么要裁减,直接处理呢?即:在绘制(写帧 缓存时)再处理?
清华大学
计算机图形学
最简单的裁剪方法是把各种图形扫描转换 为点之后,再判断各点是否在窗内。但那样太 费时,一般不可取。这是因为有些图形组成部 分全部在窗口外,可以完全排除,不必进行扫 描转换。所以一般采用先裁剪再扫描转换的方 法。
清华大学
计算机图形学
2.5.1直线段裁剪
• 直线段裁剪算法是复杂图元裁剪的基础。复杂 的曲线可以通过折线段来近似,从而裁剪问题 也可以化为直线段的裁剪问题。
2.5.1.1Cohen-Sutherland 2.5.1.2中点分割算法 2.5.1.3梁友栋-barskey算法。
清华大学
计算机图形学
2.5.1.1 Cohen-Sutherland裁剪
清华大学
计算机图形学
• 为快速判断,采用如下编码方法:
– 每个区域赋予4位编码 Ct CbCr Cl
1 Ct 0
y ymax other
1 Cb 0
y ymin other
1 Cr 0
计算机图形学(计算机图形系统及硬件基础)
2009-2010-2:CG:SCUEC
23
光栅扫描显示器
是画点设备,屏幕可看成一个像素阵列,并可控制 每个点像素的亮度。 发出的电于束的偏转方式是固定的,自上而下,从 左到右扫描在荧光屏上形成光栅形状。
扫描线 0 1 2 3
水平扫描(显示)
水平回扫(消隐)
垂直回扫(消隐)
n
2009-2010-2:CG:SCUEC
2009-2010-2:CG:SCUEC
9
输入功能
计算机图形系统的功能
输出功能
图形系统应具有文字、图形、图像信息的输 出功能,以方便长期保存分析计算的结果或 交互需要的图形和非图形信息。根据对输出 结果的精度、形式和时间等的不同要求,相 应的有多种不同的输出设备。 设计人员可通过显示器或其他人机交互设备 直接进行人机通信,通过观察屏幕上显示的 计算结果和图形,利用选择、定位等手段对 不满意的部分进行修改。另外,可以由系统 追溯到以前的工作步骤,跟踪检索出出错的 地方,同时对设计者或操作员输入的错误给 以必要的提示和帮助。
2009-2010-2:CG:SCUEC
12
CRT的显示原理
第一阳极 第二阳极 偏转线圈 高压入口经石墨层接第二阳极 用于磁偏转系统 电平控制器 聚焦系统 加速系统 荧光纷(磷粉涂层) 偏转的电子束 荧光屏 灯丝 阴极 水平偏转板 垂直偏转板 用于静电偏转系统 偏转系统 荧光屏
电子枪
石墨层吸收轰击磷粉涂层后逃逸在荧光屏内 的杂撒电子送至第二阳极,形成电流回路。
6
2009-2010-2:CG:SCUEC
计算机图形系统的功能
一个计算机图形系统至少应具有计算、存储、输入、
输出和交互等基本功能,各功能之间的关系如下:
第2章_基础知识-现代计算机图形学基础-黄华-清华大学出版社
1.2 计算机图形学系统
• 图形流水线
6
1.2 计算机图形学系统
几何局部坐标系
建模变换
世界坐标系
视图变换
眼睛坐标系
投影变换
图像坐标系
设备变换
标准设备坐标系
窗口变换
屏幕坐标系
7
提纲
1. 从图形到屏幕图像
2. 几何变换
3. 光栅化 4. 图形硬件 5. GPU并行处理
8
2.1 模型变换
• 模型局部坐标系 世界坐标系
OA OE u
ex ux
1
ey
ez
1
uy uz
Me2w
0
0 1
a e
d h
ex ey
ux uy
i l ez uz
a e
ux uy
i uz
矩阵M的第一个列向量(a,e,i)T 是向量u的基底 17
2.2 视点变换
• 世界坐标系 眼睛坐标系
– 将世界坐标系原点(0, 0, 0)world映射为眼睛位置 (ex,ey,ez)world
《现代计算机图形学基础》
第二章 基础知识
1
提纲
1. 从图形到屏幕图像
2. 几何变换 3. 光栅化 4. 图形硬件 5. GPU并行处理
2
1.1 图形与图像
• 图形(Graph)
– 由点、线、面等基本几何元素作为“图元”构 成,通过建模、测量等方式获取。
• 图像(Image)
– 由像素构成,通过照相、扫描等方式获取
• 眼睛坐标系 图像坐标系
– 将眼睛坐标系中的物体模型投影到成像平面, 形成二维图像。
透视投影
正视投影 20
2.3 投影变换
计算机图形学教学大纲
《计算机图形学》(Computer Graphics)教学大纲一、课程代码:03080251二、课程类型:必修课三、课程性质:专业基础课四、学分:3 课时:48(36理论+12实验)五、考核方式:考试六、先修课程:C程序设计,数据结构,高等数学,线性代数,计算机组成原理七、适用专业:计算机科学与技术专业八、课程教学目标:通过学习达到下列基本要求:1.掌握计算机图形学及图形系统的基本概念,了解图形外围设备的工作原理和特性,了解计算机图形标准的基本知识;2.掌握基本图元及常用曲线的生成算法;3.熟练掌握投影变换、图形变换、裁剪、填充等图形处理的常用算法;4.熟练掌握三维形体及常用曲面的表示方法,能够处理三维图形的消隐问题;5.熟练掌握一种语言的图形函数和图形程序的设计技能,具有开发以图形为主的软件设计基本能力。
九、说明:计算机图形学是一门复杂的综合性新兴学科,是建立在传统的图学理论,现代数学和计算机科学基础上的一门边缘性学科,是面向二十一世纪计算机学科的主科目。
通过本课程的学习使学生系统掌握计算机图形学的基本理论,基本算法;能正确评价、完善、编程实现所学的算法,具备创造更高效算法的意识;具有编写计算机图形应用软件的能力。
具备将图形学的研究思想运用到其它领域以解决相关问题的能力;初步具备在图形学领域进行研究的能力。
1、使用教材及参考资料教材选用:《计算机图形学基础教程》孙家广编著,清华大学出版社参考教材:《计算机图兴学》,孙家广编著,清华大学出社, 2002《计算机图形学》,张全伙张剑达编著,机械工业出版社《计算机图形学教程》,唐荣锡、汪嘉业等编著,科学出版社2005十、基本教学内容及课时分配:(一)教学内容:第一章:绪论【教学目的与要求】理解计算机图形学的基本思想。
掌握下列概念:图像、图形、计算机辅助设计与制造、可视化、图形显示和图形绘制。
了解计算机图形学的研究内容及发展简史、计算机图形学的应用和图形设备的基本原理。
计算机图形学(三种画线算法)
计算机图形学(三种画线算法)第⼆章:光栅图形学算法1、光栅显⽰器:光栅扫描式图形显⽰器简称光栅显⽰器,是画点设备,可看作是⼀个点阵单元发⽣器,并可控制每个点阵单元的亮度2、由来:随着光栅显⽰器的出现,为了在计算机上处理、显⽰图形,需要发展⼀套与之相适应的算法。
3、研究内容:1>直线段的扫描转换算法2>多边形的扫描转换与区域填充算法3>裁剪算法4>反⾛样算法5>消隐算法⼀、直线段的扫描转换算法1.为了显⽰⼀条直线,就在光栅显⽰器上⽤离散的像素点逼近直线,所以我们就要知道这些像素点的坐标已知P0和P1,利⽤斜截式⽅程,y=kx+b,求出k=(y1-y0)/(x1-x0),b为截距现在k,b已知,x,y未知,现在假设⼀个像素距离为y,即可求出y的值。
因为像素的坐标是整数,所以y值还要进⾏取整处理2.在计算机中加法的运算更快,乘法较慢,故可以把上述⽅法优化来提⾼效率1>数值微分法(DDA)2>中点划线法3>Bresenham算法数值微分法(DDA)-----增量算法(只有⼀个加法)这个式⼦的含义是:当前步的y值等于前⼀步的y值加上斜率k(增量)例⼦:思考:x递增1,y递增k,是否适合任意的k?可改进的点:1>⼀般情况下,k都是⼩数,且每⼀步均要对y四舍五⼊,唯⼀改进的途径是把浮点运算变为整数加法!2>⽅程还有两点式,⼀般式当|k|<=1时,伪代码如下:voidDDALine(int x0,int y0,int x1,int y1,int color){Int x;Float dx,dy,y,k;dx=x1-x0;dy=y1-y0;K=dy/dx;y=y0;For(x=x0,x<=x1;x++){Drawpixel(x,int(y+0.5),color);//drawpixel(x, y, color)在(x, y)像素点绘制颜⾊为color的点Y=y+k;}}中点画线法采⽤直线的⼀般式⽅程:Ax+By+C=0 F(x,y)=0,其中a = y0 - y1, b = x1 - x0,c = x0y1 - x1y0令F(x, y)=0则得出直线⽅程,代⼊ (x0, y0)和(x1, y1),便可得到三个⽅程,可求出a,b,c的值⼀条直线把平⾯分成了三个部分,直线上⽅,直线上,直线下⽅x⽅向上+1,y⽅向上加不加1需判断如何判断Q在M的上⽅还是下⽅?把M点的坐标带⼊⽅程,其中a = y0 - y1, b = x1 - x0分析计算量?两个乘法,四个加法,推导出d的增量公式d的初始值包含⼩数,因此可以⽤2d来代替d实现整数加法,所以d=2a+b伪代码如下:Void MidPointLine(int x0,int y0,int x1,int y1,int color){Int a,b,delta1,delta2,d,x,y;a=y0-y1;b=x1-x0;d=2*a+b;Delta1 = 2*a;Delta2 =2*(a+b);X = x0;Y=y0;//在对应的x,y像素点着⾊putpixel(x,y,GREEN);while(x<x1){if(d<0){x++;y++;d+=delta2;}else{x++;d+=delta1;}//在对应的x,y像素点着⾊putpixel(x,y,GREEN);}Bresenham算法每步的进化:DDA把算法效率提⾼到每步只做⼀个加法中点算法进⼀步把效率提⾼到每步只做⼀个整数加法Bresenham算法提供了⼀个更⼀般的算法,该算法不仅有好的效率,⽽且有更⼴泛的适⽤范围如何把算法的效率也提⾼到整数加法?改进⼀:令e=d-0.5因为d的初值为0,所以e的初值为-0.5,e=e+k,如果e>0,e=e-1改进⼆:在计算e值的情况下还是关于浮点数的计算,所以把浮点数化为整数。
计算机图形学基础教程
• 图形学的杂志和会议
– 会议:Siggraph, Eurograph, Pacific Graphics Computer Graphics International, Graphics Interface – 杂志: ACM Transaction on Graphics IEEE Computer Graphics and Application IEEE Visualization and Computer Graphics Graphical Models Computer Graphics Forum The Visual Computer
– CRT(CRT Cathode-Ray Tube,阴极射线 管) – 组成
• • • • 电子枪 聚焦系统 加速系统 磁偏转系统
计算机图形学
清华大学计算机科学与技术系
电子枪
聚焦系统 加速系统
磁偏转系统
电子束 加热灯丝 金属阴极 电平控制器 水平偏转板 垂直偏转板 荧光屏
CRT显示器的简易结构图
清华大学计算机科学与技术系
计算机图形学
– 真实感图形学
• 1970年,Bouknight提出了第一个光反射模型 • 1971年Gourand提出“漫反射模型+插值”的思 想,被称为Gourand明暗处理 • 1975年,Phong提出了著名的简单光照模型Phong模型
– 实体造型技术
• 英国剑桥大学CAD小组的Build系统 • 美国罗彻斯特大学的PADL-1系统
计算机图形学
– N-system 注册 – Published in IJCV
清华大学计算机科学与技术系
计算机图形学
• Results of multi-View registration
2[1].1.1 DDA直线的生成
8/1/2013
1
一、光栅图形学的概念:
1、什么是光栅图形? 光栅显示器上显示的图形,称之为 光栅图形。光栅显示器可以看作是一个象 素的矩阵,在光栅显示器上显示任何一个 图形,实际上都是一些具有一种或多种颜 色和灰色象素的集合。
8/1/2013
3
4
5
19
问题:判断距离理想直线最近的下一个象 素点 DDA画线法的改进:
从L的起点P0的横坐标x0向L的终点 P1的横坐标x1步进,取步长=1(个象 素),用L的直线方程y=kx+b计算相应 的y坐标,并取象素点(x,int(y+0,5)) 作为当前点的坐标。
8/1/2013 20
举例:用改进的DDA方法扫描转换连接两点 P0(0,0)和P1(5,2)的直线段
设图中xi列上 (xi,yi)作为表示直 线的点,B点是直线上 的点,其坐标为 (xi+1,yi+1),它只能 用下面两个象素点来 逼近: C(xi+1,yi,) D(xi+1, yi+1,)
8/1/2013 33i+1= ? yi+1= yi ? yi+1= yi+1 ?
8/1/2013 14
2
算法步骤
1 定义xa,xb,ya,yb,dx,dy, delta_x.delta_y,steps; 2 计算 dx=xb-xa;dy=yb-ya; 3 判断|m|=|dy|/|dx|的大小: 当|dx|>|dy|时,steps=|dx|(|Dx|=1,|Dy|=m) 当|dx|<|dy|时,steps=|dy|(|Dx|=1/m,|Dy|=1) 4 计算 delta_x=dx/steps ;delta_y=dy/steps 5 画直线上的每一个点 初始点 putpixel(xa,ya) for(k=1;k<=steps;k++) {x+=delta_x;y+=delta_y;putpixel(x,y,c);}
计算机图形学习题与解答
《计算机图形学》习题与解答第一章概述1. 试描述你所熟悉的计算机图形系统的硬软件环境。
计算机图形系统是计算机硬件、图形输入输出设备、计算机系统软件和图形软件的集合。
例如:计算机硬件采用PC、操作系统采用windows2000,图形输入设备有键盘、鼠标、光笔、触摸屏等,图形输出设备有CRT、LCD等,安装3D MAX图形软件。
2. 计算机图形系统与一般的计算机系统最主要的差别是什么?3. 图形硬件设备主要包括哪些?请按类别举出典型的物理设备?图形输入设备:鼠标、光笔、触摸屏和坐标数字化仪,以及图形扫描仪等。
图形显示设备:CRT、液晶显示器(LCD)等。
图形绘制设备:打印机、绘图仪等。
图形处理器:GPU(图形处理单元)、图形加速卡等等。
4. 为什么要制定图形软件标准?可分为哪两类?为了提高计算机图形软件、计算机图形的应用软件以及相关软件的编程人员在不同计算机和图形设备之间的可移植性。
图形软件标准通常是指图形系统及其相关应用系统中各界面之间进行数据传送和通信的接口标准,另外还有供图形应用程序调用的子程序功能及其格式标准。
5. 请列举出当前已成为国际标准的几种图形软件标准,并简述其主要功能。
(1)CGI(Computer Graphics Interface),它所提供的主要功能集包括控制功能集、独立于设备的图形对象输出功能集、图段功能集、输入和应答功能集以及产生、修改、检索和显示以像素数据形式存储的光栅功能集。
(2)GKS(Graphcis Kernel System),提供了应用程序和图形输入输出设备之间的接口,包括一系列交互和非交互式图形设备的全部图形处理功能。
主要功能如下:控制功能、输入输出功能、变换功能、图段功能、询问功能等。
6. 试列举计算机图形学的三个应用实例。
(1)CAD/CAM(2)VISC(3)VR.第二章光栅图形学1. 在图形设备上如何输出一个点?为输出一条任意斜率的直线,一般受到哪些因素影响?若图形设备是光栅图形显示器,光栅图形显示器可以看作是一个像素的矩阵,光栅图形显示器上的点是像素点的集合。
计算机图形学基本光栅图形算法
void bresenham(Graphics g, int xs, int ys, int xe, int ye) { int dx = xe-xs; int dy = ye-ys; 改进后的 int e = 2*dy-dx; 算法程序 int x = xs; int y = ys; for(int i = 0;i < dx; i++) { g.drawLine(x,y,x,y); //画点(x, y) if(e>=0) { y=y+1; e=e-2*dx; } x=x+1; e=e+2*dy; } }
当点(x,y)在圆上时,F(x,y)=0。
19
2)实现步骤
第1步:x0=0,y0=R 第2步: 求得Pi(xi,yi)后找点Pi+1的原则为: 当Pi在圆内时(F(xi,yi)≤0), 要向右走一步得Pi+1,这是向圆外方 向走去。取xi+1= xi+1, yi+1= yi
A
y
Pi
Pi+1
上面讨论了x y 0 的情况,如果 y x 0 , 则需把 x 和 y 的地位互换。如果 y 0 或 x 0 , 注: 程序中y y 1或 x x 1需换成 y y 1或x x 1 , 17 同时 也应相应地改变。
3.3 圆的扫描转换
xi
xi 1
图3.5 ( x)的几何意义的其他两种情况
15
算法的程 序实现
m = (double)dy/(double)dx; e = m–0.5; for(i = 0; i <dx; i++) { g.drawLine(x,y,x,y); if(e>=0){ y = y+1; e = e–1; } x = x+1;e = e+m; }
Class 2_计算机图形学基础_20180504
18
画线显示器(矢量显示器/随机扫描显示器)
存储管式显示器
刷新式光栅扫描显示器
19
输入设备的发展 第一阶段:控制开关、穿孔纸等 第二阶段:键盘 第三阶段:二维定位设备,如鼠标、光笔、图形输入板、触摸屏等 第四阶段:三维输入设备(如空间球、数据手套、数据衣),用户的 手势、表情等 (体感游戏机) 第五阶段:用户的思维 /post/330354/
这些数据以图形文件的形式存放于计算机中,根据 不同的系统硬件和结构,组织成不同的数据结构, 或者形成一种通用的或专用的数据集; 计算机图形系统根据这类信息的详细描述生成对应 的图形,并完成这些图形的操作和处理 ; 应用数据结构是生成图形的数据基础。
31
解决问题的软件集合,是图形系统的核心部分;
6
计算机图形学产生真实感图形的过程
通过绘制过程生成物体 的真实感图形
绘制
对物体做一系列的变换,以 反映观察者和物体的位置关系
处理
建立对物体完整的几何描述
建模
7
与计算机图形学相关的一些学科
特征数据、结构数据
模拟生物外显或 宏观视觉功能。
计算机图 形学
计算机 视觉
试图从非图像形
图象信号 像
式的数据描述来
20
输出设备(图形绘制设备) 图形绘制设备,又称图形硬拷贝设备,分为打印机和绘图仪两种。
21
1.2.1 计算机图形学的确立 1.2.2 计算机图形学硬件设备的发展 1.2.3 图形软件的发展及软件标准的形成
22
图形软件标准的形成是为了推动图形技术的发展以及图形硬件设 备的推广普及,提高应用软件的可移植性,使得图形软件与设备 无关、与应用无关,并且具有较高的性能。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
计算机图形学基础
2.1 直线段的扫描转换算法
数值微分法
void DDALine(int x0,int y0,int x1,int y1,int color) int x; float dx, dy, y, k; dx = x1-x0, dy=y1-y0; k=dy/dx, y=y0; for (x=x0; xx1, x++) drawpixel (x, int(y+0.5), color); y=y+k;
由于只用d 的符号作判断,为了只包含整数运算, 可以 用2d代替d来摆脱小数,提高效率。
计算机图形学基础
2.1 直线段的扫描转换算法
中点画线法
void Midpoint Line (int x0,int y0,int x1, int y1,int color) { int a, b, d1, d2, d, x, y; a=y0-y1, b=x1-x0, d=2*a+b; d1=2*a, d2=2* (a+b); x=x0, y=y0; drawpixel(x, y, color); while (x<x1) { if (d<0) {x++; y++; d+=d2; } else {x++; d+=d1;} drawpixel (x, y, color); } /* while */ } /* mid PointLine */
P2 Q
计算机图形学基础
P=(xp,yp) P1
2.1 直线段的扫描转换算法
中点画线法
若d0→M在直线上方→取P1; d1=F(xp+2, yp+0.5)=a(xp+2)+b(yp+0.5)+c = a(xp +1)+b(yp +0.5)+c +a=d+a; 增量为a 若d<0→M在直线下方→取P2; d2= F(xp+2, yp+1.5) =a(xp+2)+b(yp+1.5)+c = a(xp +1)+b(yp +0.5)+c +a +b =d+a+b ; 增量为a+b
数值微分法DDA算法 中点画线法 Bresenham画线算法
计算机图形学基础
2.1 直线段的扫描转换算法
直接计算法
假定直线的起点、终点分别为:P0(x0,y0), P1(x1,y1),且都 为整数。 计算出斜率k=(y1-y0)/(x1-x0) , 在Y轴的截距b=y0-k*x0
计算机图形学基础
2.1 直线段的扫描转换算法
数值微分法
当斜率大于1时。让Y增长值为 1,X的增量为1/K。
这样做的目的是让每次变化的 值不能大于1。这样可以让像素点 注意上述分析的算法仅适用于k ≤1的情形。在 更加整齐。
这种情况下, x每增加1, y最多增加1。 当 k 1时, 必须把x, y地位互换 增量算法: 在一个迭代算法中, 如果每一步的x, y 值是用前一步的值加上一个增量来获得,则称 为增量算法。 DDA算法就是一个增量算法。
。
。
。
(X i , Yi)
。
栅格交点表示象素点位置
(X i+1, kX i+1+b)
计算机图形学基础
2.1 直线段的扫描转换算法
直接计算法
这样一来,只要给定 x的值,根据解析式立即可以计算 出对应的y值,然后输出(x,round(y)).
。
。
(X i , Yi)
。
(X i+1, kX i+1+b)
0 1 2 3 4 5
计算机图形学基础
2.1 直线段的扫描转换算法
斜率不在[0,1]的直线的处理
设起点和终点分别为(x0,y0)和(x1,y1) 若k>1, 则(y0,x0)和(y1,x1)所确定的直线斜率k∈[0,1], 适用于前面讨论的情形。 (x1,y1)
此时, 对(y0,x0)和(y1,x1)所确定的 直线进行扫描转换, 每确定一组(x,y),输出(y,x)。
计算机图形学基础
本章主要内容
直线 圆弧 多边形 字符
基本图形的扫描转换算法
裁剪 反走样 消隐
基本方法的实现
计算机图形学基础
2.1 直线段的扫描转换算法
直线的扫描转换: 确定最佳逼近于该直线的一 组象素,并且按扫描线顺序,对这些象素进行 写操作。
直线段扫描转换算法:
2
3
4
5
缺点:在此算法中,y, k必须是float, 且每一步都必须对y 进行舍入取整,不利于硬件实现。
计算机图形学基础
2.1 直线段的扫描转换算法
中点画线法 原理
假定直线斜率0<k<1,且已确 定点亮象素点P(xp, yp), 则下 一个与直线最接近的像素只 能是 P1(xp+1, yp)点 或 P2 P2(xp+1, yp+1)点。 Q 设M(xp+1, yp+0.5)为中点,Q 为理想直线与x=xp+1的交点。 P=(xp,yp) P1 需确定下一个点亮的象素。
点在直线上面 点在直线上方 点在直线下方
Q
F x, y 0 F x, y 0 F x, y 0
P=(xp,yp) P1
计算机图形学基础
2.1 直线段的扫描转换算法
中点画线法
假设直线方程为: F(x, y)=ax+by+c=0 ( y=(-a/b)x-c/b ) 通过两点不能唯一确定a, b, c, 取 a=y0-y1, b=x1-x0, c=x0y1-x1y0 F(x,y)=ax+by+c=b(y-(-a/b)x-c/b); P2 则有 Q F x, y 0 点在直线上面 F x, y 0 点在直线上方 P=(xp,yp) P1 F x, y 0 点在直线下方 ∴欲判断M点是在Q点上方还是在Q点下方,只需把M 代入F(x,y),并检查它的符号。
(X i , Int(Yi +0.5))
计算机图形学基础
2.1 直线段的扫描转换算法
数值微分法
基本思想 已知过端点P0 (x0, y0), P1(x1, y1)的直线段L: y=kx+b 直线斜率为 y1 y0 k x1 x0
考虑当x从xixi+1时y的变化规律:设x=xi+1-xi , xi+1= xi+ x 计算yi+1= kxi+1+b= k(xi+ x)+b= kxi+b+kx = yi+kx 当x =1; yi+1 = yi+k,即:当x每递增1, y递增k(即直线斜率)
计算机图形学基础
第2章 光栅图形学
漳州师范学院计算机科学与工程系
第2章 光栅图形学
图形的扫描转换(光栅化):确定一个最佳逼近图形 的像素集合,并用指定属性写像素的过程。步骤如下: (1)确定有关像素 (2)用图形的颜色或其它属性,对像素进行写操作。 对一维图形,若不考虑线宽,则用一个像素宽的直线 来显示图形。二维图形的光栅化,即区域的填充:确 定像素集,填色或图案。 任何图形的光栅化,必须显示在一个窗口内,否则不 予显示。即确定一个图形的哪些部分在窗口内,哪些 在窗口外,即裁剪。 裁剪通常在扫描转换之前进行
xi 1 xi 1 y yi 1 i 1 yi
误差项d的计算 d初=0,
(d 0.5) (d 0.5)
每走一步:d=d+k
一旦y方向上走了一步,d=d-1
计算机图形学基础
2.1 直线段的扫描转换算法
Bresenham算法
计算机图形学基础
第2章 光栅图形学
非水平、垂直、± 45°的直线等
产 生 显示器空间分辨率有限
畸变(台阶、锯齿) 走样(aliasing) 减 少 或 消 除 提高显示器空间分辨率 反走样(antialiasing) 像素的多亮度显示
计算机图形学基础
第2章 光栅图形学
消隐
当不透光的物体阻挡了某些来自物体部分的光线,使 其无法到达观察者时,这些物体部分是隐藏部分。 隐藏部分是不可见的,如果不删除隐藏的线或面,就 可能发生对图形的错误理解。 为了使计算机图形能够真实地反映这一现象,必须把 隐藏的部分从图形中删除,称为消除隐藏线和隐藏面, 简称消隐。
计算机图形学基础
2.1 直线段的扫描转换算法
斜率不在[0,1]的直线的处理
若k < -1
对(-y0, x0)和(-y1, x1)所确定的直线进行扫描转换, 每确定一组(x, y), 输出(-y, x)。
(x0,y0) (x1,-y1)
(-y1,x1)
(-y0,x0)
(x1,y1) (x,-y0)
计算机图形学基础
2.1 直线段的扫描转换算法
中点画线法
构造判别式
d=F(M)=F(xp+1,yp+0.5) =a(xp+1)+b(yp+0.5)+c 当d<0, M在直线(Q点)下方, 取右上方P2 当d>0, M在直线(Q点)上方, 取右下方P1 当d=0, 选P1或P2均可,约定取P1 能否采用增量算法呢?
算法步骤:
输入直线的两端点P0(x0, y0)和P1(x1, y1)。 计算初始值△x, △y, d=0, x=x0, y=y0。 绘制点(x, y)。 d更新为d+k, 判断d的值。若d>0.5, 则(x, y)更新 为(x+1, y+1), 同时将d更新为d-1;否则(x, y)更 新为(x+1, y)。 5. 当直线没有画完时,重复步骤3和4。否则结束。 1. 2. 3. 4.