B-spline Curves 学习之B样条基函数计算实例(3)

2023-10-19 20:10

本文主要是介绍B-spline Curves 学习之B样条基函数计算实例(3),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

             B-spline Basis Functions: Computation Examples

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)2 是N3,2(u) 在[0.3, 0.5)上的非零部分。因为N4,1(u) 在 [0.5, 0.6)上非零且等于6 - 10u, (6 - 10u)2 是 N3,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 连续性因为它们都是简单节点。

 

这篇关于B-spline Curves 学习之B样条基函数计算实例(3)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/242092

相关文章

51单片机学习记录———定时器

文章目录 前言一、定时器介绍二、STC89C52定时器资源三、定时器框图四、定时器模式五、定时器相关寄存器六、定时器练习 前言 一个学习嵌入式的小白~ 有问题评论区或私信指出~ 提示:以下是本篇文章正文内容,下面案例可供参考 一、定时器介绍 定时器介绍:51单片机的定时器属于单片机的内部资源,其电路的连接和运转均在单片机内部完成。 定时器作用: 1.用于计数系统,可

问题:第一次世界大战的起止时间是 #其他#学习方法#微信

问题:第一次世界大战的起止时间是 A.1913 ~1918 年 B.1913 ~1918 年 C.1914 ~1918 年 D.1914 ~1919 年 参考答案如图所示

[word] word设置上标快捷键 #学习方法#其他#媒体

word设置上标快捷键 办公中,少不了使用word,这个是大家必备的软件,今天给大家分享word设置上标快捷键,希望在办公中能帮到您! 1、添加上标 在录入一些公式,或者是化学产品时,需要添加上标内容,按下快捷键Ctrl+shift++就能将需要的内容设置为上标符号。 word设置上标快捷键的方法就是以上内容了,需要的小伙伴都可以试一试呢!

AssetBundle学习笔记

AssetBundle是unity自定义的资源格式,通过调用引擎的资源打包接口对资源进行打包成.assetbundle格式的资源包。本文介绍了AssetBundle的生成,使用,加载,卸载以及Unity资源更新的一个基本步骤。 目录 1.定义: 2.AssetBundle的生成: 1)设置AssetBundle包的属性——通过编辑器界面 补充:分组策略 2)调用引擎接口API

计算绕原点旋转某角度后的点的坐标

问题: A点(x, y)按顺时针旋转 theta 角度后点的坐标为A1点(x1,y1)  ,求x1 y1坐标用(x,y)和 theta 来表示 方法一: 设 OA 向量和x轴的角度为 alpha , 那么顺时针转过 theta后 ,OA1 向量和x轴的角度为 (alpha - theta) 。 使用圆的参数方程来表示点坐标。A的坐标可以表示为: \[\left\{ {\begin{ar

Javascript高级程序设计(第四版)--学习记录之变量、内存

原始值与引用值 原始值:简单的数据即基础数据类型,按值访问。 引用值:由多个值构成的对象即复杂数据类型,按引用访问。 动态属性 对于引用值而言,可以随时添加、修改和删除其属性和方法。 let person = new Object();person.name = 'Jason';person.age = 42;console.log(person.name,person.age);//'J

大学湖北中医药大学法医学试题及答案,分享几个实用搜题和学习工具 #微信#学习方法#职场发展

今天分享拥有拍照搜题、文字搜题、语音搜题、多重搜题等搜题模式,可以快速查找问题解析,加深对题目答案的理解。 1.快练题 这是一个网站 找题的网站海量题库,在线搜题,快速刷题~为您提供百万优质题库,直接搜索题库名称,支持多种刷题模式:顺序练习、语音听题、本地搜题、顺序阅读、模拟考试、组卷考试、赶快下载吧! 2.彩虹搜题 这是个老公众号了 支持手写输入,截图搜题,详细步骤,解题必备

swiper实例

大家好,我是燐子,今天给大家带来swiper实例   微信小程序中的 swiper 组件是一种用于创建滑动视图的容器组件,常用于实现图片轮播、广告展示等效果。它通过一系列的子组件 swiper-item 来定义滑动视图的每一个页面。 基本用法   以下是一个简单的 swiper 示例代码:   WXML(页面结构) <swiper autoplay="true" interval="3

Java面试题:通过实例说明内连接、左外连接和右外连接的区别

在 SQL 中,连接(JOIN)用于在多个表之间组合行。最常用的连接类型是内连接(INNER JOIN)、左外连接(LEFT OUTER JOIN)和右外连接(RIGHT OUTER JOIN)。它们的主要区别在于它们如何处理表之间的匹配和不匹配行。下面是每种连接的详细说明和示例。 表示例 假设有两个表:Customers 和 Orders。 Customers CustomerIDCus

《offer来了》第二章学习笔记

1.集合 Java四种集合:List、Queue、Set和Map 1.1.List:可重复 有序的Collection ArrayList: 基于数组实现,增删慢,查询快,线程不安全 Vector: 基于数组实现,增删慢,查询快,线程安全 LinkedList: 基于双向链实现,增删快,查询慢,线程不安全 1.2.Queue:队列 ArrayBlockingQueue: