1. 程式人生 > >Flash 與數學 心動玫瑰線

Flash 與數學 心動玫瑰線

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

也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!

               

     

 

  歡迎大家來到這裡,在這裡,我要向大家宣告一件事情,我將會送給你們每一個人一朵玫瑰,請好好保管好它,因為它裡面包含我的溫暖。 我相信你會喜歡上!

                                                                                                                        ------ 夏天的樹人

 

馬上送上

第一朵玫瑰:

 

 

 

 

第二朵玫瑰:

 

 

 

第三朵玫瑰:

 

 

 

 

第四朵玫瑰:

 

 

 

第五朵玫瑰:

 

 

 

第六朵玫瑰:

 

 

 

第七朵玫瑰:

 

 

 

 

原來我很想送給你第8,第九朵玫瑰,不過你一定會告訴我,這不是玫瑰,而是一個心動

 

我們要知道,玫瑰花總是帶著一陣陣的方香,會引來無數的蝴蝶和蜜蜂,正因為如此,我們還是把它送給你最愛的人--玫瑰花香。

 

花香製作材料:也許你會問,我現在就是要製作這種花香,那麼我現在就送給你一道配方。我

 

配方材料:需要一條公式:玫瑰線的公式

    玫瑰線,極座標方程
    p=a *sin(n*angle)//n為花瓣。n 可以是奇數,也可以是偶數
    p=a *cos(n*angle)//n為花瓣

 

準備好這個材料,我們開始熬我們的藥了。

初步的繪製線的辦法,如下

 

[c-sharp] view plain copy print ?
  1. //玫瑰線繪製  
  2. import flash.display.Sprite;  
  3. import flash.geom.Point;  
  4. internal class Rose  extends Sprite  
  5. {  
  6.     public function Rose()  
  7.     {  
  8.         this.graphics.moveTo(0,0);  
  9.     }  
  10.     //建立2D的玫瑰線  
  11.     public function CreatRose(r:Number,num:int):void  
  12.     {  
  13.         var rad:Number=1*Math.PI/180;//角度  
  14.         for (var j:int=0; j<=360; j++)  
  15.         {  
  16.             var len:Number=r*Math.sin(num*rad*j);  
  17.             var point:Point=Point.polar(len,rad*j);  
  18.             drawPoint(point);  
  19.         }      
  20.     }  
  21.       
  22.     //繪製玫瑰線  
  23.     public function drawRose(r:Number,angle:Number,num:int):void  
  24.     {         
  25.         var len:Number=r*Math.sin(num*angle);  
  26.         var point:Point=Point.polar(len,angle);  
  27.         drawPoint(point);  
  28.     }  
  29.       
  30.       
  31.       
  32.     //描點  
  33.     private function drawPoint(point:Point):void  
  34.     {  
  35.         this.graphics.lineStyle(1);  
  36.         this.graphics.lineTo(point.x,point.y);  
  37.     }  
  38. }  
//玫瑰線繪製import flash.display.Sprite;import flash.geom.Point;internal class Rose  extends Sprite{ public function Rose() {  this.graphics.moveTo(0,0); } //建立2D的玫瑰線 public function CreatRose(r:Number,num:int):void {  var rad:Number=1*Math.PI/180;//角度  for (var j:int=0; j<=360; 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(1);  this.graphics.lineTo(point.x,point.y); }}

 

 

我們採用,描點法,採用極座標法,來實現我們的點繪製;

 

[c-sharp] view plain copy print ?
  1. //描點  
  2.     private function drawPoint(point:Point):void  
  3.     {  
  4.         this.graphics.lineStyle(1);  
  5.         this.graphics.lineTo(point.x,point.y);  
  6.     }  
//描點 private function drawPoint(point:Point):void {  this.graphics.lineStyle(1);  this.graphics.lineTo(point.x,point.y); }

 

總的藥方在這裡:

[c-sharp] view plain copy print ?
  1. package   
  2. {  
  3.    //玫瑰線,極座標方程  
  4.    //p=a *sin(n*angle)//n為花瓣  
  5.    //p=a *cos(n*angle)//n為花瓣  
  6.      
  7.     import flash.display.Sprite;  
  8.     import flash.events.*;  
  9.     public class Main extends Sprite  
  10.     {  
  11.         private var obj:Rose;  
  12.         private var angle:Number=0;  
  13.         public function Main()  
  14.         {  
  15.             init();  
  16.         }  
  17.         private function init():void  
  18.         {  
  19.             obj=new Rose();//建立玫瑰線物件  
  20.             obj.CreatRose(200,2);  
  21.             obj.x=stage.stageWidth/2;  
  22.             obj.y=stage.stageHeight/2;  
  23.             addChild(obj);  
  24.             //addEventListener(Event.ENTER_FRAME,Run);  
  25.               
  26.         }  
  27.           
  28. //      private function Run(event:Event):void  
  29. //      {   angle++;  
  30. //          if(angle>360*8)  
  31. //          { angle=0;  
  32. //           removeEventListener(Event.ENTER_FRAME,Run);  
  33. //          }  
  34. //          else  
  35. //          {  
  36. //          //angle=(angle> 360 ? 0:angle++);  
  37. //          obj.drawRose(200,angle,8);  
  38. //          }  
  39. //            
  40. //      }  
  41.     }  
  42. }  
  43.   
  44. //玫瑰線繪製  
  45. import flash.display.Sprite;  
  46. import flash.geom.Point;  
  47. internal class Rose  extends Sprite  
  48. {  
  49.     public function Rose()  
  50.     {  
  51.         this.graphics.moveTo(0,0);  
  52.     }  
  53.     //建立2D的玫瑰線  
  54.     public function CreatRose(r:Number,num:int):void  
  55.     {  
  56.         var rad:Number=1*Math.PI/180;//角度  
  57.         for (var j:int=0; j<=360; j++)  
  58.         {  
  59.             var len:Number=r*Math.sin(num*rad*j);  
  60.             var point:Point=Point.polar(len,rad*j);  
  61.             drawPoint(point);  
  62.         }      
  63.     }  
  64.       
  65.     //繪製玫瑰線  
  66.     public function drawRose(r:Number,angle:Number,num:int):void  
  67.     {         
  68.         var len:Number=r*Math.sin(num*angle);  
  69.         var point:Point=Point.polar(len,angle);  
  70.         drawPoint(point);  
  71.     }  
  72.       
  73.       
  74.       
  75.     //描點  
  76.     private function drawPoint(point:Point):void  
  77.     {  
  78.         this.graphics.lineStyle(1);  
  79.         this.graphics.lineTo(point.x,point.y);  
  80.     }  
  81. }  
package {   //玫瑰線,極座標方程   //p=a *sin(n*angle)//n為花瓣   //p=a *cos(n*angle)//n為花瓣    import flash.display.Sprite; import flash.events.*; public class Main extends Sprite {  private var obj:Rose;  private var angle:Number=0;  public function Main()  {   init();  }  private function init():void  {   obj=new Rose();//建立玫瑰線物件   obj.CreatRose(200,2);   obj.x=stage.stageWidth/2;   obj.y=stage.stageHeight/2;   addChild(obj);   //addEventListener(Event.ENTER_FRAME,Run);     }  //  private function Run(event:Event):void//  {   angle++;//      if(angle>360*8)//   { angle=0;//    removeEventListener(Event.ENTER_FRAME,Run);//   }//   else//   {//   //angle=(angle> 360 ? 0:angle++);//   obj.drawRose(200,angle,8);//   }//   //  } }}//玫瑰線繪製import flash.display.Sprite;import flash.geom.Point;internal class Rose  extends Sprite{ public function Rose() {  this.graphics.moveTo(0,0); } //建立2D的玫瑰線 public function CreatRose(r:Number,num:int):void {  var rad:Number=1*Math.PI/180;//角度  for (var j:int=0; j<=360; 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(1);  this.graphics.lineTo(point.x,point.y); }}

 

 

到目前為此,你應該掌握了這種辦法,現在我們繼續開啟我們的法寶去實現另外一個一種配置方案:

 

我相信你會喜歡我提供的方法:通過動畫的方式來進行

 

[c-sharp] view plain copy print ?
  1. //繪製玫瑰線  
  2. public function drawRose(r:Number,angle:Number,num:int):void  
  3. {         
  4.     var len:Number=r*Math.sin(num*angle);  
  5.     var point:Point=Point.polar(len,angle);  
  6.     drawPoint(point);  
  7. }  
 //繪製玫瑰線 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); } 

 

 

 

[c-sharp] view plain copy print ?
  1. package   
  2. {  
  3.     //玫瑰線,極座標方程  
  4.     //p=a *sin(n*angle)//n為花瓣  
  5.     //p=a *cos(n*angle)//n為花瓣  
  6.   
  7.     import flash.display.Sprite;  
  8.     import flash.events.*;  
  9.     public class Main extends Sprite  
  10.     {  
  11.         private var obj:Rose;  
  12.         private var angle:Number=0;  
  13.         public function Main()  
  14.         {  
  15.             init();  
  16.         }  
  17.         private function init():void  
  18.         {  
  19.             obj=new Rose();//建立玫瑰線物件  
  20.             //obj.CreatRose(200,2);  
  21.             obj.x=stage.stageWidth/2;  
  22.             obj.y=stage.stageHeight/2;  
  23.             addChild(obj);  
  24.             addEventListener(Event.ENTER_FRAME,Run);  
  25.   
  26.         }  
  27.         private function Run(event:Event):void  
  28.         {  
  29.             angle++;  
  30.             if (angle>360*2)  
  31.             {  
  32.                 angle=0;  
  33.                 removeEventListener(Event.ENTER_FRAME,Run);  
  34.             }  
  35.             else  
  36.             {  
  37.                 obj.drawRose(200,angle,2);  
  38.             }  
  39.         }  
  40.     }  
  41. }  
  42.   
  43. //玫瑰線繪製  
  44. import flash.display.Sprite;  
  45. import flash.geom.Point;  
  46. internal class Rose extends Sprite  
  47. {  
  48.     public function Rose()  
  49.     {  
  50.         this.graphics.moveTo(0,0);  
  51.     }  
  52.     //建立2D的玫瑰線  
  53.     public function CreatRose(r:Number,num:int):void  
  54.     {  
  55.         var rad:Number=1*Math.PI/180;//角度  
  56.         for (var j:int=0; j<=360; j++)  
  57.         {  
  58.             var len:Number=r*Math.sin(num*rad*j);  
  59.             var point:Point=Point.polar(len,rad*j);  
  60.             drawPoint(point);  
  61.         }  
  62.     }  
  63.     //繪製玫瑰線  
  64.     public function drawRose(r:Number,angle:Number,num:int):void  
  65.     {  
  66.         var len:Number=r*Math.sin(num*angle);  
  67.         var point:Point=Point.polar(len,angle);  
  68.         drawPoint(point);  
  69.     }  
  70.     //描點  
  71.     private function drawPoint(point:Point):void  
  72.     {  
  73.         this.graphics.lineStyle(1);  
  74.         this.graphics.lineTo(point.x,point.y);  
  75.     }  
  76. }  
package { //玫瑰線,極座標方程 //p=a *sin(n*angle)//n為花瓣 //p=a *cos(n*angle)//n為花瓣 import flash.display.Sprite; import flash.events.*; public class Main extends Sprite {  private var obj:Rose;  private var angle:Number=0;  public function Main()  {   init();  }  private function init():void  {   obj=new Rose();//建立玫瑰線物件   //obj.CreatRose(200,2);   obj.x=stage.stageWidth/2;   obj.y=stage.stageHeight/2;   addChild(obj);   addEventListener(Event.ENTER_FRAME,Run);  }  private function Run(event:Event):void  {   angle++;   if (angle>360*2)   {    angle=0;    removeEventListener(Event.ENTER_FRAME,Run);   }   else   {    obj.drawRose(200,angle,2);   }  } }}//玫瑰線繪製import flash.display.Sprite;import flash.geom.Point;internal class Rose extends Sprite{ public function Rose() {  this.graphics.moveTo(0,0); } //建立2D的玫瑰線 public function CreatRose(r:Number,num:int):void {  var rad:Number=1*Math.PI/180;//角度  for (var j:int=0; j<=360; 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(1);  this.graphics.lineTo(point.x,point.y); }}

 

 

配方完成 

   好,現在的配方已經完成了。馬上拿給它送給你心愛的人。

接下來我們可以新增我們所希望的濾鏡進行潤色。然後就可以變成了上面的圖案,至於怎樣?這裡就留一個關子

發揮你們想象空間。 

 

 

 

 

 

 

 

           

給我老師的人工智慧教程打call!http://blog.csdn.net/jiangjunshow

這裡寫圖片描述