计算机图形学

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

bool ClipT(p,q,u1,u2) float p,q,*u1,*u2; { float r; if(p<0)
{
r=q/p;
if(r>*u2) return FALSE; else if(r>*u1) { *u1=r; return TRUE; }
} 。。。//下页
计算机图形学课件
else if(p>0)
计算机图形学课件
2.5.2 多边形裁剪
• 基本思想是一次用窗口的一条边裁剪多边形。
• 考虑窗口的一条边以及延长线构成的裁剪线
该线把平面分成两个部分:可见一侧;不可见一侧
计算机图形学课件
• 多边形的各条边的两端点S、P。它们与裁剪线的位置 关系只有四种
可 见 一 侧 可 见 一 侧 可 见 一 侧 可 见 一 p 侧
1 0 0 0 0 0 1 0 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 0 1 0 0 1 0 0 1 0 1 0 0 1 0 0 1 0 1 1 1 1 1 1 1 0 0 1 1 0 1 1 0 0 0 0 0 0 0 0 0 0
点阵字符
点阵字库中的位图表示 计算机图形学课件
x=x1+(x2-x1)*(YB-y1)/(y2-y1);} x=x1+(x2-x1)*(YT-y1)/(y2-y1);}
else if(BOTTOM&code !=0) else if(TOP & code !=0)
计算机图形学课件
• 示例
计算机图形学课件
• 编码的思想在图形学中非常重要。
• Sutherland:Coons奖, 图灵奖, IEEE 计算机先驱 奖。
{ r=p/q; if(r<*u1)return FALSE; else if(r<*u2) { } else if(q<0) return FALSE; *u2=r;return TRUE;}
return TRUE;
}
计算机图形学课件
• 裁减的插曲:
– 汪嘉业的快速算法 – 80年代的裁减热:应道宁(工程图学研究所)、
第四讲 光栅图形学(2)
• 王修晖
• 手机短号:661510
• 赛博南楼324
• wangxiuhui@cjlu.edu.cn • 课件服务器:ftp://10.132.10.222/
主要內容
2.1直线段的扫描转换算法
2.2圆弧的扫描转换算法
2.3多边形的扫描转换与区域填充
2.4字符 2.5裁剪 2.6反走样 2.7消隐
计算机图形学课件
求线段与窗口的交点
P0
A
Βιβλιοθήκη Baidu
Pm B P1
A、B分别为距P0、P1最近的可见点,Pm为P0P1中点
计算机图形学课件
• 从 P0 出发找最近可见点的方法 –先求出 P0 P1 的中点 Pm
–若 P0 Pm 不是显然不可见的,并且 P0 Pm 在窗口中有可 见部分,则距 P0 最近的可见点一定落在 P0 Pm 上,所 以用 P0 Pm 代替 P0 P1 ;
计算机图形学课件
• 矢量字符:记录字符的笔画信息,而不是整个位 图,具有存储空间小,美观、变换方便等优点。 对于字符的旋转、缩放等变换,
– 点阵字符的变换需要对表示字符位图中的每一象素 进行; – 矢量字符的变换只要对其笔画端点进行变换就可以 了。矢量字符的显示也分为两步。
计算机图形学课件
– 显示:首先从字库中将它的字符信息。然后取出端 点坐标,对其进行适当的几何变换,再根据各端点 的标志显示出字符。
计算机图形学课件
最简单的裁剪方法是把各种图形扫描转换 为点之后,再判断各点是否在窗内。但那样太 费时,一般不可取。这是因为有些图形组成部 分全部在窗口外,可以完全排除,不必进行扫 描转换。所以一般采用先裁剪再扫描转换的方 法。
计算机图形学课件
2.5.1直线段裁剪
• 直线段裁剪算法是复杂图元裁剪的基础。复杂
计算机图形学课件
–否则取 P P 代替 P P 0 1 m 1 –再对新的 P P 求中点 Pm 。重复上述过程,直到 Pm P 1 0 1 长度小于给定的控制常数为止,此时 P 收敛于交 m 点。
• 从 P 出发找最近可见点采用上面类似方法。 1
计算机图形学课件
• 问:算法为什么可行?会不会无限循环、不断 二分?
计算机图形学课件
2.5 裁剪
• 裁剪:确定图形中哪些部分落在显示区之内,哪些落
在显示区之外,以便只显示落在显示区内的那部分图形。 这个选择过程称为裁剪。
在使用计算机处理图形信息时,计算机内部存储的图形
往往比较大,而屏幕显示的只是图的一部分。
计算机图形学课件
问:为什么要裁减,直接处理呢?即:在绘制 (写帧缓存时)再处理?
计算机图形学课件
–如果u1>u2,则线段完全落在裁剪窗口之外,被舍 弃。
–否则裁剪线段由参数u的两个值u1,u2计算出来。
计算机图形学课件
void LB_LineClip(x1,y1,x2,y2,XL,XR,YB,YT)
float x1,y1,x2,y2,XL,XR,YB,YT; { float dx,dy,u1,u2;
计算机图形学课件
• 计算线段P1(x1,y1)P2(x2,y2)与窗口边界的交点
if(LEFT&code !=0) { x=XL; y=y1+(y2-y1)*(XL-x1)/(x2-x1);} else if(RIGHT&code !=0)
{
{ {
x=XR;
y=YB; y=YT;
y=y1+(y2-y1)*(XR-x1)/(x2-x1);}
矢量轮廓字符
• 特点:
– 点阵字符:存储量大,易于显示 – 矢量字符:存储量小,美观,变换方便; 但需要光 栅化后才能显示。
计算机图形学课件
字符属性
–字体 宋体 仿宋体 楷体 黑体 隶书
–字高 宋体 宋体
宋体 宋体
大海 大海
倾斜 倾斜
–字宽
大海
大海
–字倾斜角
–对齐 (左对齐、中心对齐、右对齐)
–字色 红色、绿色、蓝色
表示字符的笔画经过此位,对应于此位的象素 应置为字符颜色。该位为0表示字符的笔画不 经过此位,对应于此位的象素应置为背景颜色。
计算机图形学课件
1 0 0 0 0 0 1 0
1 1 1 1 1 1 1 0
1 1 1 1 1 1 1 0
1 0 0 1 0 0 1 0
1 0 0 1 0 0 1 0
1 1 1 1 1 1 1 0
0001
0000
0010
P3 P4
0101
0100
0110 P2
编码
线段裁剪
计算机图形学课件
–若P1P2完全在窗口内code1=0,且code2=0,则“取”
–若P1P2明显在窗口外,code1&code2≠0 (?),则 “弃” –在交点处把线段分为两段。其中一段完全在窗口外, 可弃之。然后对另一段重复上述处理。
出边
q2 XR x1 q4 YT y1
– pk =0且 qk <0,则线段完全在边界外,qk ≥0,则该 线段平行于裁剪边界并且在窗口内。
计算机图形学课件
–当 pk ≠0,
• 当 pk <0,线段从裁剪边界延长线的外部延伸到内 部。
• 当 pk >0,线段从裁剪边界延长线的内部延伸到外 部。
计算机图形学课件
2.5.1.2 中点分割裁剪算法
• 基本思想: 与前一种Cohen-Sutherland算法一样首先对线段端点 进行编码,并把线段与窗口的关系分为三种情况: –全在、完全不在和线段和窗口有交。对前两种情况, 进行一样的处理。 –对于第三种情况,用中点分割的方法求出线段与窗 口的交点。
– 每个区域赋予4位编码
Ct Cb C r Cl
1 Ct 0
1 Cr 0
y y max other
x xmax other
1 Cb 0
1 Cl 0
y y min other
x x min other
计算机图形学课件
1001
1000
1010 P1
汪国昭(图形图像研究所)
• 对三种算法比较:
– Cohen-Sutherland与中点法在区域码测试阶段能以位运算方式 高效率地进行,因而当大多数线段能够简单的取舍时,效率 较好。 – 梁友栋—Barskey算法只能应用于矩形窗口的情形,但其效率 比前两者要高,这是因为运算只涉及到参数,仅到必要时才 进行坐标计算。
计算机图形学课件
2.4 字符
• 字符指数字、字母、汉字等符号。
• 计算机中字符由一个数字编码唯一标识。 • 国际上最流行的字符集:“美国信息交换用标准代 码集”,简称ASCII码。它是用7位二进制数进行编 码表示128个字符;包括字母、标点、运算符以及 一些特殊符号。
计算机图形学课件
• 汉字编码的国家标准字符集:GB2312-80。 该字符集分为94个区,94个位,每个符号由一 个区码和一个位码共同标识。区码和位码各用 一个字节表示。
0 1 1 0 1 1 0 0
0 0 0 0 0 0 0 0
点阵字符
点阵字库中的位图表示
计算机图形学课件
– 在实际应用中,有多种字体(如宋体、楷体等), 每种字体又有多种大小型号,因此字库的存储空间 是很庞大的。解决这个问题一般采用压缩技术。 – 点阵字符的显示分为两步。首先从字库中将它的位 图检索出来。然后将检索到的位图写到帧缓冲器中。
计算机图形学课件
2.5.1.3梁友栋-Barsky算法
• 梁-Barsky算法的几何含义:入边、出边与端点
计算机图形学课件
* 写入图形学教科书的唯一中国人的算 法
* Communication of ACM的论文
• 梁有栋教授的二三事
– Liang-Barsky算法 – 几何连续理论:叶、马、郑
u1=0;u2=1 ; dx =x2-x1;dy =y2-y1;
if(ClipT(-dx,x1-XL,&u1,&u2) if(ClipT(dx,XR-x1, &u1,&u2) if(ClipT(-dy,y1-YB, &u1,&u2)
if(ClipT(dy,YT-y1, &u1,&u2)
{ } } 计算机图形学课件 displayline(x1+u1*dx,y1+u1*dy, x1+u2*dx,y1+u2*dy) return;
– 从几何学与纤维缠绕理论到基因工程
计算机图形学课件
• 参数化形式写出裁剪条件:
XL x1 ux XR YB y1 uy YT
可以统一表示为形式:
upk qk
p1 x p3 y q1 x1 XL q1 y1 YB
入边
计算机图形学课件
p2 x p4 y
计算机图形学课件
• 对于每条直线,可以计算出参数u1和u2,它们定义了 在裁剪矩形内的线段部分
– u1的值由线段从外到内遇到的矩形边界所决定(p<0)。对这 些边界计算rk=qk/pk 。u1取0和各个rk值之中的最大值。 – u2的值由线段从内到外遇到的矩形边界所决定(p>0)。对这 些边界计算rk=qk/pk 。u2取1和各个rk值之中的最小值。
的曲线可以通过折线段来近似,从而裁剪问题
也可以化为直线段的裁剪问题。
2.5.1.1Cohen-Sutherland 2.5.1.2中点分割算法 2.5.1.3梁友栋-Barskey算法。
计算机图形学课件
2.5.1.1 Cohen-Sutherland裁剪
• 基本思想:对于每条线段P1P2分为三种情况处理分为三种情 况处理:
• 为了能够区分ASCII码与汉字编码,采用字节 的最高位来标识:最高位为0表示ASCII码;最 高位为1表示表示汉字编码。
计算机图形学课件
• 字库:为了在显示器等输出设备上输出字符, 系统中必须装备有相应的字库。字库中存储了 每个字符的形状信息,字库分为矢量型和点阵 型两种。
计算机图形学课件
• 点阵字符: 每个字符由一个位图表示,该位为1
p
S p (2)
p
S (1)
S (3)
S (4)
对于情况(1)仅输出顶点 情况( 2)输出 P 情况( 0个顶点 3)输出线段 SP与裁 情况( 4 )输出线段 SP与 剪线的交点 IP 裁剪线的交点 I和终点 计算机图形学课件
–上述算法仅用一条裁剪边对多边形进行裁剪,得到 一个顶点序列,作为下一条裁剪边处理过程的输入。
(1)若P1P2完全在窗口内,则显示该线段P1P2简称“取”之。 (2)若P1P2明显在窗口外,则丢弃该线段,简称“弃”之。 (3)若线段不满足“取”或 “弃”的条件,则在交点处把线
段分为两段。其中一段完全在窗口外,可弃之。然后对另一 段重复上述处理。
计算机图形学课件
• 为快速判断,采用如下编码方法:
相关文档
最新文档