采用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样条曲线)

•路径曲线与运动物体控制 •掌握Cardinal样条曲线的表示和算法,了解控制参数对曲线形状的影响。 •对照Cardinal样条曲线的数学表示和程序代码的对应关系。 •在路径曲线上放置一小汽车,使其在...
  • ZJU_fish1996
  • ZJU_fish1996
  • 2016年10月05日 00:58
  • 3036

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

  版权声明:   本文由timewolf完成,首发于CSDN...
  • timewolf
  • timewolf
  • 2006年05月30日 10:39
  • 2385

AndEngine之DEMO学习(九)CardinalSplineMoveModifierExample

这个例子又新介绍了一种修改器的实现,CardinalSplineMoveModifier(基数样条移动修改器)。demo的效果是依靠矩形的运动创造出一个心形,当然心形是一个不规则的形状,这里就得使用基...
  • chenglifan
  • chenglifan
  • 2012年05月29日 11:16
  • 1474

Cocos2d-x 3.2 Lua示例 ActionTest(动作测试)

Cocos2d-x 3.2 Lua示例 ActionTest(动作测试) Cocos2d-x官方真够给力的,3.1.1还没有熟悉完,3.2就出来,本篇博客继续介绍Cocos2d-x的Lua示例,关于3...
  • wwj_748
  • wwj_748
  • 2014年07月29日 23:43
  • 32670

(27)三次插值样条曲线

三次插值样条曲线在灵活性和计算速度之间进行了合理的折中。与更高次样条相比,三次插值样条只需较少的计算和存储,且较稳定。与二次插值样条相比,三次插值样条在模拟任意形状时显得更灵活。 三次插值样条曲线由...
  • zl908760230
  • zl908760230
  • 2017年01月01日 22:25
  • 677

[计算机动画] 路径曲线与运动物体控制(Cardinal样条曲线)

•路径曲线与运动物体控制 •掌握Cardinal样条曲线的表示和算法,了解控制参数对曲线形状的影响。 •对照Cardinal样条曲线的数学表示和程序代码的对应关系。 •在路径曲线上放置一小汽车,使其在...
  • ZJU_fish1996
  • ZJU_fish1996
  • 2016年10月05日 00:58
  • 3036

使用CCCardinalSplineBy自定义路径

研究了一下自带例子中,有一项是根据点组成曲线或直线来移动精灵..觉得蛮有用处的,所以尝试并整理了一下,和大家分享一下 1. 首先创建好了工程后修改.h文件,重...
  • taobao755624068
  • taobao755624068
  • 2013年03月18日 18:40
  • 3029

cocos2d-x 3.1.1 学习笔记[3]Action 动作

/* 动画*/ auto sp = Sprite::create("card_bg_big_26.jpg"); Size size = Director::getInstance()-...
  • zhouyunxuan
  • zhouyunxuan
  • 2014年06月30日 19:21
  • 5818

(27)三次插值样条曲线

三次插值样条曲线在灵活性和计算速度之间进行了合理的折中。与更高次样条相比,三次插值样条只需较少的计算和存储,且较稳定。与二次插值样条相比,三次插值样条在模拟任意形状时显得更灵活。 三次插值样条曲线由...
  • zl908760230
  • zl908760230
  • 2017年01月01日 22:25
  • 677

三次样条差值-matlab通用程序

数值分析课程的大作业,教材《数值分析》李乃成.梅立泉 clear x=input('请按照格式[x1,x2,x3...]格式输入y=f(x)函数已知点的横坐标xi=');   %三次样条差值函数 ...
  • zhangxiaolu2015
  • zhangxiaolu2015
  • 2015年01月15日 18:32
  • 7985
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:采用Cardinal法构造插枝分段三次样条曲线 : 原理篇
举报原因:
原因补充:

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