[贝塞尔曲线(Bezier Curves) 2d实现]

1623 篇文章 23 订阅
1407 篇文章 2 订阅
如有转载,请注明:
http://www.azure.com.cn/

回忆下绘制直线的过程, 它是个从起点运动到终点的过程,
这里我们就需要用到线性插值算法.

uploads/200702/21_161317_line00.gif


线性插值的伪代码如下:
Linear Interpolation

procedure draw_line(point1, point2)

loop t from 0 to 1 in steps of .01

a = t
b = 1 - t

point = (point1 * b) + (point2 * a)

drawpixel (point)

end of loop

end of draw_line
为了绘制曲线,我们需要替换掉线性插值,改用立方(Cubic)插值.

uploads/200702/21_161657_bezier05.gif


我们选择两个终点, A 和 D ,
我们在选择为两个终点选择两个方向 v1 v2.
在这些方向的终点, 我们定义两个新的点 B 和 C.

B = A +v1
C = D + v2


有了这四个定义的点, 我们可以使用一个立方插值函数来绘制曲线.
伪代码如下:
Cubic Interpolation

procedure draw_bezier(A, v1, v2, D)

B = A + v1
C = D + v2

loop t from 0 to 1 in steps of .01

a = t
b = 1 - t

point = A*b 3 + 3*B*b 2*a + 3C*b*a 2 + D*a 3

drawpixel (point)

end of loop

end of draw_bezier
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值