B-spline Basis Functions: Computation Examples

 本博客转自前人的博客的翻译版本,前几章节是原来博主的翻译内容,但是后续章节博主不在提供翻译,后续章节我在完成相关的翻译学习。

 (原来博客网址:http://blog.csdn.net/tuqu/article/details/4749586)

 原来的博主翻译还是很好的,所以前几章节直接借鉴参考原博主的内容。


1. 简单节点(Simple Knots )

  假设节点向量是U = { 0, 0.25, 0.5, 0.75, 1 }. 因此, m = 4 和u0 = 0, u1 = 0.25, u2 = 0.5, u3 = 0.75 及 u4 = 1。0次(degree)基函数很简单。 它们分别是定义在节点跨度 [0,0.25,), [0.25,0.5), [0.5,0.75) 和 [0.75,1)上的N0,0(u), N1,0(u), N2,0(u)和N3,0(u) ,如下图所示。

  

  下表给出了所有的Ni,1(u):

  

  接着展示这些基函数的图形。因为内节点0.25, 0.5和0.75都是简单的(即, k = 1) 且p = 1,有p - k + 1 = 1非零基函数和三个节点。 而且, N0,1(u), N1,1(u) 和 N2,1(u)在节点0.25, 0.5 和 0.75分别是C0 连续的。

  

  从Ni,1(u)可计算2次基函数。因此m = 4, p = 2, 和 m = n + p + 1,我们有n = 1所以只有两个2次基函数:N0,2(u)和 N1,2(u). 结果见下表:

  

  下图显示了两个基函数。三条垂直蓝线表示节点位置。注意每个基函数是三个2次曲线段的组合曲线。例如, N0,2(u) 是绿色曲线,其是定义在[0,0.25), [0.25, 0.5) 和 [0.5,0.75)上的三个抛物线的联合。这些曲线段连接在一起形成一个光滑的钟形。请验证 N0,2(u,) (resp., N1,2(u)) 在节点 0.25 和 0.5 (resp., 0.5 和 0.75)是 C1 连续的。如前页所提到的,在节点处,这个复合曲线是C1 连续的。

  

2. 带正重复度的节点

  如果一个节点向量包含有正重复度的节点,我们会遇到 0/0的情况,后面会遇到。因此我们定义 0/0 等于0。 幸运的是,这只用于手工计算的情况。对计算机实现,有个有效的算法,不受这个问题影响。如果ui 是重复度 k 的节点(即ui = ui+1 = ... = ui+k-1), 那么节点区间[ui,ui+1), [ui+1,ui+2), ..., [ui+k-2,ui+k-1) 不存在,结果是,Ni,0(u), Ni+1,0(u), ..., Ni+k-1,0(u) 都是零函数。

  考虑节点向量 U = { 0, 0, 0, 0.3, 0.5, 0.5, 0.6, 1, 1, 1 }. 因此,0 和1 是重复度3 (即, 0(3)和  1(3)) 而 0.5 是重复度2 (即, 0.5(2)). 结果是, m = 9而节点分配是

  

  现在计算 Ni,0(u)。 注意因为 m = 9 且 p = 0 ( 0 次基函数), 我们有n = m - p - 1 = 8。如下表所示,只有四个0次非零基函数: N2,0(u), N3,0(u), N5,0(u) 和 N6,0(u).

  

  然后,我们继续计算1次基函数。因为 p 为 1, n = m - p - 1 = 7. 下表显示了结果:

  

  下图显示了这些基函数的图形。

  

  让我们看一个特别的计算,比如N1,1(u). 。它使用下式计算的:

  

  将u1 = u2 = 0 和 u3 = 0.3 代入这个方程产生下式:

  

  因为 N1,0(u) 到处为零,第一项是0/0 因此被定义为零。因而,只有第二项对结果有影响。因为 N2,0(u) 在 [0,0.3)上是1, N1,1(u) 在 [0,0.3)上是1 - (10/3)u  。

  接着,让我们计算所有的Ni,2(u)。因为 p = 2, 我们有 n = m - p - 1 = 6。下表包含了所有的Ni,2(u):

  

  下图显示了所有2次基函数。

  

  让我们选一个典型的计算作为例子,如N3,2(u)。计算式是下式:

  

  代入 u3 = 0.3, u4 = u5 = 0.5 和 u6 = 0.6得到

  

  因为 N3,1(u) 在 [0.3, 0.5)上非零且等于5u - 1.5,(5u - 1.5)2N3,2(u) 在[0.3, 0.5)上的非零部分。因为N4,1(u) 在 [0.5, 0.6)上非零且等于6 - 10u, (6 - 10u)2N3,2(u) 在[0.5, 0.6)上的非零部分。

  让我们研究在节点0.5(2)处的连续问题。因为它的重复度是2 且这些基函数的次数是 2, 基函数 N3,2(u) 在0.5(2)处是C0 连续的。这就是为什么N3,2(u) 在0.5(2)处有个尖锐的角。对不在两个端点处的节点,例如 0.3,保持了 C1 连续性因为它们都是简单节点。

N3,0(u) ,如下图所示。

B-spline Curves 学习之B样条基函数计算实例(3)的更多相关文章

  1. B-spline Curves 学习之B样条基函数的定义与性质(2)

    B-spline Basis Functions 本博客转自前人的博客的翻译版本,前几章节是原来博主的翻译内容,但是后续章节博主不在提供翻译,后续章节我在完成相关的翻译学习. (原来博客网址:http ...

  2. B样条基函数(cubic spline basis)

    B样条基函数用作权重 reference http://blog.csdn.net/tuqu

  3. B-spline Curves 学习之B样条曲线定义(4)

    B-spline Curves: Definition 本博客转自前人的博客的翻译版本,前几章节是原来博主的翻译内容,但是后续章节博主不在提供翻译,后续章节我在完成相关的翻译学习. (原来博客网址:h ...

  4. B样条基函数的定义和性质

    定义:令U={u0,u1,…,um}是一个单调不减的实数序列,即ui≤ui+1,i=0,1,…,m-1.其中,ui称为节点,U称为节点矢量,用Ni,p(u)表示第i个p次(p+1阶)B样条基函数,其定 ...

  5. B样条基函数的定义及系数的意义

    原文链接:http://blog.csdn.net/tuqu/article/details/5177405 贝塞尔基函数用作权重.B-样条基函数也一样:但更复杂.但是它有两条贝塞尔基函数所没有的特性 ...

  6. B-spline Curves 学习前言与动机(1)

    B-spline Curves 学习之前言 本博客转自前人的博客的翻译版本,前几章节是原来博主的翻译内容,但是后续章节博主不在提供翻译,后续章节我在完成相关的翻译学习. (原来博客网址:http:// ...

  7. python3.4学习笔记(十四) 网络爬虫实例代码,抓取新浪爱彩双色球开奖数据实例

    python3.4学习笔记(十四) 网络爬虫实例代码,抓取新浪爱彩双色球开奖数据实例 新浪爱彩双色球开奖数据URL:http://zst.aicai.com/ssq/openInfo/ 最终输出结果格 ...

  8. OGG学习笔记02-单向复制配置实例

    OGG学习笔记02-单向复制配置实例 实验环境: 源端:192.168.1.30,Oracle 10.2.0.5 单实例 目标端:192.168.1.31,Oracle 10.2.0.5 单实例 1. ...

  9. 学习MQ(三) 一个实例

    学习MQ(三) 一个实例. 现在有两台机器A和B,分别安装了MQ6.0,我要通过MQ进行A和B之间的双向通信. 我打算分两步,第一步:实现A到B的数据传输. 在A上: 1.创建队列管理器 QM_100 ...

随机推荐

  1. Java中return的语句

    1.return语句的作用:a.返回一个值,这个值可以是任意类型.b.使程序返回到操作系统(即终止程序)2.java中对于一个函数,不论有没有返回值类型,都可以带有return 语句.但是区别在于,r ...

  2. [Java.web]JSTL 使用

    <%@ page import="cn.itcast.domain.Person"%> <%@ page language="java" im ...

  3. [原创][C#.Winform 控件]Krypton Suite comments

    命名空间:ComponentFactory.Krypton.Toolkit 最新版本:v4.4.0 官网状态:已停用 下载地址1:http://downloads.informer.com/krypt ...

  4. Executors中的几种线程调用方式

    一.Executors是java5以后提供的一套api,使用跟上面非常方便.Sun在Java5中,对Java线程的类库做了大量的扩展,其中线程池就是Java5的新特征之一,除了线程池之外,还有很多多线 ...

  5. mysql主从延时处理方法

    mysql主从延时处理方法 1.今天做数据迁移,4个库总共60G数据左右吧,迁移成功后,发现从库延时在不断的上升,查看从库库表,部分表还没有同步过去 2.网上查询了一些文章,增加一下配置可以解决: # ...

  6. Selenium Webdriver——Xpath轴定位(preceding)

     1.preceding-sibling 选取当前节点之前的所有同级节点 text=出发之前的同级节点: 2.preceding 选取当前节点开始标签之前的所有节点 text=出发节点标签之前的所有i ...

  7. selenium webdriver——JS对Input执行输入

    直接设置value属性, 此方法主要应对输入框自动补全以及readonly属性的element,sendkeys不稳定 比如: Demo:用JS输入 import org.openqa.seleniu ...

  8. c#二维码建立与识别

    QrCodeEncodingOptions options = new QrCodeEncodingOptions(); options.CharacterSet = "UTF-8" ...

  9. SQLITE3 使用总结(转)

    前序: Sqlite3 的确很好用.小巧.速度快.但是因为非微软的产品,帮助文档总觉得不够.这些天再次研究它,又有一些收获,这里把我对 sqlite3 的研究列出来,以备忘记. 这里要注明,我是一个跨 ...

  10. C# MemoryStream先写后读的奇怪现象

    static void Main(string[] args) { MemoryStream ms = new MemoryStream(); BinaryWriter bw = new Binary ...