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 表示控制点的总数。
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Catmull-Rom样条曲线是一种数学插值曲线的方法,它常用于计算机图形学和计算机动画中。这种曲线的特点是平滑且自然,可以通过一组数据点来生成连续且曲线流畅的路径。 Catmull-Rom样条曲线的计算是基于组成曲线的数据点和一个参数t的插值公式。它通过使用当前点和其相邻两个点之间的信息来计算每个点处的曲线方向和形状。具体来说,对于给定的四个数据点P0、P1、P2和P3,曲线在P1和P2之间的t值范围内插值。这个t值是一个[0, 1]之间的参数,可以控制曲线的形状。通过改变t值,我们可以调整曲线的曲率和张力,从而得到不同样式的曲线。 Catmull-Rom样条曲线具有一些优点。首先,它是C2连续的,也就是说曲线在连接点处的一阶和二阶导数都是连续的,这使得曲线更加平滑。其次,曲线通过所有给定的数据点,这使得它们在表示路径时具有较好的准确性。此外,如果我们需要在曲线某个位置添加一个新的控制点,只需更新相邻的两个数据点即可,而不会对整条曲线产生明显的影响。 Catmull-Rom样条曲线在计算机图形学和动画中有广泛的应用。它常被用于生成平滑的曲线路径,如自由摄像机移动路径、动态物体轨迹等。此外,它还可以用于生成平滑的形状、曲面等。总之,Catmull-Rom样条曲线是一种非常有用的数学工具,可以在许多计算机图形学和动画应用中发挥重要作用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值