理解贝赛尔曲线的计算方法


贝赛尔曲线是一种在计算机图形运算中常见的平滑曲线,通常在使用中我们要通过一个或者多个控制点来产生一个贝赛尔曲线。对于这种无穷无尽的曲线的计算公式,死记硬背是无意义的,理解它才能以不变尽万变,本文简单介绍如何推导公式并运算得到一个贝赛尔曲线的运动轨迹。



我们先看一个特殊的直线的例子, 假设一直线经过(X0,Y0),(X1,Y1),总时间为1,则我们可以计算出任意时刻的位置为Xt = (X1 – X0)t + X0, Yt= (Y1 – Y0)t + Y0.Y的计算方法和X一样,所以下面以X为例做讨论。

即任意位置的X位置为Xt= (1-t)*X0 + X1*t

现在我们来看一下加入一个控制点的贝赛尔曲线:




如图所示,任意点B的位置其实就是线段Q0Q1的t时刻的位置,而Q0与Q1又分别是P0P1和P1P2的t时刻的位置,所以:

  Q0 = (1-t)P0+ P1t; Q1 = (1-t) P1 + P2t; B = (1-t)Q0+ Q1t

因此:B = (1-t)((1-t)P0 + P1t) + ((1-t)P1 + P2t)t= (1-t) * (1-t) * P0 + (1-t) * t * P1 + (1-t) * t *P1+ P2 * t * t = (1-t)2P0 + 2t(1-t)P1+ t2P2

以此类推,当有2个控制点时:



如上图所示:B为R0R1在t时刻的位置,R0为Q0Q1在t时刻的位置,R1为Q1Q2在t时刻的位置,

又有Q0为P0P1在t时刻的位置,Q1为P1P2在t时刻的位置,Q2为P2P3在t时刻的位置。

  不难得出:

  Q0 = (1-t)P0+ tP1; Q1 = (1-t)P1 + tP2; Q2= (1-1)P2 + tP2;

  R0 = (1-t)Q0+ tQ1; R1 = (1-t)Q1 + tQ2;

  B = (1-t)R0+ tR1;

通过简单的代数可以得出B= (1-t)3P0 + 3(1-t)2tP1 + 3(1-t)t2P2+ t3P3;


参考 wikipedia: http://en.wikipedia.org/wiki/B%C3%A9zier_curve

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值