毕业设计笔记
毕业设计做到现在已经到了0.4版本了,功能在一步步的完善中。
0.1版本时,只能画出一个图,还得需要用按钮来。关键是,实现的思想跟现在有些差别。当时讨论的是用贝塞尔曲线,最多也就三次,因此我就每4个点一组画三次贝塞尔曲线,可是这样的话,最后总会剩下几个点组不成三次贝塞尔曲线,因此还得用到一次和二次。
下面是就是0.1版本画出的图形
讨论之后说这样的图形不行,这不是拟合曲线。当时我就郁闷了,按照我的程序,所有的红线都是拟合出来的,直线也是拟合的一次贝塞尔曲线。人家说不行那就接着找别的法子吧。无意间看见了一篇文章:http://blog.csdn.net/microchenhong/article/details/6316332 。这篇文章给了我很大的启发,对啊,为什么不穿过已知点呢,这样整体都是平滑的曲线了,也不用考虑最后剩余的点数,于是就出了0.2版本。
在0.2版本中,实现的思路是这位作者的思路;经过自己的改进后,能够简要的满足了自己的需求。这个版本中,可以任意的点点,坐标任意、个数任意,当想让图形封闭时,只需要把最后的‘点’点在第一个点的范围内,封闭图形就构成了;这时候程序就开始计算三次贝塞尔曲线,并画在画布上。而且已经可以在画布上画出多个封闭图形了,不再需要按钮来控制图形是否要封闭,这是这个版本最大的进步。
在0.3版本中,实现了画起点和终点。这个时候的代码还没有重构,还是非常的乱,一堆东西都写在一块了,比如判定哪个点是第一个点,什么时候图形要封闭了,等等。而且画起点和终点是有两个问题是需要考虑的:(1)如何判定当前要画的是起点和终点,而不是拟合曲线的点;(2)如何判定只能在画布上画一个起点和终点。这两个问题在0.3版本中并没有很好的实现,我是用全局变量进行控制的。
现在已经发展到0.4版本中了,在0.3版本中的两个问题这里还没有很好的解决,还有就是0.4版本还没有写完,现在已经在0.3的基础上了实现了能够存储拟合曲线上的点,只是不很准确,因为存储的点是用函数计算出来的,而曲线是用库函数画出来的,多少有点微小的误差。
先努力完善一下0.4版本。