三次B样条曲线拟合算法 - Go语言中文社区

三次B样条曲线拟合算法


1 三次B样条曲线方程

B样条曲线分为近似拟合和插值拟合,所谓近似拟合就是不过特征点,而插值拟合就是通过特征点,但是插值拟合需要经过反算得到控制点再拟合出过特征点的B样条曲线方程。这里会一次介绍两种拟合算法。首先介绍B样条的曲线方程。
B样条曲线的总方程为:P(t)=i=0nPiFi,k(t)P(t)=sum_{i=0}^{n} P_{i}F_{i,k}(t) (1)
其中PiP_i


2019-04-18 更新

有小伙伴提到上式(2)的j是什么意思,其实j就是控制点的索引值。这里我把书上的公式摘抄下来,可能看起来更为清晰。
参考书籍:《计算机图形学 第3版》何援军 第13章
三次B样条曲线计算
F0,3(t)=13!j=03(1)jC4j)(t+30j)3F_{0,3}(t)=frac{1}{3!}sum_{j=0}^{3}(-1)^{j}C^{j}_{4})(t+3-0-j)^3

=16[(1)0C40(t+3)3+(1)1C41(t+2)3+(1)2C42(t+1)3+(1)3C43t3]=frac{1}{6}[(-1)^{0}C^{0}_{4}(t+3)^{3}+(-1)^{1}C^{1}_{4}(t+2)^{3}+(-1)^{2} C^{2}_{4}(t+1)^{3}+(-1)^{3}C^{3}_{4}t^{3}]

=16(t3+3t23t+1)=16(1t)3=frac{1}{6}(-t^{3}+3t^{2}-3t+1)=frac{1}{6}(1-t)^{3}

F1,3(t)=13!j=02(1)jC4j)(t+31j)3F_{1,3}(t)=frac{1}{3!}sum_{j=0}^{2}(-1)^{j}C^{j}_{4})(t+3-1-j)^3

=16[(1)0C40(t+2)3+(1)1C41(t+1)3+(1)2C42t3]=frac{1}{6}[(-1)^{0}C^{0}_{4}(t+2)^{3}+(-1)^{1}C^{1}_{4}(t+1)^{3}+(-1)^{2} C^{2}_{4}t^{3}]

=16(3t36t2+4)=frac{1}{6}(3t^{3}-6t^{2}+4)

0 条评论

请先 登录 后评论

官方社群

GO教程

猜你喜欢