【问题标题】:GLU NURBS - how to set control point weights?GLU NURBS - 如何设置控制点权重?
【发布时间】:2010-01-08 02:58:11
【问题描述】:

我正在编写一个使用 OpenGL 的 GLU 扩展进行渲染的 NURBS 类,但我刚刚意识到我不知道如何设置控制点权重。它不在红皮书或 GLU 文档中,网络也没有提及太多。 GLU 的 NURBS 实现是否可能不包含此功能?如果是这样,我很惊讶他们居然把它称为 NURBS 而不仅仅是 B 样条。

编辑:将“节点权重”更改为“控制点权重”。

【问题讨论】:

  • 抱歉,我帮不上忙,但您是否相信 google 中的“glu nurbs knot weights”返回 this question 作为热门话题?你在 28 分钟前才写的!这太奇怪了。

标签: opengl nurbs glu


【解决方案1】:

您在 NURBS 术语中陈述的问题是您想要一条有理曲线而不是非有理

查看我们拥有的gluNurbsCurve 原型:

void gluNurbsCurve(GLUnurbsObj *nobj, // NURBS object 
                   GLint nknots,      // number of knots
                   GLfloat *knot,     // knot values
                   GLint stride,      // stride
                   GLfloat *ctlarray, // control points array
                   GLint order,       // order of data
                   GLenum type)       // data type

其中一个参数是*knot,但是它不是权重数组。 glu 处理结权重的方式有点混乱,您可以阅读它here

ctlarray 和最后一个参数是您感兴趣的。最后一个参数 type 是二维求值器类型之一。通常,您可以分别将 GL_MAP2_VERTEX_3 用于非有理控制点或 GL_MAP2_VERTEX_4 用于有理控制点。

有关详细信息,请参阅Red Book

【讨论】:

  • 我关心的不是如何设置间距,而是如何设置权重。我想我可能通过提到“结权重”来混淆这个问题,而我应该提到控制点权重(现在已修复)。我没有在您的链接中找到权重问题的答案。你能详细说明一下吗?
  • 我假设我找到了解决您问题的方法。我编辑了我的答案。
  • 同构坐标!当然!非常感谢您的回答
猜你喜欢
  • 1970-01-01
  • 2011-12-09
  • 1970-01-01
  • 1970-01-01
  • 2018-03-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多