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

这里写图片描述

猜你喜欢

转载自blog.csdn.net/truhfcg/article/details/83952319