![e2a4d87f72787dc3b61c3606d4e98d47.png](https://i-blog.csdnimg.cn/blog_migrate/da3a6b3f769912b32c14ff09ee95f1b5.jpeg)
此文仅为记录自己计图实践课作业。
实验目的:
熟悉实验实现软件与要求;
掌握直线扫描转换算法:DDA算法、中点Bresenham算法、Bresenham算法;
实验内容:
使用Matlab实现程序界面化输入和输出;仿照提供的模板,自行增强和扩展界面操作功能;制作三种直线扫描转换算法的流程图,并用程序实现;按照实验报告书撰写实验报告;
![fabfccd8440c51d45e71efd4a009145c.png](https://i-blog.csdnimg.cn/blog_migrate/9502d2e0fb742689c1464961a5a9b431.jpeg)
![3bffee5656e30255064b49969c8519f5.png](https://i-blog.csdnimg.cn/blog_migrate/e5d7080090eaf535d91583c2d250d6ff.png)
![8caa6ebd3a7563ecf905eebf745333ca.png](https://i-blog.csdnimg.cn/blog_migrate/175295826b413fa89b3c824895c08874.jpeg)
![c0d95b592ad8eaaed45dc4d47f0d4242.png](https://i-blog.csdnimg.cn/blog_migrate/328c6801f3eb4c399dc807063de6d776.jpeg)
![c7585c39cf8ae439ae66741e6163f32d.png](https://i-blog.csdnimg.cn/blog_migrate/44c40edf9f7080142d3b9802f9be0cf7.jpeg)
![475e41b5cb0659075fac98502ff55671.png](https://i-blog.csdnimg.cn/blog_migrate/925da619534c30035482f2219015f4c7.jpeg)
matlab代码随附件保存。
几个效果示意图:
![ad1cf644ca0bfd3113c32731afe0bcb8.png](https://i-blog.csdnimg.cn/blog_migrate/a525aee4fe45192845a99d1029d481ad.png)
![8ab8d51fc3ae9f601f3fa06d38412bf2.png](https://i-blog.csdnimg.cn/blog_migrate/1dd0946396a46b51a8ccc96465944e6e.png)
![14c17cf54fcf67f98100c0387d109aa9.png](https://i-blog.csdnimg.cn/blog_migrate/798d1f5fb1bb580723cf527b6b8f376f.png)
总结:
利用matlab进行实验操作,编写好m文件后,通过设计简单的GUI界面进行画线操作。直线扫描转换算法中DDA比较简单,中点Bresenham算法、Bresenham算法稍微复杂一些,需要自己推导在k的任意值的情形下的各种步骤。在Bresenham算法-1>=k时对e的推导时出错了很多次,最后不断检查修改才解决。通过对程序运行计时,我发现这三个算法消耗时间差别并不大,可能是因为数据量小,算法简单。