二维bezier曲线求交算法其比较

二维bezier曲线求交算法其比较

ID:28028600

大小:230.00 KB

页数:17页

时间:2018-12-07

二维bezier曲线求交算法其比较_第1页
二维bezier曲线求交算法其比较_第2页
二维bezier曲线求交算法其比较_第3页
二维bezier曲线求交算法其比较_第4页
二维bezier曲线求交算法其比较_第5页
资源描述:

《二维bezier曲线求交算法其比较》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、-二维Bezier曲线求交算法及其比较朱根荣作者简介:朱根荣(1963—),男,浙江嘉兴人,高级讲师,主要研究方向:计算机辅助教学,E_mail: jxzgr@163.com(秀洲党校,浙江嘉兴314000)摘要:用扫描法、两分查找法、牛顿法、离散法、解非线性方程组法求Bezier曲线交点的算法思想、在AdobeActionScript3.0中的实现、存在问题、改进办法。并通过实验比较,发现解非线性方程组法是诸方法中效率最高,稳定性最好的方法。关键词:Bezier曲线;交点;算法中图分类号:TP391Algorithmsandco

2、mparisonaboutfindingintersectionpointbetween2-dimensionalBeziercurvesZhuGen-rong(XiuzhouPartySchool, Jiaxing314000, ZhejiangChina)Abstract:Algorithms,realizinginActionScript3.0,problems,waystoimproveaboutfindingintersectionpointbetweentwo-dimensionalBeziercurvesusings

3、canningmethod,binary-searchingmethod,Newtonmethod,discretingmethodandsolvingnonlinearequationsmethod.Byexperiment,foundthatsolvingnonlinearequationsmethodisahighestefficiencyandmoststableway.Keywords:Beziercurves;intersectionpoint;algorithm在用Flash制作经济学图形的演示动画时,经常遇到求两条

4、曲线交点的问题。如最基本的需求曲线与供给曲线的交点。当然在设计时,两曲线的交点是显而易见的。困难的是在动画运行期间,正在移动的曲线,它们的交点该如何确定。这不仅需要所求交点位置准确,而且需要有较快的求交速度。一旦速度太慢,必然使动画产生时滞、显得不够流畅。鉴于设计时所画曲线均为Bezier曲线,因此问题便成了Bezier曲线求交问题。曹锋提到了用解高次方程组的方法求Bezier曲线的交点(曹锋,1998),并不简单。对于求两条三次Bezier曲线交点的问题,最终要转化为解关于参数的9次方程,不得不借助代数方程的数值解法。没有尝试,

5、但受其启发,最终用“牛顿法解非线性方程组”.---(《数学手册》编写组,1979)实现了这一算法。王国瑾介绍了化曲为直的离散未交算法(王国瑾,2001),在AS3.0中实现后,效果不错。此外,还尝试了扫描法、两分查找法、牛顿法。在此对各种算法及其在AS3.0中的实现、存在问题、改进办法作一归纳总结,并通过实验比较证明:用牛顿法解非线性方程组的方法求两Bezier曲线交点,效率最高,也最稳定。0.二维Bezier曲线的参数表示在曲线运动过程中求交点,无疑需要借助有关算法在动作脚本中以代码实现。而要用代码求两Bezier曲线的交点,首

6、先需要将曲线表示成函数。但对Bezier曲线而言,要用普通函数来表示是困难的,幸可用参数方程。当给定平面上n+1个点di(i=0,1……n),则n次Bezier曲线可表示为。其中Cni是组合数,即,而P(t)是参数为t时曲线的位置,是一个二维矢量。容易看出方程右边实际上是一个n次多项式,可整理成,这里系数ai是一个二维矢量。鉴于AS3.0中无法重载运算符,因而无法定义矢量运算类,需将矢量方程化成标量方程,形如:,其中ai、bi为标量系数,可从给定控制点di求得求解方法见参考文献[3]“2.1.2Bezier曲线的矩阵表示”一节。对

7、于三次Bezier曲线,两参数方程的系数,,其中(xi,yi)为控制点di的横、纵坐标。MB为三次Bezier曲线的4×4矩阵(李原,2007)。下面给出根据控制点求参数方程系数的AS3.0代码如下:代码1:根据Bezier曲线的控制点求参数方程的系数//参数:ds为Bezier曲线控制点数组//返回:参数方程系数数组:a0,a1,……an;b0,b1……bnfunctiongetCoefs(ds:Array):Array{varn:int;varM:Array;varcoefs:Array=newArray(2);coefs[0

8、]=newArray(n+1);coefs[1]=newArray(n+1);n=ds.length;M=newArray(n);.---switch(n){case2:M[0]=[1,0];M[1]=[-1,1];break;case3:M[0]

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。