[计算机图形学] 基于C#窗口的Bresenham直线扫描算法、种子填充法、扫描线填充法模拟软件设计(二)
2014-11-23 23:26
701 查看
上一节链接:/article/5083889.html
前言:
在上一节中我们已经大致介绍了该软件的是什么、可以干什么以及界面的大致样子。此外还详细地介绍了Bresenham直线扫描算法的核心思想及实现,并在最终在2-1小节引出工程中对于该算法具体的实现。本节将着手讲解多边形填充算法。
更新和删除的函数(这里面用了C#里List类的一个很好玩的方法,竟然能自定义删除想删的元素,而代码就这么短!)
三、最终效果
如下图最终实现了画点成线,连线成图,并用种子填充和扫描划线两种方法实现了对多边形的填充,有很好的展示效果,希望对想了解这几个算法的朋友有用!(亲-:)看完赞一下哦,让更多的分享)
相关链接
上一节链接: /article/5083889.html
上述工程C#源码:http://pan.baidu.com/s/1kTrAI5h
Bresenham算法讲解pdf:http://pan.baidu.com/s/1sjM6Cax
连点成线课件pdf:http://pan.baidu.com/s/1GV9i2
图形填充课件pdf:http://pan.baidu.com/s/1kTJvfOr
参考博客(good):/article/1393034.html
C#List.Sort的用法:http://msdn.microsoft.com/zh-cn/library/b0zbh7b6.aspx
C#参数传递百度文库:链接太长啦♪(^∇^*)
C#参数传递博客:http://www.cnblogs.com/qq731109249/archive/2012/11/01/2750401.html
C#List.RemoveAll方法:http://technet.microsoft.com/zh-cn/library/wdka673a(it-it,VS.85).aspx
最后还是打击盗版LZ链接:http://www.cnblogs.com/zjutlitao/
前言:
在上一节中我们已经大致介绍了该软件的是什么、可以干什么以及界面的大致样子。此外还详细地介绍了Bresenham直线扫描算法的核心思想及实现,并在最终在2-1小节引出工程中对于该算法具体的实现。本节将着手讲解多边形填充算法。
/// <summary> /// 负责将对下一条扫描线来说已经不是“活动边”的边从aet中删除, /// 删除的条件就是当前扫描线y与边的ymax相等,如果有多条边满 /// 足这个条件,则一并全部删除 /// </summary> /// <param name="AET"></param> /// <param name="y"></param> private int line = 0; private void RemoveNonActiveEdgeFromAet(ref List<EDGE> AET, int y) { line = y; AET.RemoveAll(IsEdgeOutOfActive); } private bool IsEdgeOutOfActive(EDGE obj) { return line == obj.ymax; } /// <summary> /// 更新边表中每项的xi值,就是根据扫描线的连贯性用dx对其进行修正, /// 并且根据xi从小到大的原则对更新后的aet表重新排序 /// </summary> /// <param name="AET"></param> private void UpdateAndResortAet(ref List<EDGE> AET) { AET.ForEach(UpdateAetEdgeInfo);//更新xi My_Sort(ref AET); } private void UpdateAetEdgeInfo(EDGE e) { e.xi += e.dx; }
更新和删除的函数(这里面用了C#里List类的一个很好玩的方法,竟然能自定义删除想删的元素,而代码就这么短!)
三、最终效果
如下图最终实现了画点成线,连线成图,并用种子填充和扫描划线两种方法实现了对多边形的填充,有很好的展示效果,希望对想了解这几个算法的朋友有用!(亲-:)看完赞一下哦,让更多的分享)
相关链接
上一节链接: /article/5083889.html
上述工程C#源码:http://pan.baidu.com/s/1kTrAI5h
Bresenham算法讲解pdf:http://pan.baidu.com/s/1sjM6Cax
连点成线课件pdf:http://pan.baidu.com/s/1GV9i2
图形填充课件pdf:http://pan.baidu.com/s/1kTJvfOr
参考博客(good):/article/1393034.html
C#List.Sort的用法:http://msdn.microsoft.com/zh-cn/library/b0zbh7b6.aspx
C#参数传递百度文库:链接太长啦♪(^∇^*)
C#参数传递博客:http://www.cnblogs.com/qq731109249/archive/2012/11/01/2750401.html
C#List.RemoveAll方法:http://technet.microsoft.com/zh-cn/library/wdka673a(it-it,VS.85).aspx
最后还是打击盗版LZ链接:http://www.cnblogs.com/zjutlitao/
相关文章推荐
- [计算机图形学] 基于C#窗口的Bresenham直线扫描算法、种子填充法、扫描线填充法模拟软件设计(一)
- 边标志扫描算法,种子填充算法,计算机图形学
- 基于扫描种子线算法的多边形区域填充实现
- 计算机图形学 - 全斜率Bresenham直线生成算法
- 计算机图形学-基于OpenGL的直线扫描程序
- 计算机图形学(三)扫描线多边形填充算法讲解与源代码
- 计算机图形学 学习笔记(一):概述,直线扫描转换算法:DDA,中点画线算法,Bresenham算法
- 【图形学】直线扫描算法之---bresenham改进算法(任何斜率,任何方向)
- 种子填充算法(计算机图形学)
- 计算机图形学——直线的三种扫描转换算法
- 基于 Bresenham 算法画填充圆
- 线性扫描+种子填充算法 实现区域填充
- opengl实现直线扫描算法和区域填充算法
- 计算机图形学之--直线生成算法(一)
- 计算机图形学中直线连接算法的Javascript实现
- 计算机图形学 -- 光栅图形学扫描线填充多边形[转]
- 图形填充算法(扫描线种子填充算法)
- 【计算机图形学】基本图形元素:直线的生成算法
- java画直线算法 DDA 计算机图形学
- 计算机图形学之光栅图形学——多边形的扫描转换算法简介