调用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)]