**
计算机图形学MFC学习笔记:Bresenham直线算法
**






本次课的扩展题目:绘制金刚石图案

圆周等分20分然后各个点之间连线

有空以后看能不能搞出来吧,目前阶段是以补充老师课堂讲解、巩固知识为主,同时Unity那边也要跟进,暂时没有这么多时间给我这个又酸又菜又多余的懒人酸菜鱼来钻研·······
数学极差的我有点看不明白算法讲解,又找了个MOOC视频补充学习:
https://www.icourse163.org/learn/CAU-45006?tid=1463638445#/learn/announce

首先是关于为什么d要减一的问题

还有我觉得这个不太好理解的、代码里采用的Bresenham整数算法


上面这个MOOC讲解的很详细~
https://www.icourse163.org/learn/CAU-45006?tid=1463638445#/learn/content?type=detail&id=1241809230&cid=1264437056






这样,就把原来是小数的0.5和dx、dy都转换成了整数


应用广泛的原因:
效率提高到整数加法,并且不受直线方程类型的限制。
捉虫++



好吧,下一页告诉我,他是个宏定义的玩意········(有话能早点说么·······)

MFC的命名区分大小写!区分大小写!区分大小写!I、L、J这样的看清楚!!!!
刚刚这个地方一直报错,检查半天不得法门,最后一看,我把类名当中的L写成了小写········

改正之后:

我的内心:

我根据他书本前面的讲解,自己加上了ROUND的宏定义



中间有个需要自行添加数组?的操作,百度一波走起,因为写[i]会报错,我就先在类向导里面写成单个变量,然后再手动把定义改成数组:
https://blog.csdn.net/qq_17242957/article/details/46788619

代码总算是敲完了,然后,又出现 这个神奇的问题
按我的经验,一般是定义了的函数没有写内容导致的


我感觉这里析构函数写成虚函数不正确,他一直报错”无法解析的外部命令“,最后看也不影响什么,就写成了没有任何功能的析构函数处理。


现在让我们看看效果:

emmm为什么只有最后一条线渐变成功了········


检查一下负责画线的,CLine里面的LineTo函数,最后一条线渐变成功说明不是算法的问题,十有八九是我哪个地方参数写错了之类的。

宏定义他又不认识,就离谱。我直接把宏定义内容给他粘过去。

可是并没有什么变化

好像这个函数也没问题啊······那也许是我初始值搞错了····?
一顿操作猛如虎检查下来,我也不知道为什么了,就按自己的理解给他改写了一下代码:
只要i大于等于1,说明至少画了两个点可以连直线了,就MoveTo移到前面画的点作为起点,LineTo当前画的第i个点连一条渐变直线。

苍天不负有心人,这回可算是正常显示了


现在是凌晨3.17分,终于可以愉快收工了。
最后以MOOC视频里面老师的总结作为收尾吧,这个小结我觉得说得很有道理,大家共同勉励,一起学习,努力成为更好的自己~~

本文记录了学习过程中如何使用Bresenham算法在MFC中绘制金刚石图案,包括理解算法原理、整数转换和效率提升,以及解决编程过程中的问题和调试技巧。

被折叠的 条评论
为什么被折叠?



