几何建模基础-样条曲线和样条曲面介绍

1.概念介绍

1.1 样条曲线的来源

样条的英语单词spline来源于可变形的样条工具,那是一种在造船和工程制图时用来画出光滑形状的工具:富有弹性的均匀细木条/金属条/有机玻璃条,它围绕着按指定位置放置的重物或者压铁做弹性弯曲,以获得所需要的曲线,如下图所示。在计算机科学的计算机辅助设计和计算机图形学中,样条通常是指分段定义的多项式参数曲线

1.2 非均匀的含义

节点矢量分布不是均匀/准均匀的

1.3 节点重复度

样条曲线按节点矢量中节点的分布情况不同。可以划分为四种类型(假设曲线的次数为k,即:degree = k)。注意所有的节点矢量都应该满足:节点序列非递减

1.4 有理的含义

指的是NURBS曲线是用有理多项式形式表达式来定义有理函数是通过多项式的加减乘除得到的函数。在数学中,理性函数是可以由有理分数定义的任何函数,即代数分数,使得分子和分母都是多项式。

2.样条函数分类

2.1 均匀B样条曲线

节点矢量中节点沿参数方向均匀等距分布且重复度均为1,所有节点区间长度

  2.2 准均匀B样条曲线

其节点矢量中端节点具有重复度k+1,所有内节点均匀分布且重复度均为1。

就定义了一个二次(k=2)准均匀B样基函数。

    2.3 分段Bézier曲线

   2.4 非均匀B样条曲线

对于端节点重复度为k+1的曲线,必定插值于控制多边形的首尾控制顶点。GGP中的NURBS曲线都是该类型的曲线。

2.5 Bézier曲线

一条n次的Bézier曲线可以表示为:

将Bézier曲线方程展开:

当参数u从0变化到1,则得到如下所示的曲线。并且可以看出,Bézier曲线上的一点和所有控制顶点都有关系,移动任何一个控制顶点都会使曲线发生变化。这一点和之后讲的B样条曲线和NURBS曲线不同,这两者具有局部修改性,即:修改任意一个控制顶点,只会影响与该控制顶点相关部分的曲线形状。

2.6 有理Bézier曲线

为什么要用有理曲线:

尽管多项式曲线具有很多优点,但是又很多重要的曲线:如圆/椭圆/双曲线(二次曲线)无法精确地用多项式表示。所有二次曲线均可以用有理函数(即两个多项式相除)表示。为了统一表达,需要引入有理表示。

n次有理Bézier曲线的定义为:

2.7 B样条曲线

为什么要使用分段多项式参数曲线

B样条基函数定义:

是有理基函数。它和B样条基函数有相似的性质(参考B样条基函数的性质)。同样,NURBS曲线和B样条曲线有相似的性质(参考B样条曲线的性质)。

B样条基函数有多种定义方式,这里给出德布尔(de Boor)和考克斯(Cox)的递推定义公式。B样条基函数是定义在被称为节点矢量的非递减参数序列上的函数。

B样条曲线:

p次B样条曲线的定义为:

2.8 非均匀有理B样条曲线(NURBS)

一条p次NURBS曲线定义为:

NURBS曲线/B样条曲线/Bézier曲线的关系

如果NURBS曲线中所有权因子均为1,那么这条NURBS退化为B样条曲线。如果B样条曲线只有一段,并且节点矢量(只有一段,只存在两个不同的节点值)均为p+1重。那么这条B样条曲线就是Bézier曲线。

3.样条曲面

3.1 张量积曲面

曲线C(u)是单参数的矢量函数(一元函数),它是直线段到三维空间的映射。曲面是关于两个参数uv的矢量函数(二元函数)。它表示由uv平面上的二维区域R到三维空间的映射。因此曲面可以表示为S(u,v) = ((x(u,v), y(u,v), z(u,v)),uv属于R。有多种表示曲面的形式,在几何造型中应用最广泛的是张量积曲面。

张量积的方法基本上是在两个方向上均采用曲线的处理方式,它也采用基函数和对应几何系数(控制顶点)的乘积的累加和的形式表示曲面。曲面的基函数是u,v的二元函数,它是由关于u的一元基函数和关于v的一元基函数的乘积来构造。几何系数(在拓扑上)被安排为两个方向的n*m的网格。因此张量积曲面具有如下形式:

3.2 B样条曲面

B样条曲面由两个方向上的控制网格、两个节点矢量和两个单变量的B样条基函数的乘积来定义:

3.3 NURBS曲面

一张在u方向为p次,在v方向为q次的NURBS曲面可以表示为:

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/41985.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于LangChain的RAG开发教程(二)

v1.0官方文档:https://python.langchain.com/v0.1/docs/get_started/introduction/ 最新文档:https://python.langchain.com/v0.2/docs/introduction/ LangChain是一个能够利用大语言模型(LLM,Large Language Model)能…

植物大战僵尸融合嫁接版 MAC 版本下载安装详细教程

继植物大战僵尸杂交版火了之后,PVZ改版可谓是百花齐放,最近又有一个非常好玩的模式被开发出来了,他们称为《植物大战僵尸融合嫁接版》 该版本并没有对植物卡牌做改动,而是可以将任意两种植物叠放到一起进行融合,产生新…

思路打开!腾讯造了10亿个角色,驱动数据合成!7B模型效果打爆了

世界由形形色色的角色构成,每个角色都拥有独特的知识、经验、兴趣、个性和职业,他们共同制造了丰富多元的知识与文化。 所谓术业有专攻,比如AI科学家专注于构建LLMs,医务工作者们共建庞大的医学知识库,数学家们则偏爱数学公式与定…

数据分析与挖掘实战案例-电商产品评论数据情感分析

数据分析与挖掘实战案例-电商产品评论数据情感分析 文章目录 数据分析与挖掘实战案例-电商产品评论数据情感分析1. 背景与挖掘目标2. 分析方法与过程2.1 评论预处理1. 评论去重2. 数据清洗 2.2 评论分词1. 分词、词性标注、去除停用词2. 提取含名词的评论3. 绘制词云查看分词效…

昇思25天学习打卡营第12天 | LLM原理和实践:MindNLP ChatGLM-6B StreamChat

1. MindNLP ChatGLM-6B StreamChat 本案例基于MindNLP和ChatGLM-6B实现一个聊天应用。 ChatGLM-6B应该是国内第一个发布的可以在消费级显卡上进行推理部署的国产开源大模型,2023年3月就发布了。我在23年6月份的时候就在自己的笔记本电脑上部署测试过,当…

UI自动化测试框架:PO 模式+数据驱动(超详细)

1. PO 设计模式简介 什么是 PO 模式? PO(PageObject)设计模式将某个页面的所有元素对象定位和对元素对象的操作封装成一个 Page 类,并以页面为单位来写测试用例,实现页面对象和测试用例的分离。 PO 模式的设计思想与…

Python学习中进行条件判断(if, else, elif)

条件判断是编程中必不可少的一部分,它让程序可以根据不同的条件执行不同的代码块。在Python中,主要使用if、elif和else语句来实现条件判断。 基本语法 在Python中,条件判断的基本语法如下: if condition:# 当condition为True时…

NCCL 中的一些辅助debug 知识点

1&#xff0c;调试nccl 启动kernel的方法 ncclLaunchKernel cuLaunchKernelEx ncclStrongStreamLaunchKernel cudaLaunchKernel ncclLaunchOneRank cudaLaunchKernel 在 nccl lib 中&#xff0c;不存在使用<<<grid, block,,>>> 这种类似方式启…

算法题型归类整理及同类题型解法思路总结(持续更新)

1、最优路线 通用思路 1、递归 #案例1-最优路测路线 题目描述 评估一个网络的信号质量&#xff0c;其中一个做法是将网络划分为栅格&#xff0c;然后对每个栅格的信号质量计算。 路测的时候&#xff0c;希望选择一条信号最好的路线&#xff08;彼此相连的栅格集合&#x…

12种增强Python代码的函数式编程技术

前言 什么是函数式编程&#xff1f; 一句话总结&#xff1a;函数式编程(functional programming)是一种编程范式&#xff0c;之外还有面向对象&#xff08;OOP&#xff09;、面向过程、逻辑式编程等。 函数式编程是一种高度抽象的编程范式&#xff0c;它倡导使用纯函数&#x…

Docker-11☆ Docker Compose部署RuoYi-Cloud

一、环境准备 1.安装Docker 附:Docker-02-01☆ Docker在线下载安装与配置(linux) 2.安装Docker Compose 附:Docker-10☆ Docker Compose 二、源码下载 若依官网:RuoYi 若依官方网站 鼠标放到"源码地址"上,点击"RuoYi-Cloud 微服务版"。 跳转至G…

深入理解计算机系统 CSAPP 家庭作业8.22

书本知识够你写出答案,但是如果你想验证你写的答案,就要一些额外的东西.这本书很多题目都是如此 /** mysystem.c*/ #include <stdio.h> #include "csapp.h"int mysystem(char* command) {pid_t pid;int status;if ((pid Fork()) 0) {/*这里是关键用子程序去…

新加坡工作和生活指北:工作篇

文章首发于公众号&#xff1a;Keegan小钢 一年多以前&#xff08;2022 年 8 月初&#xff09;&#xff0c;那时我过来新加坡才 4 个多月&#xff0c;就写了篇文章分享了当时在新加坡的生活和工作体验。文章得到的反响不错&#xff0c;但也反馈出了一些新的问题&#xff0c;比如…

预训练对齐:数学理论到工程实践的桥梁

在人工智能和机器学习领域&#xff0c;预训练模型的对齐是一个至关重要的概念。本篇博客源自听了一场黄民烈老师关于大模型对齐的分享&#xff0c;整理内容如下&#xff0c;供大家参考。 数学理论中的预训练对齐 数学理论上&#xff0c;预训练对齐是什么&#xff1f; 序列…

Keepalived+HAProxy 集群及虚IP切换实践

1、软件介绍 ①Keepalived keepalive是一个用c语言编写的路由软件&#xff0c;这个项目的主要目标是为Linux系统和基于Linux的基础设施提供简单而健壮的负载平衡和高可用性设施。负载均衡框架依赖于众所周知且广泛使用的Linux Virtual Server (IPVS)内核模块提供第4层负载均衡…

srs直播内网拉流带宽飙升问题记录

问题背景 srs部署在云服务器上&#xff0c;32核cpu&#xff0c;64G内存&#xff0c;带宽300M. 客户端从srs拉流&#xff0c;发现外网客户端拉流&#xff0c;cpu和带宽都正常。然而内网客户端拉流&#xff0c;拉流人数超过5人以上&#xff0c;带宽就会迅速飙升。 排查 用srs…

数学建模论文写作文档word

目录 1. 摘要写法1.1 确定题目与方法1.2 编写开头段落1.3 填写问题一1.4 重复步骤3填写其他问题1.5 编写结尾段落1.6 编写关键词 2. 问题重述2.1 问题背景2.2 问题提出 3. 问题分析4. 问题X模型的建立与求解5. 模型的分析5.1 灵敏度分析5.2 误差分析&#xff08;主要用于预测类…

Milvus lite start 及存储策略

背景 今天开始写下Milvus&#xff0c;为了方便&#xff0c;我直接使用的是 milvus-lite 版本&#xff0c;default 情况下&#xff0c;你可能不知道他到底将 db 存储到什么位置了。启动 default-server&#xff0c;看下Milvus 的start及存储逻辑 主逻辑 def start(self):sel…

【绿色版】Mysql下载、安装、配置与使用(保姆级教程)

大家都知道&#xff0c;Mysql安装版的卸载过程非常繁琐&#xff0c;而且卸载不干净会出现许多问题&#xff0c;很容易让大家陷入重装系统的窘境。基于此&#xff0c;博主今天给大家分享绿色版Mysql的安装、配置与使用。 目录 一、Mysql安装、配置与使用 1、下载解压 2、创建…

vue对axios进行请求响应封装

一、原因 像是在一些业务逻辑上&#xff0c;比如需要在请求之前展示loading效果&#xff0c;或者在登录的时候判断身份信息&#xff08;token&#xff09;等信息有没有过期&#xff0c;再者根据服务器响应回来的code码进行相应的提示信息。等等在请求之前&#xff0c;之后做的一…