《计算机图形学线宽和线型处理.ppt》由会员分享,可在线阅读,更多相关《计算机图形学线宽和线型处理.ppt(19页珍藏版)》请在人人文库网上搜索。

1、第五讲 线宽和线型处理,1. 直线线宽的处理 (1)线刷子 生成具有一定宽度的直线,可以沿着生成直线时获得的像素点,通过移动一把具有 一定宽度的“线刷子”来实现。,假设直线斜率在-1,1之间,可把线刷子定成垂直方向,并将线刷子中心点对准直线上某一像素点,然后将线刷子沿直线运动就刷出了一条具有一定宽度的直线。 当直线斜率不在-1,1之间时,只需把线刷子运动方向改为水平方向即可。,LineBrush (int x,int y,int color) Drawpixel(x,y,color); Drawpixel(x+1,y,color); Drawpixel(x-1,y,color); Drawpi。

2、xel(x+2,y,color); Drawpixel(x-2,y,color); Drawpixel(x-3,y,color); Drawpixel(x+3,y,color); ,水平线刷子的实现,线刷子的特点: 实现简单、效率高。 斜线与水平(或垂直)线粗细不均匀。 当线宽为偶数个象素时,线的中心将偏移半个象素。 利用线刷子生成线的始末端总是水平或垂直的,看起来不太自然,在两条直线的连接处会产生缺口; 解决:添加“线帽(line cap)”,当比较接近水平的线与比较接近垂直的线汇合时,汇合处外角将有缺口。,线刷子产生的缺口,(a)斜角连接,(b)圆连接,(c)斜切连接,解决:,斜角连接(m。

3、iter join) 圆连接(round join) 斜切连接(bevel join),(2)正方形刷子 把边宽为指定线宽的正方形的中心沿直线平行移动,即可获得具有线宽的线条。 实现正方形刷子最简单的办法是:把正方形中心对准单象素宽的线条上各个元素,并把正方形内的象素全部置成线条颜色。这种简单方法将重复地写象素。这是因为相邻两象素的方形一般会重叠。,方刷子的特点: 简单,容易实现。 效率低。 线的末端总是水平或垂直的; 在两条直线的连接处会产生缺口; 宽度不均匀; 宽度为偶数时无法实现。 方刷子绘制的线条自然地带有一个“方线帽”,SquarBrush (int x,int y,int colo。

4、r) Drawpixel(x,y,color); Drawpixel(x+1,y,color); Drawpixel(x-1,y,color); Drawpixel(x+1,y+1,color); Drawpixel(x-1,y+1,color); Drawpixel(x+1,y-1,color); Drawpixel(x-1,y-1,color); Drawpixel(x,y-1,color); Drawpixel(x,y+1,color); ,方刷子的实现,为了避免重复写象素,可以采用与活性边表类似的技术,为每条扫描线建一个表,存放该扫描线与线条的相交区间左右端点位置,在每个象素使用正方形。

5、刷子时,用该方形与扫描线的相交区间端点坐标去更新原表内端点数据。,3. 其它线宽处理方式 区域填充 改变刷子形状:,2. 圆弧线宽的处理,为生成具有一定宽度的圆弧,可考虑与生成具有一定宽度的直线类似的方法,即用“刷子”来刷出具有宽度的圆弧。,采用线刷子生成具有一定宽度的圆弧时,在小于45度的弧时用水平刷子,在大于45度的弧时用垂直刷子,即在经过曲线斜率为正负1的点时刷子的方向要改变。因此刷出的圆弧在接近水平或垂直方向的部分线条会粗一些,而在斜率接近正负1点附近则细一些。,而当采用正方形刷子时无需改变刷子的方向,只需沿着圆弧像素,把刷子中心对准圆弧移动刷子即可,这样刷出来的直线在接近水平或垂直方。

6、向时最细,而且斜率为正负1时最粗。 此外,还可以采用填充的方式,即先绘制出圆弧的内、外边界,然后在内外边界之间进行填色。,3线型的处理,有时需绘制特殊线型的线条,如虚线、点划线等,以便区分各种不同的意义。如采用实线表示立体线框中可见的轮廓线,用虚线表示不可见的轮廓线,用点划线表示中心线等。,线型可用一个布尔值的数组来存放。例如,用一个18位整数可以存放18个布尔值,用这样的整数存放线型定义时,线型必须以18个象素为周期进行重复。,将写像素语句 DrawPixel(x,y,color) 更改为: if (位串i%18) DrawPixel(x,y,color) 其中i为循环变量,每处理一个象素递增1。,缺点: 采用固定划线长度的实现方法会在不同直线方向上产生出不等长的划线段。原因在于相同个数的象素沿不同方向将生成不同长度的线段。,解决方法: 为实现精确的线型定义,应按照直线的斜率调整线型定义数组中实线段和空白段的象素数目。 或对象素形成的线段的长度进行记录,按长度进行处理,不按象素的个数进行处理。 另一种精确定义线型的方法是:将线上的每一段实划线作为一段单独的线段,定位其始末端点坐标,再调用直线的扫描转换算法实现绘制。

计算机图形学设计线宽代码,计算机图形学线宽和线型处理.ppt相关推荐

  1. 计算机算法设计与分析第四版复习,计算机算法设计与分析(第4版)第1章.ppt

    <计算机算法设计与分析(第4版)第1章.ppt>由会员分享,可在线阅读,更多相关<计算机算法设计与分析(第4版)第1章.ppt(50页珍藏版)>请在人人文库网上搜索. 1.计算 ...

  2. 计算机课程设计参考文献,计算机课程设计专著参考文献 计算机课程设计论文参考文献哪里找...

    [100个]关于计算机课程设计专著参考文献汇总,作为大学生的毕业生应该明白了计算机课程设计论文参考文献哪里找,收集好参考文献后的计算机课程设计论文写作起来会更轻松! 一.计算机课程设计论文参考文献范文 ...

  3. 计算机键盘设计是否合理,计算机键盘设计中的人机工程学体现

    邹伟民 摘要 在计算机人机界面当中,键盘的重要性不言而喻,是应用非常广泛的一种输入工具,原有的计算机键盘在设计的过程中出现了一定的缺陷,造成使用者出现职业病等情况,但是现在很多电脑键盘通过人机工程学进 ...

  4. 计算机网页设计论文范文,计算机网页设计学论文参考文献 计算机网页设计专著类参考文献哪里找...

    [100个]计算机网页设计学论文参考文献供您参考,希望能解决毕业生们的计算机网页设计专著类参考文献哪里找相关问题,整理好参考文献那就开始写计算机网页设计论文吧! 一.计算机网页设计论文参考文献范文 [ ...

  5. 计算机网站设计培训班,成都计算机网页设计篇培训

    成都计算机网页设计篇培训?根据的人才网站显示,每年全国各类企业对网页设计师的人才需求缺口在50万人左右,而实际需求远远大于这个数字,网页设计师不仅IT专业企业需要,广大的非IT企业也需要,一个基本的企 ...

  6. 计算机图形学曲线算法代码,计算机图形学自由曲线绘制算法.doc

    计算机图形学自由曲线绘制算法 宁夏师范学院数学与计算机科学学院 <>实验报告 实验序号: 实验项目名称: 学 号姓 名专业.班实验地点指导教师时 间.实验内容与步骤 1 //TestVie ...

  7. 计算机图形学基础教程代码,计算机图形学基础教程

    <计算机图形学基础教程>由会员分享,可在线阅读,更多相关<计算机图形学基础教程(19页珍藏版)>请在人人文库网上搜索. 1.第一章 1. 计算机图形学的主要研究内容是什么? 答 ...

  8. 平移变换计算机图形学c语言代码,计算机图形学第一次作业——平移,缩放和旋转...

    一. MFC 框架下使用 OpenGL 绘图演示平移.旋转.缩放等操作的具体实现 二. 实现算法 绘制的图形以各种顶点及顶点之间的线.面构成 要想对这些图形进行操作,只需要对各种顶点在坐标系中的坐标进 ...

  9. 2016计算机课程设计,2016年计算机组成原理课程设计-硬布线控制器的设计.doc

    2016年计算机组成原理课程设计-硬布线控制器的设计 编 号: 学 号: 课 程 设 计 教 学 院计算机学院课程名称计算机组成原理课程设计题 目硬布线控制器的设计专 业计算机科学与技术班 级二班姓 ...

  10. 华中科技大学计算机课程设计,华中科技大学计算机学院操作系统课程设计资料报告材料[1].doc...

    <华中科技大学计算机学院操作系统课程设计资料报告材料[1].doc>由会员分享,提供在线免费全文阅读可下载,此文档格式为doc,更多相关<华中科技大学计算机学院操作系统课程设计资料报 ...

最新文章

  1. @TransactionalEventListener与@Async实现事务提交后异步处理事件
  2. 共享打印机,解决驱动检测失败无法连接共享打印机问题
  3. java自定义异常返回_Java自定义异常
  4. angular2 组件交互
  5. java object monitor_Java精通并发-通过openjdk源码分析ObjectMonitor底层实现
  6. MySQL命令行导出数据库
  7. 【AI视野·今日NLP 自然语言处理论文速览 第十期】Fri, 18 Jun 2021
  8. linux线程同步 eventfd,用 eventfd 在线程之间通信
  9. [码海拾贝 之TC] 使用View 定义动态的Class
  10. GBase数据库迁移工具介绍
  11. WeUI for 小程序使用教程文档总结
  12. Excel 空值填充
  13. 网络编程在线英英词典之客户端代码框架搭建(一)
  14. 51单片机 之 8*8 LED点阵(解决程序烧录没反应、显示拖影问题、取字模软件)
  15. 双盘转子动力学仿真c语言程序,[转载]基于ANSYS经典界面的双转子电机的转子动力学仿真...
  16. 利用Python对非接触式IC卡的读写操作
  17. 中国推出人民币外汇货币掉期交易 规避汇率风险
  18. 2022/03/03js作业第一个不同宽度变色第二个是输入几年几月几日判断是今年的第几天(不算闰年2月为28日)
  19. UTF-8/16/32编码
  20. 第一章 TCP/IP 协议

热门文章

  1. 矩阵的初等变换与线性方程组
  2. 保证接口数据安全的10种方案
  3. 测试cpu多核性能软件,处理器多核性能测试_微星 X99A XPOWER GAMMING TITANIUM_CPUCPU评测-中关村在线...
  4. mysql查询分数前三个_MySQL中查询获取每个班级成绩前三名的学生信息
  5. MySQL学习(一)脏读、不可重复读、幻读(鸣人和佐助上学的故事)
  6. Unable to boot device due to insufficient system resources
  7. 美通企业日报 | 三大因素最影响职场女性心理健康;Instagram重要性超过推特脸书...
  8. Hive | 用sort_array函数解决collet_list列表排序混乱问题
  9. 只需几步教你学会域名的使用方法
  10. C语言程序判断一个数是否是素数,C语言中怎么判断一个数是否是素数(即质数)...