采用Cardinal法构造插枝分段三次样条曲线 : 原理篇

原创 2006年05月29日 17:11:00
       Cardinal样条是插值分段三次曲线,并且每条曲线段的终点位置均指定切线.不过Cardinal样条不用给出终点的切线值.Cardinal样条中,一个控制点的斜率可以由两个相邻控制点的坐标进行计算.
       一个Cardinal样条可由4个连续控制点完全确定,中间2个控制点是曲线段端点,其他两个点用于计算曲线段端点斜率.
       4个连续控制点为Pk-1,Pk,Pk+1,Pk+2,P(u)是控制点Pk和Pk+1之间的参数三次函数式(u为参数), 则从Pk-1到Pk+2间的4个点用于建立Cardinal样条的边界条件为:
       P(0) = Pk
       P(1) =  Pk+1
       P'(0) = (1 - t) * (Pk+1 - Pk-1)                                     (1)
       P'(1) = (1 - t) * (Pk+2 - Pk)
 
       也就是说,控制点Pk和Pk+1处的斜率分别与弦Pk+1Pk-1和Pk+2Pk成正比.
       t: 参数t为张力(tension)系数,因为t控制Cardinal样条与输入控制点之间的松紧程度,t0的时候,Cardinal样条又称为Catmull-Rom样条或Overhauser样条.
 
       解上面的4个方程,并将之转换成矩阵形式,如下:
                                 (2)
                           
其中, Cardinal矩阵是:
                                 (3)
               其中    s = (1 - t) / 2        
 
将矩阵方程(2)展开成多项式形式,可以得到
 
       P(u) = Pk-1(-su3+ 2su2 - su) + Pk[(2 - s)u3 + (s - 3)u2 + 1] + Pk+1[(s - 2)u3 + (3 – 2s)u2 + su] + Pk+2(su3 - su3)

相关文章推荐

采用Cardinal法构造插枝分段三次样条曲线 : 代码篇

说明:Spline类就是Cardinal样条曲线了,这个类里面记录了4个控制点:m_startControlPoint, m_startPoint, m_endPoint, m_endControlP...

采用Cardinal法构造插枝分段三次样条曲线 : 实战篇

  版权声明:   本文由timewolf完成,首发于CSDN...

数值作业:Hermite插值法之C语言实现代码

这个问题个人也看的不太懂,参考百科上的计算说明,把它转化成相应成代码即可.埃尔米特插值是另一类插值问题,这类插值在给定的节点处,不但要求插值多项式的函数值与被插函数的函数值相同。同时还要求在节点处,插...

多文档,多种文件类型、文件扩展名下打开合适的文档模板

一、问题的提出我建立了一个名为MDI的多文档工程,想打开两种格式的文件于是在string table更改如下:IDR_MDITYPE:/n图像/n新建图像/n图像文件(*.aaa;*.bbb)/n.a...

三次B样条曲线拟合算法

三次B样条曲线方程B样条曲线分为近似拟合和插值拟合,所谓近似拟合就是不过特征点,而插值拟合就是通过特征点,但是插值拟合需要经过反算得到控制点再拟合出过特征点的B样条曲线方程。这里会一次介绍两种拟合算法...

Qt实现cardinal样条曲线例子

  • 2017年10月23日 15:40
  • 41KB
  • 下载

Cardinal样条曲线Qt代码

  • 2014年10月15日 09:00
  • 8KB
  • 下载

Opencv 三次样条曲线(Cubic Spline)插值

本文详细介绍了样条曲线的相关内容,以常用的三次样条曲线为例,进行详细的推导,并提供了基于Opencv的代码和测试程序。...
  • YhL_Leo
  • YhL_Leo
  • 2015年08月16日 22:03
  • 9645

Cardinal样条曲线_习题7.1

  • 2011年12月06日 20:55
  • 2.24MB
  • 下载

三次B样条曲线

  • 2013年05月11日 16:32
  • 603KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:采用Cardinal法构造插枝分段三次样条曲线 : 原理篇
举报原因:
原因补充:

(最多只允许输入30个字)