opengl gluNurbsCurve函数问题

wjxkkxx 2012-07-03 04:03:13
theNurb=gluNewNurbsRenderer();
gluNurbsProperty(theNurb,GLU_SAMPLING_TOLERANCE,10.0);
gluNurbsProperty(theNurb,GLU_DISPLAY_MODE,GLU_FILL);
GLfloat ctrlpoints[9][3] = {{4,0,0},{2.828,2.828,0},{0,4,0},{-2.828,2.828,0},
{-4,0,0},{-2.828,-2.828,0},{0,-4,0},{2.828,-2.828,0},
{4,0,0}};
GLfloat knots[12] = {1,2,3,4,5,6,7,8,9,10,11,12};
gluBeginCurve(theNurb);
gluNurbsCurve(theNurb,12,knots,3,&ctrlpoints[0][0],3,GL_MAP1_VERTEX_3);
gluEndCurve(theNurb);
我想绘制一个闭合的圆但上述代码绘制的圆有一个缺口如何解决?
...全文
224 2 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
libralibra 2012-07-03
  • 打赏
  • 举报
回复
你用nurbs画圆也行,但是nurbs曲线过首尾控制点的充要条件是
头尾节点必须重复: 次数+1次
如果你画的是3次nurbs曲线
节点必须为[0,0,0,0,....1,1,1,1]的形式,才能画出来过2端控制点的曲线
libralibra 2012-07-03
  • 打赏
  • 举报
回复
在x-y平面内画一个圆心在[Center_x,Center_y]半径为R的圆
glBegin(GL_LINE_STRIP);
for(int angle = 0; angle <= 360; angle++)
{
GLfloat px = Center_x + R*cos(angle/180.0 *pi);
GLfloat py = Center_y + R*sin(angle/180.0 *pi);
glVertex2f(px,py);
}
glEnd();

19,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 图形处理/算法
社区管理员
  • 图形处理/算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧