- 1、本文档共17页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
二维Bezier曲线求交算法及其比较
朱根荣
(秀洲党校,浙江 嘉兴 314000)
摘 要:用扫描法、两分查找法、牛顿法、离散法、解非线性方程组法求Bezier曲线交点的算法思想、在Adobe ActionScript3.0中的实现、存在问题、改进办法。并通过实验比较,发现解非线性方程组法是诸方法中效率最高,稳定性最好的方法。
关键词:Bezier曲线; 交点; 算法
中图分类号:TP391
Algorithms and comparison about finding intersection point between 2-dimensional Bezier curves
Zhu Gen-rong
(Xiuzhou Party School, Jiaxing 314000, Zhejiang China)
Abstract: Algorithms, realizing in ActionScript 3.0, problems, ways to improve about finding intersection point between two-dimensional Bezier curves using scanning method, binary-searching method, Newton method, discreting method and solving nonlinear equations method. By experiment, found that solving nonlinear equations method is a highest efficiency and most stable way.
Key words: Bezier curves; intersection point; algorithm
在用Flash制作经济学图形的演示动画时,经常遇到求两条曲线交点的问题。如最基本的需求曲线与供给曲线的交点。当然在设计时,两曲线的交点是显而易见的。困难的是在动画运行期间,正在移动的曲线,它们的交点该如何确定。这不仅需要所求交点位置准确,而且需要有较快的求交速度。一旦速度太慢,必然使动画产生时滞、显得不够流畅。鉴于设计时所画曲线均为Bezier曲线,因此问题便成了Bezier曲线求交问题。曹锋提到了用解高次方程组的方法求Bezier曲线的交点(曹锋,1998),并不简单。对于求两条三次Bezier曲线交点的问题,最终要转化为解关于参数的9次方程,不得不借助代数方程的数值解法。没有尝试,但受其启发,最终用“牛顿法解非线性方程组”(《数学手册》编写组,1979)实现了这一算法。王国瑾介绍了化曲为直的离散未交算法(王国瑾,2001),在AS3.0中实现后,效果不错。此外,还尝试了扫描法、两分查找法、牛顿法。在此对各种算法及其在AS3.0中的实现、存在问题、改进办法作一归纳总结,并通过实验比较证明:用牛顿法解非线性方程组的方法求两Bezier曲线交点,效率最高,也最稳定。
0.二维Bezier曲线的参数表示
在曲线运动过程中求交点,无疑需要借助有关算法在动作脚本中以代码实现。而要用代码求两Bezier曲线的交点,首先需要将曲线表示成函数。但对Bezier曲线而言,要用普通函数来表示是困难的,幸可用参数方程。当给定平面上n+1个点di(i=0,1……n),则n次Bezier曲线可表示为。其中Cni是组合数,即,而P(t)是参数为t时曲线的位置,是一个二维矢量。容易看出方程右边实际上是一个n次多项式,可整理成,这里系数ai是一个二维矢量。
鉴于AS3.0中无法重载运算符,因而无法定义矢量运算类,需将矢量方程化成标量方程,形如:,其中ai、bi为标量系数,可从给定控制点di求得。对于三次Bezier曲线,两参数方程的系数,,其中(xi,yi)为控制点di的横、纵坐标。MB为三次Bezier曲线的4×4矩阵(李原,2007)。下面给出根据控制点求参数方程系数的AS3.0代码如下:
代码1:根据Bezier曲线的控制点求参数方程的系数
//参数:ds为Bezier曲线控制点数组
//返回:参数方程系数数组:a0,a1,……an;b0,b1……bn
function getCoefs(ds:Array):Array {
var n:int;
var M:Array;
var coefs:Array=new Array(2);
coefs[0]=new Array(n+1);
coefs[1]=new Array(n+1);
n=ds.length;
M=new Array(n);
switch(n){
case 2:
您可能关注的文档
- 2012党委政府述职述廉汇报.doc
- 【与名师对话】高考化学总复习[JS版]《10.3常见气体的制备》课件.ppt
- 事业单位《公共基础知识》全真模拟卷[四]与参考答案及解析[中].doc
- 事业单位公共基础知识复习资料-职业道德的内涵及特点.doc
- 【中国人民大学802经济学综合】冲刺课程-课件.ppt
- 【中考复习】2014年中考语文[全国通用]文言文知识精讲:第16讲送东阳马生序.ppt
- 【2015-11-03培训】驻车辅助-泊车系统-2015-11-03.ppt
- 【中考试题研究】[新课标]河南省2016中考英语第一部分教材知识研究八上Unit2课件.ppt
- 事业单位年度考核表2014[请勿改动格式及页边距]123.doc
- 2012年度对离退休老干部的新年度春节慰问信.doc
文档评论(0)