GAMES101:作业4
附其他所有作业超链接如下:
Games101 作业0:作业0
Games101 作业1:作业1
Games101 作业2:作业2
Games101 作业3:作业3
Games101 作业4:作业4
Games101 作业5:作业5
Games101 作业6:作业6
Games101 作业7:作业7
完整代码获取途径:
https://github.com/liupeining/Games_101_homework
光栅化结束了,下面进入了Geometry的部分。任务是画贝塞尔曲线:
首先什么都不用改,直接运行一下框架查看有无问题:
可以看到运行结果一切正常,接下来开始完成作业。
按照要求:“注释掉 main函数中 while 循环内调用 naive_bezier 函数的行,并取消对 bezier 函数的注释。要求你的实现将 Bézier 曲线绘制为绿色。”
naive_bezier里面是代数方法,作业希望我们用De Casteljau算法来实现,也就是通过递归的方式。实际上是非常简单的递归,代码如下
• bezier:该函数实现绘制 Bézier 曲线的功能。它使用一个控制点序列和一个OpenCV:: Mat 对象作为输入,没有返回值。它会使 t 在 0 到 1 的范围内进行迭代,并在每次迭代中使 t 增加一个微小值。对于每个需要计算的 t,将调用另一个函数 recursive_bezier,然后该函数将返回在 Bézier 曲线上 t处的点。最后,将返回的点绘制在 OpenCV :: Mat 对象上。
void bezier(const std