调用gluNurbsCurve绘制圆弧

《OpenGL编程指南》第12章第3小结专门介绍调用GLU绘制NURBS曲线或曲面,很可惜的是并未给出绘制圆弧的例子。网上可以找到很多绘制整个园的例子,却没圆弧例子,自己瞎折腾了2个礼拜,绘制的曲线仍然是抛物线而非圆弧。

 

 

今天终于把网上的某课程仔细温习了(传送门),原来绘制一段圆弧需要调用齐次坐标:

GL_MAP1_VERTEX_4

因为控制点(定义点)的权重系数和圆周角的正弦值有关

那么对于半径为1的90度圆弧,令起点为(1,0,0,1),终点为(0,1,0,1),控制点(1,1,0,sin(90/2)),并设置控制节点系数为[0,0,0,1,1,1]就行了吗?

答案是否定的,opengl论坛已经有人碰壁:NURBS circular arc problem

正确答案是:

控制点坐标为w*[1,1,0,1]=[sin(45),sin(45),0,sin(45)]

posted @ 2014-09-29 15:05  pasuka  阅读(910)  评论(0编辑  收藏  举报