欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

用Python和Matplotlib画出三次B样条曲线的基本图示

最编程 2024-02-14 17:42:45
...

问题描述:

在计算机图形学课程中,B样条曲线属于重要教学内容之一。已知,m+n+1个控制点可以确定m+1段光滑拼接的n次B样条曲线,其中第i段(i=0,1,2,...,m)曲线上点的定义为

上式用来确定曲线上的一个点,其中

表示控制点,基函数的定义为

对基函数进行展开和化简可得,3次B样条曲线的4个基函数分别为

和贝塞尔曲线类似,B样条曲线的控制点确定曲线的大致形状,曲线的性质则由基函数确定。

以端点性质为例,把t=0和t=1分别代入基函数定义和B样条曲线定义式,可得

下图分别是1段3次B样条曲线和3段光滑拼接的3次B样条曲线,可以看出,与上面推导的结论是相符的。

这一点也可以通过观察3次B样条曲线4个基函数的图像来验证,通过下面的函数图像可知,1段3次B样条曲线起点位置(t=0)由前3个控制点确定(权重或贡献分别为1/6、2/3、1/6),第4个控制点不起作用(权重为0);1段3次B样条曲线的结束位置(t=1)由最后3个控制点确定(权重分别为1/6、2/3、1/6),第1个控制点不起作用(权重为0)。这与通过数学公式推导的结果是一致的。

绘制上面基函数图像的代码如下: