【XJTUSE计算机图形学】第二章 光栅图形学(1)
文章目录
- 【XJTUSE计算机图形学】第二章 光栅图形学(1)
- 1、基本概念
- 2、直线段的扫描转换算法
- 数值微分(DDA)法
- 增量算法
- 中点画线法[重点]
- Bresenham算法[重点 很有可能会考]
- 总结
- 3、圆弧的扫描转换算法
- 圆弧扫描算法
- 角度DDA法
- 中点画圆法
- 4、多边形的扫描转换与区域填充
- 扫描线算法【需要完全掌握】
- 基本思想
- 数据结构【要掌握】
- 交点的取舍
- 算法过程
- 示例
- 边界标志算法【了解】
- 基本思想
- 实现步骤
- 区域填充算法【了解】
- 种子填充算法
- 扫描线算法
- 5、字符
- 点阵字符
- 矢量字符
- 6、裁剪
- 直线段裁剪
- 直接求交算法
- Cohen-Sutherland裁剪
- 基本思想
- 法则
- 优点
- 缺点
- 中点分割裁剪算法
- 算法特点
- 梁友栋-Barsky算法
- 特点
- Nicholls-Lee-Nicholl算法[考试不作要求]
- 总结
- 多边形裁剪
- 逐边裁剪算法
- 字符裁剪【填空题】
- 7、反走样【重点】
- 提高分辨率
- 区域采样
- 加权区域取样
- 半色调技术
【XJTUSE计算机图形学】第二章 光栅图形学(1)
1、基本概念
扫描转换(光栅化):确定最佳逼近图形的像素几何,并用指定属性写像素的过程
区域填充:光栅化过程中确定区域对应的像素集,并用指定的属性或图案显示
裁减:确定一个图形的哪部分在窗口内显示
走样:由于显示器的空间分辨率有限,因像素逼近误差,使所画图形产生畸变(台阶、锯齿)的现象
反走样:减少或消除走样的技术:硬件、软件的方法
隐藏部分:当不透光的物体遮挡了来自某些物体部分的光线,使其无法到达观察者
消隐:把隐藏的部分从图中删除,消除歧义性
2、直线段的扫描转换算法
直线的扫描转换: 确定最佳逼近于直线的一组象素,且按扫描线顺序,对这些象素进行写操作
数值微分(DDA)法
已知过端点P0(x0,y0),P1(x1,y1)P_0(x_0,y_0),P_1(x_1,y_1)P0(x0,y0),P1(x1,y1)的直线段L:y=kx+by=kx+by=kx+b直线斜率为
k=y1−y0x1−x0k=\frac{y_1-y_0}{x_1-x_0} k=x1−x0y1−y0
从xxx的左端点x0x_0x0开始,向xxx右端点步进。步长=1(个象素),计算相应的y坐标y=kx+by=kx+by=kx+b;取象素点(x, round(y)) 作为当前点的坐标
方法直观,效率低
作为最底层的光栅图形算法,在通常的CAD/图形系统中,会被大量应用
由此出发,导致增量算法的思想
增量算法
在一个迭代算法中,每一步的x、y值是用前一步的值加上一个增量来获得
计算yi+1=kxi+1+b=kxi+b+kΔx=yi+kΔx当Δx=1时:yi+1=yi+k计算y_{i+1}=kx_{i+1}+b=kx_i+b+k\Delta x=y_i+k\Delta x\\ 当\Delta x=1时: y_{i+1}=y_i+k 计算yi+1=kxi+1+b=kxi+b+kΔx=yi+kΔx当Δx=1时:yi+1=yi+k
当x每递增1,y递增k(即直线斜率);
由此注意上述分析的算法仅适用于|k| ≤1的情形。在这种情况下,x每增加1,y最多增加1
当 |k| >1时,必须把x,y位置互换
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; x<=x1, x++) {drawpixel (x, int(y+0.5), color); y=y+k;}
}
在此算法中,y、k必须是float,且每一步都必须对y进行舍入取整,不利于硬件实现
上述算法仅适用于|k| ≤ 1 的情况. 当|k| > 1 时, 必须把x, y 的位置互换.
中点画线法[重点]
将一个加法改为一个整数加法
基本思想
对于理想直线L(p0(x0,y0),p1(x1,y1))L(p_0(x_0,y_0),p_1(x_1,y_1))L(p0(x0,y0),p1(x1,y1)),采用直线F(x,y)=ax+by+c=0F(x,y)=ax+by+c=0F(x,y)=ax+by+c=0表示。其中a=y0−y1,b=x1−x0,c=x0y1−x1y0a=y_0-y_1, b=x_1-x_0, c=x_0y_1-x_1y_0a=y0−y1,b=x1−x0,c=x0y1−x1y0
当前象素点为$(x_p, y_p) ,下一个象素点为,下一个象素点为,下一个象素点为P_1$ 或P2P_2P2 。设M=(xp+1,yp+0.5)M=(x_p+1, y_p+0.5)M=(xp+1,yp+0.5)为P1P_1P1 与P2P_2P2之中点,Q为理想直线与x=xp+1x=x_p+1x=xp+1垂线的交点。将Q与M的y坐标进行比较。
当M在Q的下方,则P2P_2P2应为下一个象素点
M在Q的上方,应取P1P_1P1为下一点
构造判别式
$$
d=F(M)=F(x_p+1,y_p+0.5)=a(x_p+1)+b(y_p+0.5)+c\
其中a=y_0-y_1, b=x_1-x_0, c=x_0y_1-x_1y_
$$
当d<0,M在L(Q点)下方,取右上方P2为下一个象素
当d>0,M在L(Q点)上方,取右下方P1为下一个象素
当d=0,选P1或P2均可,约定取P1为下一个象素
计算量:每一个象素的是四个加法,两个乘法。采用增量算法如下:
【XJTUSE计算机图形学】第二章 光栅图形学(1)相关推荐
- [XJTUSE]计算机图形学第二章作业,使用OpenGL编程实现DDA、中点画线和Bresenham算法和中点画圆法
首先是Windows10 + Visual Studio 2019 搭建OpenGL环境可以查看如下链接: 萌新向!!!Windows10 + Visual Studio 2019 搭建OpenGL环 ...
- 计算机图形学 第四章 光栅图形学
第四章 光栅图形学 计算机图形学 第四章 光栅图形学的相关内容,包括:直线段的扫描转换算法.圆弧的扫描转换算法.多边形区域填充.字符的生成.裁剪.反走样 等 Def 光栅显示器:一个像素矩阵(因此,要 ...
- 计算机组成原理-第二章 数据表示与运算
计算机组成原理-第二章 数据表示与运算 一.数据的表示 1.数值型数据的表示(重点难点) 1.1数值型数据的表示--进位制 1.2数值型数据表示-码制 1.3数值型数据的表示--定点数 1.4数值型数 ...
- 计算机的定点运算器原理,计算机组成原理第二章第10讲定点运算器的组成.ppt
<计算机组成原理第二章第10讲定点运算器的组成.ppt>由会员分享,可在线阅读,更多相关<计算机组成原理第二章第10讲定点运算器的组成.ppt(20页珍藏版)>请在装配图网上搜 ...
- 计算机组成原理第二章数据,计算机组成原理第二章数据在计算机中的表示
计算机组成原理第二章数据在计算机中的表示 (91页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 14.90 积分 第二章 数据在计算机中的表示 n 概述 ...
- 计算机组成原理第二章测试题,计算机组成原理第二章习题答案.doc
计算机组成原理第二章习题答案 第2章?习题及解答 2-2?? 将下列十进制表示成二进制浮点规格化的数(尾数取12位,包括一位符号位:阶取4位,包括一位符号位),并写出它的原码.反码.补码三和阶移尾补四 ...
- 计算机组成原理组间串行进位,计算机组成原理第二章课件.ppt
<计算机组成原理第二章课件.ppt>由会员分享,提供在线免费全文阅读可下载,此文档格式为ppt,更多相关<计算机组成原理第二章课件.ppt>文档请在天天文库搜索. 1.2.5 ...
- 计算机组成原理乘法运算说明过程,计算机组成原理第二章 第8讲 定点乘法运算...
计算机组成原理第二章 第8讲 定点乘法运算 (34页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 9.90 积分 定点乘法运算,,2.3 定点乘法运算,2 ...
- 计算机导论重写算法,计算机导论第二章.ppt
<计算机导论第二章.ppt>由会员分享,可在线阅读,更多相关<计算机导论第二章.ppt(66页珍藏版)>请在人人文库网上搜索. 1.1.第二章计算机系统的组成2.1四个功能部件 ...
最新文章
- 在直播问题上,智能电视们不应该沉默
- 主码索引、聚集索引、非主码索引(辅助索引)、唯一索引、外键索引、复合索引、非主码索引、聚集主码(聚集索引)、单列索引、多列索引、普通索引等...
- eclipse的java帮助文档_java在Eclipse中文apidoc帮助文档导入.doc
- 程序读取计算机设备管理器中各设备的状态(启用/禁用)?(转自大富翁)
- 10 个内存引发的大坑,你能躲开几个?
- 67. magento timezone
- rabbitmq消费者设置手动ack
- 谷歌浏览器打不开网页
- 黑科技智能家电新生儿“智能冰箱”
- go 运行代码遇到的问题(同一个包,不同包 之间的引用报错)
- VC++中使用使用winnet类获取网页内容
- 1147 简单评委打分
- Android 应用页面延缓载入
- 学习总结和方法经验一
- 内存优化之一——内存优化工具参数详解
- IE浏览器 网页错误详细信息 消息: 'events' 为空或不是对象
- 使用Processing实现井字棋
- 【leetcode/二分】有效的完全平方数(夹逼二分)
- 程序员你12点前睡觉了吗?
- python类对会计的帮助_python 会计
热门文章
- c语言表达式的运算顺序
- 【酷熊科技】工作积累 ----------- Unity3D button 回调事件
- 计算机系统的虚拟存储器,其最大容量和实际容量分别取决于哪些因素
- helm 中共享 tpl 写法
- android view onkeydown,【Andoid】自定义View中onKeyDown事件拦截不生效
- 社区党群服务中心管理系统(QQ聊天等功能)
- srand函数--为rand函数设置伪随机数起点
- 计算机学习计划范文,教师个人计算机学习计划书_老师计算机学习计划范文
- 实战:用python绘制《植物大战僵尸》中的石头怪
- Bill Gates 在某大学毕业典礼上的演讲