(附工程文件)中国海洋大学-计算机图形学实验-Bézier 曲线
·
目录
实验目的
设计函数实现绘制 Bézier 曲线的功能,在这基础上实现对 Bézier 曲线的反走样。
实验环境
C++、cmake、OpenCV
实验内容
本次实验相对以前的实验瞬间简单了许多,针对bezier函数,可以模仿本身有的naive_bezier函数实现微小递增操作,而其中的绘制部分则要改为调用recursive_bezier。针对recursive_bezier函数,需要深刻理解De Casteljau 算法,根据pdf中的说明也可得出这是一个递归的过程,本质上是每次都从杨辉三角的一层越到上一层,并用相同的计算方式得出新的控制点,直到求出最后一个点(也就是最终要着色的点)后返回,然后在bezier函数中对该点着色即可。

而针对提高项,则不能再这么轻易地进行着色。计算着色点位置的逻辑没变所以不需要改变recursive_bezier函数,只需要改变bezier函数,使得计算出来的着色点和周围的点都进行着色即可。为了平滑效果起见我将着色点和包围着它的总共9个点都进行了着色,并根据recursive_bezier计算出来的真正的着色点位置与这9个点的距离,利用1.0f-(d/max_dist)来当系数(其中max_dist为1.5
,因为9个点的最长半径就是这个),乘上255来当他们的颜色,最终判断当前颜色是否比之前颜色更大,如果更大则更新否则不更新,以此来实现反走样。根据最终效果来看反走样很成功。
但是一开始因为不太理解这个反走样应该怎么整饶了很多弯,还好经过思考和同学指点发现了问题并纠正了回来。

实验总结
利用这次实验,我学习了贝塞尔曲线的函数实现方法,能够利用代码实现还原贝塞尔曲线的计算公式,并且基于此再次巩固了反走样的方法等,总体收货颇丰,在坎坷中前进。
更多推荐
所有评论(0)