30 May 2011

NURBS



degree (度)

linear = 1
quadratic = 2
cubic = 3
quintic = 5
连续性和度数是有关系的。一个度数为3的等式能产生C2连续性曲线

order (阶)

degree表示的是曲线的数学方程的度数,而order则是曲线的阶数,两者相差1
order表示对曲线上的任意一点,有几个控制点会影响它

每order个相邻的控制点形成一个span,所以span可以由控制点数和order来定义: span = cv - order + 1

control points (控制点)

控制点数量应该>=order,所以对于一条直线,至少有两个控制点
每个控制点可以有权重(weight),所有控制点权重相同(1)称为非有理(non-rational)
Nurbs中r表示rational,即可以有理,而不是一定有理。实际中,大多数curve都是非有理的,只有少数如circle,ellipse是有理的。(cricle的控制点权重不同)
一个控制点可以同时控制order个个数的曲线段

knots vector(节点向量)

节点向量是一组个数为(degree+num_of_control_point-1)的
节点向量需要符合两个条件
数字需升序排列
相同的数字重复次数不超过degree
相同数字的重复的次数称为multiplicity,multiplicity为1的knot value成为simple knot;multiplicity为degree的knot value称为full-multiplicity knot.
如一个degree为3的curve的节点可能为:(0, 0, 0, 1, 2, 2, 2, 7, 7, 9, 9)
度为3,有7个控制点,knot vector为(0,0,0,1,2,3,4,4,4),此处该knot vector是uniform的(均匀的)
首尾是full multiplicity knot
中间是simple knot
knot value是平均分布的

Nurbs中的Nu是指Non-Uniform,就是Nurbs允许非均匀的节点向量。

均匀与非均匀的主要区别在于节点向量的值。如果适当设定节点向量,可以生成一种开放均匀样条,它是均匀与非均匀的交叉部分。开放样条在两端的节点值会重复d次,其节点间距是均匀的。

中间的multiplicity knot会使曲线不平滑
控制点与节点向量是成组配对的:每 2 * degree个knots与degree+1个控制点对应
knot span: The range of parameter values between two successive knots in a spline.

Fit Point (插值点)

曲线上的点,点之间由插值计算而来

basis function

Nurbs中的bs表示basis function
Nurbs可以看做一个函数:(x, y, z) = bs_degree_knots_control_points(t),输入一个参数,输出一个点

样条

样条通常是指分段定义的多项式参数曲线
B-样条是样条曲线一种特殊的表示形式,使用basis function为其样条函数
样条插值通常比多项式插值好用, 用低阶的样条插值能产生和高阶的多项式插值类似的效果
B-spline frequently refers to a spline curve parametrized by spline functions that are expressed as linear combinations of B-splines (in the mathematical sense above)

Questions

什么是样条
什么是B样条
B样条和样条有什么区别

References
http://www.pinxue.net/OpenGL/nurbs/NURBS.htm
http://en.wikipedia.org/wiki/Non-uniform_rational_B-spline
http://www.rhino3d.com/nurbs.htm
http://ibiblio.org/e-notes/Splines/Intro.htm
http://zh.wikipedia.org/zh/%E6%A0%B7%E6%9D%A1%E5%87%BD%E6%95%B0
http://zh.wikipedia.org/zh/B%E6%A0%B7%E6%9D%A1
http://www.opengl.org/sdk/docs/man/xhtml/gluNurbsCurve.xml
http://docs.google.com/viewer?url=http://www.cs.duke.edu/courses/fall05/cps124/notes/10_curves/opengl_nurbs.pdf

No comments :

Post a Comment