flash特效原理 螺旋效果 (3)

flash特效原理 螺旋效果 (3)
摘要由CSDN通过智能技术生成

分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow

也欢迎大家转载本篇文章。分享知识,造福人民,实现我们中华民族伟大复兴!

               

    最近对高数起了很大的兴趣,掏钱买了一本高等数学。发现里面的真是一份宝物,最近看了一个人的博客。关于高等数学的知识,对螺旋线的形态原来不仅仅是一种。过去尝试制作的图形也是一种的方式,现在提及这种螺旋线不是围绕着圆柱形状旋转,而是圆锥。对无错,圆锥体。又是让人觉得不爽的数学,不过细心发觉,这种形态看起来更加像自然界的龙卷风。看起来,很美。

圆锥螺旋线

 

我们之前所做的做法围绕着圆柱的形式旋转,因此螺旋点分布都是落在圆的轨迹上。而圆锥的螺旋形式,同样是落在圆的轨迹上,不过这个是圆是随着他的圆的半径变化而变化。 从这张图说明,螺旋点的分布会随着高度而收缩。最后落在顶端上。

好吧,你一定是高兴来不及尝试写一下这种的实现方式,而相对上一次的代码,仅仅改动的地方很少。

看看下面的效果如何:

螺旋线3

 

 

[c-sharp] view plain copy print ?
  1. image.x=Math.cos(anglePer*i)*(R-i*R/num);//改变半径的变化  
  2.                 image.z=Math.sin(anglePer*i)*(R-i*R/num);//改变半径  
image.x=Math.cos(anglePer*i)*(R-i*R/num);//改变半径的变化    image.z=Math.sin(anglePer*i)*(R-i*R/num);//改变半径

而我们所需要改变仅仅是他是半径。半径趋向应该是向圆锥顶点减少,向它的底增加,因此使用这种递减的方式进行模拟出这种效果。

 

[c-sharp] view plain copy print ?
  1. image.x=Math.cos(anglePer*i)*(i*R/num);//改变半径的变化  
  2.                 image.z=Math.sin(anglePer*i)*(i*R/num);//改变半径  
image.x=Math.cos(anglePer*i)*(i*R/num);//改变半径的变化    image.z=Math.sin(anglePer*i)*(i*R/num);//改变半径

 

我们定义一个R,作为半径作为圆锥体的底圆。而这个是固定的大小的。随着他(i*R/num)变量变化,会趋向于R.接近R。或者(i*R/(num-1))

而这种方式也会让效果发生改变,从图中可以看出,螺旋点分布会随着半径的增大而扩展分布。螺旋圆锥

 

 

[c-sharp] view plain copy print ?
  1. package   
  2. {  
  3.     import flash.display.MovieClip;  
  4.     import flash.events.*;  
  5.     import flash.geom.PerspectiveProjection;  
  6.     import flash.geom.Matrix3D;  
  7.     import flash.geom.Vector3D;  
  8.     import flash.display.DisplayObject;  
  9.     public class Main extends MovieClip  
  10.     {  
  11.         private var num:int=50;//一共有多少个螺旋点  
  12.         private var numOfRotations:int=3;//圈数  
  13.         private var anglePer:Number = ((Math.PI*2) *numOfRotations) / num;  
  14.         private var R:int=400;//半径  
  15.         private var h:int=0;//高度  
  16.         private var contain:MovieClip=new MovieClip();//容器  
  17.         private var list:Array=new Array();  
  18.         public function Main()  
  19.         {  
  20.   
  21.             init();  
  22.             creat3D();  
  23.         }  
  24.   
  25.         private function init():void  
  26.         {  
  27.             root.transform.perspectiveProjection.fieldOfView=100;//初始化透视角度  
  28.             addChild(contain);  
  29.             contain.x=stage.stageWidth/2;  
  30.             contain.y=stage.stageHeight/2-800;  
  31.             contain.z=600;            
  32.         }  
  33.   
  34.         //创建螺旋效果  
  35.         private function creat3D():void  
  36.         {  
  37.   
  38.             for (var i:int=0; i<num; i++)  
  39.             {  
  40.                 var image:photo=new photo();  
  41.                 list.push(image);  
  42.                 contain.addChild(image);  
  43.                 image.x=Math.cos(anglePer*i)*(i*R/(num-1));//改变半径的变化  
  44.                 image.z=Math.sin(anglePer*i)*(i*R/(num-1));//改变半径  
  45.                 //image.x=Math.cos(anglePer*i)*(R-i*R/num);//改变半径的变化  
  46.                 //image.z=Math.sin(anglePer*i)*(R-i*R/num);//改变半径  
  47.                 image.y=h+=30;//每一个螺旋点都递增30  
  48.                 image.
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值