文章目录

  • 【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​−x0​y1​−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=x0​y1​−x1​y0​

当前象素点为$(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)相关推荐

  1. [XJTUSE]计算机图形学第二章作业,使用OpenGL编程实现DDA、中点画线和Bresenham算法和中点画圆法

    首先是Windows10 + Visual Studio 2019 搭建OpenGL环境可以查看如下链接: 萌新向!!!Windows10 + Visual Studio 2019 搭建OpenGL环 ...

  2. 计算机图形学 第四章 光栅图形学

    第四章 光栅图形学 计算机图形学 第四章 光栅图形学的相关内容,包括:直线段的扫描转换算法.圆弧的扫描转换算法.多边形区域填充.字符的生成.裁剪.反走样 等 Def 光栅显示器:一个像素矩阵(因此,要 ...

  3. 计算机组成原理-第二章 数据表示与运算

    计算机组成原理-第二章 数据表示与运算 一.数据的表示 1.数值型数据的表示(重点难点) 1.1数值型数据的表示--进位制 1.2数值型数据表示-码制 1.3数值型数据的表示--定点数 1.4数值型数 ...

  4. 计算机的定点运算器原理,计算机组成原理第二章第10讲定点运算器的组成.ppt

    <计算机组成原理第二章第10讲定点运算器的组成.ppt>由会员分享,可在线阅读,更多相关<计算机组成原理第二章第10讲定点运算器的组成.ppt(20页珍藏版)>请在装配图网上搜 ...

  5. 计算机组成原理第二章数据,计算机组成原理第二章数据在计算机中的表示

    计算机组成原理第二章数据在计算机中的表示 (91页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 14.90 积分 第二章 数据在计算机中的表示 n 概述 ...

  6. 计算机组成原理第二章测试题,计算机组成原理第二章习题答案.doc

    计算机组成原理第二章习题答案 第2章?习题及解答 2-2?? 将下列十进制表示成二进制浮点规格化的数(尾数取12位,包括一位符号位:阶取4位,包括一位符号位),并写出它的原码.反码.补码三和阶移尾补四 ...

  7. 计算机组成原理组间串行进位,计算机组成原理第二章课件.ppt

    <计算机组成原理第二章课件.ppt>由会员分享,提供在线免费全文阅读可下载,此文档格式为ppt,更多相关<计算机组成原理第二章课件.ppt>文档请在天天文库搜索. 1.2.5 ...

  8. 计算机组成原理乘法运算说明过程,计算机组成原理第二章 第8讲 定点乘法运算...

    计算机组成原理第二章 第8讲 定点乘法运算 (34页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 9.90 积分 定点乘法运算,,2.3 定点乘法运算,2 ...

  9. 计算机导论重写算法,计算机导论第二章.ppt

    <计算机导论第二章.ppt>由会员分享,可在线阅读,更多相关<计算机导论第二章.ppt(66页珍藏版)>请在人人文库网上搜索. 1.1.第二章计算机系统的组成2.1四个功能部件 ...

最新文章

  1. 在直播问题上,智能电视们不应该沉默
  2. 主码索引、聚集索引、非主码索引(辅助索引)、唯一索引、外键索引、复合索引、非主码索引、聚集主码(聚集索引)、单列索引、多列索引、普通索引等...
  3. eclipse的java帮助文档_java在Eclipse中文apidoc帮助文档导入.doc
  4. 程序读取计算机设备管理器中各设备的状态(启用/禁用)?(转自大富翁)
  5. 10 个内存引发的大坑,你能躲开几个?
  6. 67. magento timezone
  7. rabbitmq消费者设置手动ack
  8. 谷歌浏览器打不开网页
  9. 黑科技智能家电新生儿“智能冰箱”
  10. go 运行代码遇到的问题(同一个包,不同包 之间的引用报错)
  11. VC++中使用使用winnet类获取网页内容
  12. 1147 简单评委打分
  13. Android 应用页面延缓载入
  14. 学习总结和方法经验一
  15. 内存优化之一——内存优化工具参数详解
  16. IE浏览器 网页错误详细信息 消息: 'events' 为空或不是对象
  17. 使用Processing实现井字棋
  18. 【leetcode/二分】有效的完全平方数(夹逼二分)
  19. 程序员你12点前睡觉了吗?
  20. python类对会计的帮助_python 会计

热门文章

  1. c语言表达式的运算顺序
  2. 【酷熊科技】工作积累 ----------- Unity3D button 回调事件
  3. 计算机系统的虚拟存储器,其最大容量和实际容量分别取决于哪些因素
  4. helm 中共享 tpl 写法
  5. android view onkeydown,【Andoid】自定义View中onKeyDown事件拦截不生效
  6. 社区党群服务中心管理系统(QQ聊天等功能)
  7. srand函数--为rand函数设置伪随机数起点
  8. 计算机学习计划范文,教师个人计算机学习计划书_老师计算机学习计划范文
  9. 实战:用python绘制《植物大战僵尸》中的石头怪
  10. Bill Gates 在某大学毕业典礼上的演讲