要用opengl做一个模型,所以这两天一直在看曲线和曲面方面的图形学知识。
关于NURBS的曲线,opengl提供了一般的函数来使用。但如果不了解原理的话,使用起来还是比较困难的。这两天我就一直在艰涩的学习着。因为图形学的知识比较差,高数中的曲线函数学的又比较废,所以进展很慢。
但今天总算对B-样条和贝兹曲线有了些理解。
它们两个可以说是NURBS的基础和前提吧。
关于Bézier curve,理解起来比较容易。wiki上的解释比较形象,
http://zh.wikipedia.org/w/index.php?title=%E8%B2%9D%E8%8C%B2%E6%9B%B2%E7%B7%9A&variant=zh-cn。在此就不过多阐述了。
B-样条可以说缠了我很长时间,起初一直在节点向量和具体的图形之间纠结。而且大多数网上的讲解都是以公式为基础的。我本来就是想快速的形象的理解下的,对公式又比较厌烦,所以看了一天没有明白之后决定从公式看起来。现在感觉是有点小理解了。
关于B-样条,我想主要是这两个东西:控制点和B样条基。可以说曲线的形状就是由它而来的。
\mathbf{S}(t)= \sum_{i=0}^{m+1} \mathbf{P}_{i} b_{i,n}(t) \mbox{ , } t \in [0,1]
由这个公式可以看出来,Pi称为控制  看过Bézier curve的话对控制点应该有些了解,其实它控制了曲线的一个大致的走向,但曲线的细节部分,比如曲率啊这些还要更仔细的控制,这就要用到B样条基。 还是引用下wiki,http://zh.wikipedia.org/w/index.php?title=B-%E6%A0%B7%E6%9D%A1&variant=zh-cn
但想说的就是节点向量这东西。它控制了B样条基的值,间接地决定的曲线的走向。但硬要形象找出两者的联系还是比较困难的。
可以说B样条基决定了控制点的比重,所以Bézier curve是B样条的一个特例。
下面是学习过程中参考的文档,推荐下:http://www.rw-designer.com/NURBShttp://ibiblio.org/e-notes/Splines/Intro.htm