读书人

flash中怎么通过多点绘制光滑曲线

发布时间: 2012-11-10 10:48:51 作者: rapoo

flash中如何通过多点绘制光滑曲线

[1b]问题:有n个随机点,需要用光滑曲线将起连接起来,曲线看上去要有一定的曲度?[/1b]
[1b]思路1:[/1b]从第一个点穿过第二个点到第三个点绘制曲线,然后再穿过第四个点到第五个点绘制曲线,穿过第六个点到第七个点。。。这样可以看出来,点的个数n比为奇数,才可以画到终点,暂设置n=9。
var?numPoints?=?n;//n必为奇数,暂设为9
//创建随机点构成的一个数组
var?points:Array?=?new?Array();
for(var?i=0;i
[1b]思路2:[/1b]在每两个点之间插入一个新的点,位于原两点之间,用所插入的点为每条曲线的起始点和终点,用原来的点作为控制点画曲线,这样没有点的个数必为奇数的限制,且画出来的曲线比第一种方法的曲线更加“好看”。如下图:

空心白点为原来的点,黑色实心点为插入的新点(图片来源:
http://lovejulia.cn/blog/article.asp?id=107
,参考:
http://lovejulia.cn/blog/article.asp?id=107

http://blog.sina.com.cn/s/blog_3ecb9b1101008z9g.html

从图上看出,第一个插入的点,与最后一个插入的点没有用到,也就是说没有用来作为任何控点和终点,所以只需要在第二个点和倒数第二个点之间插入新点,算法如下:
var?numPoints?=?n;
var?points:Array?=?new?Array();
for(var?i=0;i[1b]总结:[/1b]思路1中是经过每个原始点画曲线,但必须要求点的个数为奇数,且最小给定点个数为 三,画出来的曲线可以看出明显的衔接,曲度不够,不是要求的曲线;思路2中的曲线只是经过了第一个点和最后一个点,中间的点是根据原有点来插入的点,也就 是说并没有经过给出的点,而是经过由给出点所得出的新点,这种方法得出的曲线没有点数必为奇数的限制,且曲度也可以达到要求。
本文转自:http://www.5uflash.com/flashjiaocheng/Flashdonghuajiaocheng/3449.html

读书人网 >Flash

热点推荐