B-样条曲线:定义

B-样条曲线:定义

B-spline Curves: Definition

                                                                                                                  

上一页计算实例                回目录                         下一页开曲线     

 


 

给定 n + 1个控制点P0, P1, ..., Pn 和一个节点向量U = { u0, u1, ..., um },  p B-样条曲线由这些控制点和节点向量U 定义

 

 

其中 Ni,p(u)pB-样条基函数。  B-样条曲线形式与贝塞尔曲线相似 。不像贝塞尔曲线, B-样条曲线包含更多信息,即:一系列的 n+1 个控制点, m+1个节点的节点向量,次数 p。 注意n, m p 必须满足m = n + p + 1。更准确地,如果我们想要定义一个有 n + 1控制点的pB-样条曲线,我们必须提供n + p + 2 个节点 u0, u1, ..., un+p+1。另一方面,如果给出了一个m + 1 个节点的节点向量和n + 1 控制点,B-样条曲线的次数是p = m - n - 1。对应于一个节点ui的曲线上的点, C(ui),被称为节点点(knot point。因此,节点点把B-样条曲线划分成曲线段,每个都定义在一个节点区间上。我们将在曲线细分页证明这些曲线段都是 p 次的贝塞尔曲线。

尽管 Ni,p(u) 看起来像Bn,i(u) B-样条基函数的次数(degree)是一个输入数,而贝塞尔基函数的次数取决于控制点的数目。为了改变B-样条曲线的形状,可以修改一个或多个控制参数:控制点的位置,节点位置,和曲线的次数。

如果节点向量没有任何特别的结构,那么产生的曲线不会与控制折线(polyline)的第一边(leg)和最后一边(leg)接触,如下面左图所示。这种类型的B-样条曲线称为开(open B-样条曲线。 我们可能想强制曲线使得它分别与第一个控制点和最后一个控制点的第一边和最后一边相切,像贝塞尔曲线那样。为了做到这些,第一个节点和最后一个节点必须是重复度为p+1。这就产生了所谓的clamped B-样条曲线。参见下边中间的图。通过重复某些节点和控制点,产生的曲线会是  闭(closed曲线。  这种情况,产生的曲线的开始和结尾连接在一起形成了一个闭环如下边右图所示。在本文中,我们将使用clamped曲线。

 

 

 

上图有 n+1个控制点(n=9)以及 p = 3. 。那么,, m 必须是13 所以节点向量有14个节点。为了有clamped效果,前p+1 = 4 和最后4个节点必须一样。其余14 - (4 + 4) = 6 个节点可在定义域任何位置。实际上,曲线是用节点向量 U = { 0, 0, 0, 0, 0.14, 0.28, 0.42, 0.57, 0.71, 0.85, 1, 1, 1, 1 }产生的。注意除了头四个和最后四个节点,中间的节点几乎是均匀分布的。 图形也显示了每个节点区间上的相应的曲线段。实际上,小三角是节点点。

 

 

 

术语的使用

我们使用开(open), clamped 和闭(closed)来描述三种类型的B-样条曲线。但是,不是每一个作者都会使用相同的术语,并没有一个标准用法的共识。例如,有些作者会使用 floating, open periodic 来称呼 开(open, clamped  闭(closed)曲线。其他有些作者会使用"periodic"来称呼一个有均匀节点序列的开(openB-样条曲线。因此,当你读其他文献时,首先要看其定义。否则,你很可能会感到困惑。

下面继续 开(open曲线和 闭(closed 曲线。

                                                                                                                  

上一页计算实例                回目录                         下一页开曲线    

                                                                                                

   译注: 

 

  1.  本文翻译是“B-样条曲线(B-spline Curves)教程”中的一部分,其余翻译部分见“B-样条曲线(B-spline Curves)教程目录”。
  2.  “B-样条曲线(B-spline Curves)教程”是翻译自C.-K. Shene博士的CS3621 Introduction to Computing with Geometry Notes的第6部分“B-spline Curves”。
  3. 本文原文地址:B-spline Curves: Definition   。
  4. 本文首发“博士数学家园
  • 7
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
B样条曲线是计算机图形学中一种重要的曲线表示方法,它具有良好的数学性质和样条插值曲线的优点。在MATLAB中,B样条曲线的绘制可以采用三种方法: 第一种方法通过绘制控制点来调整曲线,具体步骤如下: 1. 首先确定曲线的阶次,选择合适的控制点。 2. 在MATLAB命令窗口输入bsplin()函数,定义B样条曲线的节点向量和基函数矩阵。 3. 创建一组控制点矩阵,使用plot()函数绘制控制点。 4. 输入spmak()函数,将控制点矩阵和基函数矩阵作为参数,创建一个B样条曲线。 5. 使用fnplt()函数绘制B样条曲线。 第二种方法使用B样条曲线拟合已知的数据点,具体步骤如下: 1. 使用MATLAB表示数据点,可以用矩阵或向量的形式。 2. 通过splrep()函数将数据点拟合成B样条曲线,得到节点和系数。 3. 使用splev()函数生成插值点,即插值后的曲线。 4. 使用fnplt()函数绘制B样条曲线。 第三种方法使用B样条曲线插值已知的数据点,具体步骤如下: 1. 通过interp1()函数对数据点进行插值处理,得到插值后的数据点矩阵。 2. 通过splrep()函数将插值后的数据点拟合成B样条曲线,得到节点和系数。 3. 使用splev()函数生成插值点,即插值后的曲线。 4. 使用fnplt()函数绘制B样条曲线。 总之,不管是通过控制点还是通过插值处理,B样条曲线的绘制与调整都十分灵活,可以满足不同场景下的需求和要求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值