matlab 贝塞尔曲线,基于MATLAB动态实现Bezier曲线几何作图.pdf

基于MATLAB动态实现Bezier曲线几何作图.pdf

2015年 1月 黑龙江生态工程职业学院学报 Jan.2O15

第28卷第 1期 JournalofHeilongjiangVocationalInstituteofEcologicalEngineering Vo1.28NO.1

doi:10.3969/j.issn.1674-6341.2015.01.0l1

基于 MATLAB动态实现 Bezier曲线几何作图

李朝红 兰 虹

(齐齐哈尔高等师范专科学校 理工系,黑龙江 齐齐哈尔 161005)

摘 要:基于DeCasteljau算法的Bezier曲线生成递归公式,利用MATLAB语言,动态绘制 n次 Bezier曲线生

成,并给出了完整的MATLAB程序。通过动态生成曲线可以加深学生对抽象理论的理解。

关键词:Bezier曲线;DeCasteljau算法;动态绘图

中图分类号:TP391.72 文献标志码:A 文章编号:1674-6341(2015)01-0024-02

1 DeCasteljau算法与Bezier曲线

DeCasteljau算法,以发明者命名,是计算 Bemstein多项

式或Bezier曲线的递归方法。其基本思想是:在控制多边形

的每一条边上根据给定的参数值 “确定某一分割点 ,且两段

分割后的线段之比为u:(1一 “),从而完成第一次分割。令

初始控制多边形n+1个顶点矢量为 V={。, 一, },则 图2 控制顶点变化过程

第一次分割后得到新的多边形n个控制顶点VI={”,:, 方法,如AXIS移动坐标系(适合于数据已经全部生成的场

… , 一.},上标 1表示第一次分割,其中点矢量之间关系为 合,先画图,然后移动坐标轴);HoldOn模式 (先画上一帧,

:=(1一H) +Ⅻf+l,i=0,1,…,n一1 (1) 接着保留原始图像,追加下一帧图像,此种方式 比较繁琐);

再用相同的方法对多边形 V={,:,…,一。}各边进 Plot背景擦除模式 (适合画动画,效率比较高,刷新闪烁小)

行分割,得到n一1个控制顶点 ={ , ,…,一:}形成另 等。

一 个新的多边形。按照相同的方法分割n一1次以后,仅剩 现利用绘图函数 plot背景擦除模式来绘制 DeCasteljau

两个顶点 ~={n-】, },对线段 ~ 再分割一次得 算法动态生成 Bezier曲线,在 plot命令中加入 “EraseMode”

到点 , 即为 Z/次 Bezier曲线上与参数值 u相对应的点, 参数,“EraseMode”包含以下几种擦除方式 :

(1)normal方式:使用该选项后,重画整个显示区,该模

且 :~ 为曲线在 n处的切线。上述的构造过程可以用

式产生的图像最准确 ,但较慢。

式 (2)完整表达:

- 【卜 … (2)background方式:将旧对象的颜色变成背景色,从而

{ ,,r=u,’ll,’……,,nn;;l=u,’ll,,……n—一rr L(2z) 达到擦除的目的。这种模式将损坏被擦除对象下面的对象。

L =

(3)xor方式 :对象的绘制和擦除由该对象颜色与屏幕颜

公式(2)可 以用 图1形象说 明分割过程。当n=3,即三次

色的同异而定。只画与屏幕颜色不一致的新对象点,只擦除

Bezier曲线P(u)的分割过程如图1所示 ,其顶点变化如图2。

与屏幕颜色不一致的原对象点。该方式不损害被擦除对象

下面的其他图像。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值