gpt4 book ai didi

opengl - 绘制 NURBS 曲线时节点的含义?

转载 作者:行者123 更新时间:2023-12-02 07:23:58 24 4
gpt4 key购买 nike

我正在使用gluNurbsCurve绘制一些带有一些控制点的曲线。我已经按照红皮书中描述的方式正确运行了基本设置,并且正在尝试对其进行扩展。
该示例如下所示:

float knots[8] = {0,0,0,0,1,1,1,1};
float pnts[4][3] = { {...},{...},{...},{...} };
GLUnurbsObj *m = gluNewNurbsRenderer();
gluBeginCurve(n);
gluNurbsCurve(n, 8, knots, 3, pnts, 4, GL_MAP1_VERTEX_3)
gluEndCurve(n);

我想知道的一件事是结数据的含义。它如何影响结果?我还可以在那里尝试哪些其他选项?
由于某种原因,我找不到任何正确解释这一点的教程。

最佳答案

实际上,网上有很多网站可以解释结向量。它不是 GL 特有的东西,而是 NURBS 的固有属性。所以在谷歌中输入“NURBS结向量”将会得到详细的解释。

我只是想说,通常结向量的长度为knot_vector_length = number_of_points + Degree_of_curve + 1,唯一重要的是比率而不是绝对值。因此 {0,1,2,3}{0,2,4,6}

相同

在我看来,最重要的结向量是:

1) {0,1,2,3,4,5,6,...}

如果您重复最后一个(或第一个) Degree_of_curve-1 点,这将允许您轻松地以曲率连续性延伸曲线,但这意味着曲线实际上并未穿过其起点和端点,因此您必须重复最后一个(或第一个) Degree_of_curve-1 点来创建连续的闭合曲线。

另一个重要的形式是

2) {0,0,0,1,2,3,...,n,n,n}

而开头的 0 和结尾的 n 则重复 Degree_of_curve + 1 次。这也是您使用的形式。这将为您提供一条 NURBS 曲线,该曲线从您指定的第一个点开始,到您指定的最后一个点结束。但它只提供位置连续性。因此,如果您用它制作一条闭合曲线,那么您很可能会出现切向不连续性。

顺便说一句。如果您只有 level_of_curve + 1 点并使用第二种形式,那么您只有 01 。生成的样条线将与贝塞尔曲线相同。

如果没有图像或数学背景(伯恩斯坦多项式),这真的很难解释

关于opengl - 绘制 NURBS 曲线时节点的含义?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6237297/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com