Flash 与数学 心动玫瑰线(2)

分享一下我老师大神的人工智能教程。零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到我们人工智能的队伍中来!https://blog.csdn.net/jiangjunshow

               

     在第一部分内容里面,我们可以看到图形变化出的效果,你会惊讶为什么变化出这样的图像?其中一个是借助了玫瑰线公式,其次是不经意的发现。这一点,在进行极坐标的实现的时候,显得很有独特的创意性在这里。笔者会在迟一点时间里面会进行一篇关于“极坐标在flash 当中图形表现实验”讨论。

 

      

 

玫瑰线绘制封装:

 

在这里类当中,设计两个方法,一个创建图像的,而另外一个是用于动画创建过程,这一点大家可以尝试一下。

 

//创建2D的玫瑰线
  public function CreatRose(r:Number,num:Number,type:String="rad",lens:int=1,count:int=360):void

 

带5个参数,这样写可以让图像变化更多,包括半径,角度制选择,角度间隔,循环次数等等。
  

 package { //玫瑰线绘制 import flash.display.Sprite; import flash.geom.Point; public class Rose extends Sprite {  public static  const RAD:String="rad";  public static  const ANGLE:String="angle";  public function Rose()  {   this.graphics.moveTo(0,0);  }  //创建2D的玫瑰线  public function CreatRose(r:Number,num:Number,type:String="rad",lens:int=1,count:int=360):void  {   var rad:Number;   if (type==Rose.RAD)   {    rad=lens*Math.PI/180;//角度     }   else if (type==Rose.ANGLE)   {    rad=lens;//角度   }   else   {    return;   }   for (var j:int=0; j<=count; j++)   {    var len:Number=r*Math.sin(num*rad*j);    var point:Point=Point.polar(len,rad*j);    drawPoint(point);   }  }  //绘制玫瑰线  public function drawRose(r:Number,angle:Number,num:int):void  {   var len:Number=r*Math.sin(num*angle);   var point:Point=Point.polar(len,angle);   drawPoint(point);  }  //描点  private function drawPoint(point:Point):void  {   this.graphics.lineStyle(0,0xffffff);   this.graphics.lineTo(point.x,point.y);  }  //清除图像  public function clear():void  {   this.graphics.clear();  } }}

 

 

 

 

在这个类我们设置两种角度制,一种是弧度Pi,另外一种就是我们常用角度制(0-360)。

 

 

为什么要采用这两种角度设计?这里就是关键的地方,采用不同的度制,在极坐标的转换下所程显出的图像也不一样的,这里就是之前在等速螺线提交过的。

采用传统的弧度,玫瑰线发生的图像效果并没那么复杂,相反则变化出另一种美态。这一点就是区别所在。

 

总的代码:

package { //玫瑰线,极坐标方程 //p=a *sin(n*angle)//n为花瓣 //p=a *cos(n*angle)//n为花瓣 import flash.display.Sprite; import flash.events.*; import flash.filters.GlowFilter; public class Main extends Sprite {  //private var rose:Rose;  private var angle:Number=0;  public function Main()  {   init();  }  private function init():void  {   var rose:Rose=new Rose();//创建玫瑰线对象   rose.CreatRose(200,7,Rose.ANGLE);   addChild(rose);   rose.x=stage.stageWidth/2;   rose.y=stage.stageHeight/2;                 //添加发光滤镜   var glow:GlowFilter=new GlowFilter();   glow.alpha=2;   glow.blurX=150;   glow.blurY=120;   glow.color=0x00cc0c0;   var array:Array=new Array();   array.push(glow);   rose.filters=array;  } }}

 

 

 

主要程序调用:

在这里我们对图形进行发光滤镜的添加。为了让效果更加好看,呈现出更强的视角效果。

 

在完成了图像创建时候,我们采用滤镜 var glow:GlowFilter=new GlowFilter();对Rose类对象进行发光设置。

这样效果图就完成了。看看下面的图形。

 

var rose:Rose=new Rose();//创建玫瑰线对象   rose.CreatRose(200,7,Rose.ANGLE);   addChild(rose);

 

   

其中这里就是变化出图像玄机所在:  rose.CreatRose(200,7,Rose.ANGLE); 

 

好,有兴趣可以进行更改一下,你会发现更加多的效果应用。或者有兴趣可以开始你艺术创造。

  

 

 

 

 

           

分享一下我老师大神的人工智能教程。零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到我们人工智能的队伍中来!https://blog.csdn.net/jiangjunshow

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值