NURBS Curves

article/2025/8/21 9:23:29

文章目录

  • 1. 定义
  • 2. 性质
    • 2.1 NURBS基函数的性质
    • 2.2 NURBS曲线的性质
  • 3. 修改权重
  • 4. 相关算法
    • 4.1 节点插入:单点插入
    • 4.2 De Boor's Algorithm
  • 5. Rational Bézier Curves
  • 6. Rational Bézier Curves: Conic Sections
  • 7. Circular Arcs and Circles

1. 定义

NURBS(Non Uniform Rational B-spline)曲线通常称为非均匀有理B样条曲线,其数学定义如下:
在这里插入图片描述
其中,
在这里插入图片描述
N i , p ( u ) N_{i,p}(u) Ni,p(u) p p p次B样条基函数, P 0 , P 1 , . . . , P n P_0, P_1, ..., P_n P0,P1,...,Pn为控制点, U = { u 0 , u 1 , . . . , u m u_0, u_1, ..., u_m u0,u1,...,um }为节点向量, w 0 , w 1 , . . , w n w_0, w_1, .., w_n w0,w1,..,wn代表权重.

推导过程:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

容易得到以下结论:

  1. 如果所有权重均等于1,NURBS 曲线退化成B样条曲线.
  2. NURBS 曲线是有理曲线.

2. 性质

2.1 NURBS基函数的性质

  1. R i , p ( u ) R_{i,p}(u) Ri,p(u)是关于 u u u p p p次有理函数.
  2. 如果 u ∉ [ u i , u i + p + 1 ) u∉[u_i,u_{i+p+1}) u/[ui,ui+p+1),则 R i , p ( u ) = 0 R_{i,p}(u)=0 Ri,p(u)=0
  3. u ∈ [ u i , u i + 1 ) u∈[u_i,u_{i+1}) u[ui,ui+1)时,至多存在 p + 1 p+1 p+1 p p p次基函数,即 R i − p , p ( u ) , R i − p + 1 , p ( u ) , . . . , R i , p ( u ) R_{i-p,p}(u), R_{i-p+1,p}(u), ..., R_{i,p}(u) Rip,p(u),Rip+1,p(u),...,Ri,p(u)非0.
  4. u ∈ [ u i , u i + 1 ) u∈[u_i,u_{i+1}) u[ui,ui+1)时, ∑ j = i − p i R j , p ( u ) = 0 \sum\limits_{j=i-p}^{i}R_{j,p}(u)=0 j=ipiRj,p(u)=0.
  5. 如果节点数量为 m + 1 m+1 m+1,B样条基函数的次数为 p p p,个数为 n + 1 n+1 n+1,则 m = n + 1 + p m=n+1+p m=n+1+p.
  6. 基函数 R i , p ( u ) R_{i,p}(u) Ri,p(u) k k k重节点 u u u C p − k C^{p-k} Cpk连续.
  7. 如果对所有的 i i i,均有 w i = c w_i=c wi=c,其中 c c c是一个非0常量,则 R i , p ( u ) = N i , p ( u ) R_{i,p}(u) = N_{i,p}(u) Ri,p(u)=Ni,p(u).

2.2 NURBS曲线的性质

  1. NURBS曲线是次数为 p p p的分段有理曲线组合.
  2. m = n + p + 1 m = n + p + 1 m=n+p+1.
  3. Clamped NURBS曲线经过 p 0 p_0 p0 p n p_n pn两个控制点.
  4. 强凸包性:
    u ∈ [ u i , u i + 1 ) u∈[u_i,u_{i+1}) u[ui,ui+1)时,曲线段 C ( u ) C(u) C(u) 在由控制点 P i − p , P i − p + 1 , . . . , P i P_{i-p}, P_{i-p+1}, ..., P_i Pip,Pip+1,...,Pi组成的凸包内.
  5. 局部修改特性:
    改变控制点 P i P_i Pi的位置,只会影响处在 [ u i , u i + p + 1 ) [u_i,u_{i+p+1}) [ui,ui+p+1)区间内的曲线段 C ( u ) C(u) C(u).
  6. C ( u ) C(u) C(u) k k k重节点 u u u C p − k C^{p-k} Cpk连续.
  7. 变差递减性.
  8. B样条曲线和贝塞尔曲线是NURBS曲线的特例.
  9. 投影不变性.

3. 修改权重

增加(或,减少)权重值会将曲线拉向(或,远离)控制点 P i P_i Pi。当 w i w_i wi值无穷大时,曲线通过控制点 P i P_i Pi,当 w i w_i wi为零时,控制点 P i P_i Pi对曲线无影响。

进一步推导:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
可得以下结论:
如果 w k w_k wk为非负,则 C ( u ) C(u) C(u)始终位于 C 0 ( u ) C^0(u) C0(u) P k P_k Pk的线段上,其中 C 0 ( u ) C^0(u) C0(u) w k = 0 w_k=0 wk=0对应的点, u u u [ u k , u k + p + 1 ] [u_k,u_{k+p+1}] [uk,uk+p+1]中。并且,当 w k w_k wk从0变为无穷大时, C ( u ) C(u) C(u) C 0 ( u ) C^0(u) C0(u)移到 P k P_k Pk,如果 w k w_k wk是无穷大, C 0 ( u ) C^0(u) C0(u)变成 P k P_k Pk
示意图:
在这里插入图片描述

4. 相关算法

4.1 节点插入:单点插入

假设有 N + 1 N + 1 N+1个控制点 P 0 , P 1 , … , P n P_0,P_1,…,P_n P0P1Pn,其相关权值分别为 W 0 , W 1 , … , W N W_0,W_1,…,W_N W0W1WN,节点向量为 U U U,次数 p p p.
P i = ( x i , y i , z i ) P_i=(x_i,y_i,z_i) Pi=(xiyizi),则控制点 P i W = ( w i x i , w i y i , w i z i , w i ) P^W_i=(w_ix_i,w_iy_i,w_iz_i,w_i) PiW=(wixi,wiyi,wizi,wi) 0 < = i < = n 0<=i<=n 0<=i<=n,节点向量 U U U定义了一个 p p p次的四维B样条曲线。在这个四维B样条曲线中插入一个新的节点 t t t,得到一组新的控制点 Q i W = ( X i , Y i , Z i , W i ) Q^W_i=(X_i,Y_i,Z_i,W_i) QiW=(Xi,Yi,Zi,Wi) 0 < = i < = n 0<=i<=n 0<=i<=n。通过将 Q i W Q^W_i QiW的前三个分量除以第四个分量,将 Q i W Q^W_i QiW投影回三维空间,得到给定NURBS曲线的新的控制点集。

4.2 De Boor’s Algorithm

只需将每个控制点乘以其权重,将NURBS曲线转换为4D B样条曲线,在此4D B样条曲线上执行de Boor算法,然后通过将前三个分量除以第四个分量,并保留第四个分量作为其新权重,将生成的曲线投影回3D。

5. Rational Bézier Curves

有理贝塞尔曲线:

在这里插入图片描述在这里插入图片描述

6. Rational Bézier Curves: Conic Sections

构建圆锥曲线:
示意图:
在这里插入图片描述
计算:
在这里插入图片描述
在这里插入图片描述

抛物线:在这里插入图片描述
在这里插入图片描述

椭圆:
在这里插入图片描述
双曲线:
在这里插入图片描述

结论:
由三个非共线控制点 P 0 、 P 1 和 P 2 P_0、P_1和P_2 P0P1P2定义的有理Bézier曲线,当 w w w大于、等于或小于1时,分别为双曲线、抛物线或椭圆。

7. Circular Arcs and Circles

周期性的弧或圆:
示意图:
在这里插入图片描述
计算:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
结果:
在这里插入图片描述

完整圆的构建:
在这里插入图片描述


http://chatgpt.dhexx.cn/article/cZiM1jjO.shtml

相关文章

Matlab中安装NURBS工具箱及使用

文章目录 前言一、NURBS工具箱的安装1 打开matlab&#xff0c;点击附加功能2 输入nurbs3 下载后压缩包解压4 将解压后的文件夹放到matlab文件夹的toolbox文件夹里面5 选择“预设路径”上方的“预设” 二、NURBS工具箱的使用2.1 NURBS 结构&#xff1a;2.2 对NURBS工具箱的初步理…

计算几何07_NURBS曲线与曲面

B样条方法在表示与设计自由曲线曲面时展现出强大的威力&#xff0c;但在设计与表示初等曲线曲面时却遇到了麻烦。因为B样条曲线、及其特例的Bezier曲线都不能精确表示除抛物线以外的二次曲线弧&#xff0c;B样条曲面、及其特例的Bezier曲面都不能精确表示除抛物面以外的二次曲面…

利用NURBS曲线进行点云曲面拟合算法

文章目录 介绍NURBS曲线C实现思路代码实现读取点云数据对点云进行预处理创建曲面模型将曲面模型转换为NURBS曲面 完整代码opennurbs.h说明vs2019安装OpenNURBS库编译OpenNURBS库 介绍 点云拟合曲面算法是将点云数据拟合成一个二次或高次曲面模型的算法。这种算法主要用于三维模…

离散数据点NURBS曲线拟合算法

问题描述&#xff1a;对于离散数据点集来说&#xff0c;其主要特征点一般可以描述原始曲线轨迹的基本形状。对于大量的离散数据点来说&#xff0c;提取主要的特征点后在进行曲线拟合&#xff0c;这样可以降低计算次数&#xff0c;极高拟合效率。 可以描述原始曲线几何形状的 特…

Nurbs建模

多边形建模和Nurbs建模 Nurbs始终有四个侧面&#xff0c;由有理多项式方程创立的曲线&#xff0c;由控制点定义的曲线。 Nurbs曲线是由一系列多项式构成的&#xff1a;axb0,ax^2bxc0… 能够将任何平面转换为Nurbs NURBS能买构建几乎所有的形状

matlab中Nurbs库的简单使用

文章目录 前言一、简单例子二、复杂一点的NUrbs曲面nrbeval函数 前言 只是为方便学习&#xff0c;不做其他用途&#xff0c;记录matlab中Nurbs的使用&#xff0c;好像记得是添加的matlab中的一个Nurbs库来着。前一段使用&#xff0c;现在不记得了&#xff0c;使用这个程序得先安…

NURBS

非均匀有理样条NURBS( Non-Uniform Rational B-Splines ) 是近年来发展迅速&#xff0c;应用广泛的一种表示曲线曲面造型技术。它能够精确地表示二次规则曲线曲面&#xff0c;从而能用统一的数学形式表示规则曲面与自由曲面&#xff0c;具有可影响曲线曲面形状的权因子&#xf…

【Matlab-NURBS工具箱简要教程及实例 】

Matlab-NURBS工具箱使用教程 添加NURBS工具箱 在附加功能里添加NURBS工具箱 安装完成后可以在’函数’处查看API&#xff0c;也打开文件夹查看。 强烈推荐同步安装gnurbs工具&#xff0c;它完全代替nrbplot展示曲面&#xff0c;且允许用户进行节点拖拽等操作。 NURBS 结…

Nurbs曲线详解

NURBS&#xff08;Non Uniform Rational B-spline&#xff09;曲线通常称为非均匀有理B样条曲线&#xff0c;其数学定义如下&#xff1a; 基函数由递推公式定义&#xff1a; 非均匀&#xff1a;指节点向量的值与间距可以为任意值。这样我们可以在不同区间上得到不同的混合…

NURBS曲面结构及生成原理、修改方法

NURBS全称是Non-Uniform Rational B-Splines中文叫做非均匀有理B样条曲线&#xff0c;Rhinoceros中的模型曲线便是通过NRUBS曲线进行描述&#xff0c;曲面则是通过U和V两个方向的曲线集合来得到&#xff0c;如图&#xff1a; Rhino如何生产曲面原理 由上图我们发现就像织布一样…

MySQL数据库增量备份及恢复方案

MySQL数据库增量备份及恢复方案 u 前言 操作系统崩溃、电源故障、文件系统崩溃和硬件故障等异常状况都可能导致我们正在使用的数据库出现故障而产生数据库中数据不一致的情况。为了保证数据库使用安全&#xff0c;必须定期备份数据库&#xff1b;数据库备份可以分为&#xff1…

差异增量备份和累积增量备份区别(有图)

所谓增量备份&#xff0c;顾名思义即是每次备份仅操作那些发生了"变化"的数据块。RMAN中增量备份有两种&#xff1a;Differential 方式和Cumulative方式。 1、差异增量备份Differential 说起Differential&#xff0c;相当有意思&#xff0c;大家可以这样理解。有一…

数据库的备份与恢复(完全备份,增量备份)

目录 1. 数据库备份的分类1.1 从物理与逻辑的角度&#xff0c;备份可分为1.2 从数据库的备份策略角度&#xff0c;备份可分为 2. 常见的备份方法3. MySQL完全备份与分类3.1 完全备份概述3.2 备份方式3.2.1 物理冷备份及恢复3.2.2 使用专用备份工具 mysqldump3.2.2.1 备份库3.2.…

图解完全备份,增量备份,差异备份

因为网上说的全部都是copy的&#xff0c;所以自己去理解了一下然后整理了一下。 完全备份 完成备份我相信大家都理解&#xff0c;就是一下子备份所有的内容。 增量备份 如上图所示&#xff0c;比如一家公司&#xff0c;周一这家公司进行完全备份&#xff0c;然后周二备份周一…

MySQL 增量备份与恢复

目录 引言一、MySQL 增量备份1. 增量备份特点2. 示例 二、MySQL 增量恢复1. 增量恢复的场景2. 丢失完全备份之后更改的数据的恢复3. 完全备份之后丢失所有数据4. 基于时间点与位置的恢复4.1 基于时间点的恢复4.2 基于位置的恢复 5. 指定企业备份策略的思路 总结 引言 完全备份…

增量备份恢复

** 增量备份恢复案例 **1、配置mysql&#xff0c;设置日志文件 [rootlocalhost bak]# vim /etc/my.cnf 添加&#xff1a; log-binmysql-bin2、重启mysqld服务 systemctl restart mysqld查看日志文件&#xff1a; mysqlbinlog /usr/local/mysql/data/mysql-bin.0000013、创…

mysql实现增量备份

有点要注意 如果你误删了表 想通过这个恢复 必须恢复日志里面有创建表的日志 不然的话是无法回复的 就是必须是从你开始创建表的时候就已经记录日志了 恢复到哪个位置 就按照哪个位置来计算 mysql 5.0不支持增量备份 增量备份定义 mysql数据库会以二进制形式 自动把用户对my…

什么是全量备份,增量备份,差异备份?

背景 今天我司服务器工程大牛看我在备份数据,冷不丁提到了差异备份;但是才疏学浅的我却不知何为差异备份,故而以此为引,开始了对全量备份,增量备份,差异备份这三者的研习;经过一番寻觅,最终找到了他们.呵呵 希望大家有所受益! 问题 1. 什么是全量备份&#xff1f; 2. 什么是增量…

MySQL完全备份和增量备份

MySQL日治管理、数据库备份与恢复 备份的主要目的是灾难恢复&#xff0c;备份还可以测试应用、回滚数据修改、查询历史数据、审计等。而备份、恢复中&#xff0c;日志起到了很重要的作用 一、日志 MySQL的日志默认保存位置为 /usr/local/mysql/data 1.日志类型与作用 ①re…

MySQL 数据库备份(增量备份与恢复)

目录 一、MySQL 增量备份 1.增量备份的概念 1.1 为什么使用增量备份 1.2 增量备份的特点 2.增量备份示例 二、MySQL 增量恢复 1.增量恢复的场景 2.丢失完全备份之后更改的数据的恢复步骤 3.完全备份之后丢失所有数据的恢复步骤 4. 基于时间点与位置的恢复 4.1 基于时间…