flash画线之经典教程--数学运用 |
| 作者:佚名 来源:不详 更新:2007-1-13 21:01:19 错误报告 我要投稿 |
开头语:mm公司的flashmx与以往最突出的就是新增的画线功能,虽然2004已经很优秀了,但我们也不能忘了他的前辈的 功劳。 好了,废话少说。其实编程语言最重要的就是和实际联系起来,运用数学模型和物理模型实现亮丽的效果(前提是你的电脑配置足够高,不要死机。)。上回就用了数学模型实现了滚动文本的特效,大家有兴趣的可以自己看看。 你有没有为实现一个准确画圆而绞尽脑汁?你是否尝试过用curveTo而未达到理想中的效果?这回我就向你介绍一个利用高等数学中的极限实现的面积求算效果。 (注:微积分大一高等数学最开始就已经学了) 首先介绍一点微积分的知识: 对于简单图形面积运算正方形,圆形大家都会,但是,不规则图形你会吗?前提是你知道函数表达式y=f(x)。
 好了开始正题吧!我们对比一下利用curveTo和极限画出的圆。
[全屏欣赏]
[全屏欣赏]
不一样吧!那简直是一定的。好了开始吧!如图所示: 圆上坐标为x=r*sin(a), y=r*cos(a) ,利用角度的堤加实现画圆的效果,递加我们用的0.01的步长。
主体as为: MovieClip.prototype.drawCircle = function(x, y, radius) {//第一函数 this.moveTo(x+radius, y);//以(x,y)为圆心,radius为半径画圆 var jiaodu = 0; while (jiaodu<2*Math.PI) { jiaodu+= 0.01;//角度递加0.01 this.lineTo(x+Math.cos(radian)*radius, y+Math.sin(radian)*radius);//中心坐标加上直角边长度即为坐标值 } }; this.lineStyle(0); this.drawCircle(200, 200, 100);//调用函数
  
其实熟悉初等数学的人都知道,利用极坐标就不用那么麻烦了 一些方程 圆的极坐标: x=rsin(a) y=rcos(a);
椭圆极坐标:x=Asin(a) y=Bcos(a);//这里我就不再说了 阿基米德螺线方程: p=a;//a为角度 关于阿基米德螺线我们用: MovieClip.prototype.drawtuo = function(cx, cy, n, r) { this.moveTo(cx, cy); var radian = 0; while (radian<2*n*Math.PI) {//需要旋转的角度,就是一共几个圈 radian += 0.01;//角度递加,两个点的角度距离,可以控制大小 太大了死机我可不管:) this.lineTo(cx+Math.cos(radian)*radian*r, cy+Math.sin(radian)*radian*r);//r其实就是控制螺线的大小 } }; this.lineStyle(0); this.drawtuo(200, 200, 20, 4);
|
|
| 文章录入:skyuu 责任编辑:skyuu |
|
| 【字体:小 大】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口】 |