B-样条曲线笔记

参考:https://zhuanlan.zhihu.com/p/50626506
At+B(1-t)
At+B(1-t)+C(-4t²+4t)
B-样条曲线最终目的:只需要修改t值,就可以表述曲线上的任意点。
B样条曲线的基本参数中其实就几样,t,阶数,控制点列表,节点表,基本函数表
t值通过控制点和权重相乘计算得出的结果。

控制点列表代表一系列需要用户提供的顶点。

阶数越高,生成每个t值所需要的控制点数越多。阶数=所有权重中t值的最高次幂。(At+B(1-t)+C(-4t²+4t)二阶曲线)

节点表是生成基本函数表的关键参数,大小严格等于控制点数量+阶数+1。节点表的参数是人为设置的,一般设置的方法有两种:顺序方法和Clamped方法。前者用于制作标准的B-样条开曲线和闭曲线,后者用于制作一种比较实用的B-样条曲线。
顺序列表只需要从0-1线性递增设置即可,Clamped列表则需要将前后各阶数+1个节点设置成0。
举个例子就能讲的很清楚:假设曲线有6个控制点,阶数是3阶,那么节点表大小=6+3+1=10。
如果是顺序列表,只需要按顺序设置:0,1/9,2/9,3/9,4/9,5/9,6/9,7/9,8/9,1 ;
如果是Clamped列表,由于是3阶,前面3+1个参数均设置为0,后面3+1个参数均设置为1,然后剩余参数均匀递增:0,0,0,0,1/3,2/3,1,1,1,1 。
基本函数表公式
knot代表节点,也就是我们前面提到的节点表。knoti代表节点表中的第i个元素。
而 Bi,deg(t)就是基本函数表的参数了。没错,基本函数表是一个二维数组。参数i和deg分别表示第几个元素和阶数。 所以 Bi,deg(t)的意思就是用户输入值为t时,基本函数表在第deg阶的第i个元素的值。
整个公式实际上是两个部分相加。而加号两侧的公式格式一致:一个通过节点表 knot 和 t 经过一系列计算得出的权重值和一个比当前更低一阶的基本函数表值的乘积。
B-样条算法规定,回退到0阶时使用以下公式:
在这里插入图片描述
设最终t值在B-样条曲线的对应位置为 C(t) ,则最终B-样条曲线计算公式为:在这里插入图片描述
而 Pi 便是我们前面一直提到的控制点,而且在这里是第i个控制点。求和符号上的 n 表示控制点的总数。
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值