flash 绘图API 绘制秀曲线图形

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

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

               

   昨晚想起了一些图案,当时是在小学的时候绘制过的,现在想起记得是TVB教学,当时候记得这种图案叫秀曲线图形。现在今天用flash 绘制一下,效果看起来挺好。而代码非常简单。

 

基础原理:从一个纵轴开始,划分一系列的点,然后从一点开始,左右进行连线绘制。同时也可以在自己的图案里面进行绘制,当然这种效果不只是一种的,你可以变化一下角度。效果会更加美丽。这种是90度角的效果。

 

 

秀曲线

 

[c-sharp] view plain copy print ?
  1. package   
  2. {  
  3.     //800x600 黑色背景  
  4.     import flash.display.Sprite;  
  5.     import flash.events.*;  
  6.   
  7.     public class Main extends Sprite  
  8.     {  
  9.         private var pen:Sprite=new Sprite();//画笔  
  10.         private var num:int=61;  
  11.         private var startX:Number=400;  
  12.         private var startY:Number=300;  
  13.         public function Main()  
  14.         {  
  15.             addChild(pen);    
  16.             creatSprite();  
  17.         }  
  18.         //创建图形  
  19.         private function creatSprite():void  
  20.         {  
  21.             pen.graphics.lineStyle(2,0xffffff);//定义画笔粗糙和颜色  
  22.             for (var i:int=0; i<num; i++)  
  23.             {  
  24.                 for (var j:int=0; j<2; j++)  
  25.                 {  
  26.                     pen.graphics.moveTo(startX,i*10);  
  27.                     if (i<30)  
  28.                     {  
  29.                         if (j==0)  
  30.                         {  
  31.                             pen.graphics.lineTo(startX-i*10,startY);  
  32.                         } else  
  33.                         {  
  34.                             pen.graphics.lineTo(startX+i*10,startY);  
  35.                         }  
  36.                     } else  
  37.                     {  
  38.                         if (j==0)  
  39.                         {  
  40.                             pen.graphics.lineTo(startX-(num-1-i)*10,startY);  
  41.                         } else  
  42.                         {  
  43.                             pen.graphics.lineTo(startX+(num-1-i)*10,startY);  
  44.                         }  
  45.                     }  
  46.                 }  
  47.             }  
  48.         }  
  49.     }  
  50. }  
package {    //800x600 黑色背景 import flash.display.Sprite; import flash.events.*; public class Main extends Sprite {  private var pen:Sprite=new Sprite();//画笔  private var num:int=61;  private var startX:Number=400;  private var startY:Number=300;  public function Main()  {   addChild(pen);    creatSprite();  }  //创建图形  private function creatSprite():void  {   pen.graphics.lineStyle(2,0xffffff);//定义画笔粗糙和颜色   for (var i:int=0; i<num; i++)   {    for (var j:int=0; j<2; j++)    {     pen.graphics.moveTo(startX,i*10);     if (i<30)     {      if (j==0)      {       pen.graphics.lineTo(startX-i*10,startY);      } else      {       pen.graphics.lineTo(startX+i*10,startY);      }     } else     {      if (j==0)      {       pen.graphics.lineTo(startX-(num-1-i)*10,startY);      } else      {       pen.graphics.lineTo(startX+(num-1-i)*10,startY);      }     }    }   }  } }}

 

 修改一下程序:改变一下按角度程序看看效果如何

秀2

 

 

秀3

 

当中主要修改的一些技巧,在这些代码已经体现到。可以慢慢尝试一下,而这种图案,我们运用了直线轨迹方程制作。技巧就在这里。看看你可以变化出多少中效果。

[c-sharp] view plain copy print ?
  1. package   
  2. {  
  3.     //800x600 黑色背景  
  4.     import flash.display.Sprite;  
  5.     import flash.events.*;  
  6.     import flash.geom.*;  
  7.   
  8.     public class Main extends Sprite  
  9.     {  
  10.         private var pen:Sprite=new Sprite();//画笔  
  11.         private var num:int=20;  
  12.         private var n:int=6;  
  13.         private var startX:Number=400;  
  14.         private var startY:Number=300;  
  15.         private var nodes:Array=new Array();  
  16.         private var R:Number=300;  
  17.         private var angle:Number=-2*Math.PI/n;  
  18.         public function Main()  
  19.         {  
  20.             addChild(pen);    
  21.             creatSprite();  
  22.         }  
  23.           
  24.         private function creatSprite():void  
  25.         {  
  26.             pen.graphics.lineStyle(2,0xffffff);//定义画笔粗糙和颜色  
  27.             for (var i:int=0; i<n+1; i++)  
  28.             {  
  29.                  nodes[i]=new Array();  
  30.                 for (var j:int=0; j<num; j++)  
  31.                 {                        
  32.                     var point:Point=new Point(j*10*Math.cos(angle*i)+startX,j*10*Math.sin(angle*i)+startY);  
  33.                     nodes[i][j]=point;  
  34.                     pen.graphics.moveTo(j*10*Math.cos(angle*i)+startX,j*10*Math.sin(angle*i)+startY);                      
  35.                     if(i==0)  
  36.                     pen.graphics.lineTo((num-j)*10+startX,startY);  
  37.                     else  
  38.                     {  
  39.                          pen.graphics.lineTo(nodes[i-1][num-1-j].x,nodes[i-1][num-1-j].y);  
  40.                     }  
  41.                 }  
  42.                        
  43.             }  
  44.               
  45.           
  46.         //创建图形  
  47.         //private function creatSprite():void  
  48. //      {  
  49. //          pen.graphics.lineStyle(2,0xffffff);//定义画笔粗糙和颜色  
  50. //          for (var i:int=0; i<num; i++)  
  51. //          {  
  52. //              for (var j:int=0; j<2; j++)  
  53. //              {  
  54. //                  pen.graphics.moveTo(startX,i*10);  
  55. //                  if (i<30)  
  56. //                  {  
  57. //                      if (j==0)  
  58. //                      {  
  59. //                          pen.graphics.lineTo(startX-i*10,startY);  
  60. //                      } else  
  61. //                      {  
  62. //                          pen.graphics.lineTo(startX+i*10,startY);  
  63. //                      }  
  64. //                  } else  
  65. //                  {  
  66. //                      if (j==0)  
  67. //                      {  
  68. //                          pen.graphics.lineTo(startX-(num-1-i)*10,startY);  
  69. //                      } else  
  70. //                      {  
  71. //                          pen.graphics.lineTo(startX+(num-1-i)*10,startY);  
  72. //                      }  
  73. //                  }  
  74. //              }  
  75. //          }  
  76.         }  
  77.     }  
  78. }  
package {    //800x600 黑色背景 import flash.display.Sprite; import flash.events.*; import flash.geom.*; public class Main extends Sprite {  private var pen:Sprite=new Sprite();//画笔  private var num:int=20;  private var n:int=6;  private var startX:Number=400;  private var startY:Number=300;  private var nodes:Array=new Array();  private var R:Number=300;  private var angle:Number=-2*Math.PI/n;  public function Main()  {   addChild(pen);    creatSprite();  }    private function creatSprite():void  {   pen.graphics.lineStyle(2,0xffffff);//定义画笔粗糙和颜色   for (var i:int=0; i<n+1; i++)   {     nodes[i]=new Array();    for (var j:int=0; j<num; j++)    {                  var point:Point=new Point(j*10*Math.cos(angle*i)+startX,j*10*Math.sin(angle*i)+startY);        nodes[i][j]=point;     pen.graphics.moveTo(j*10*Math.cos(angle*i)+startX,j*10*Math.sin(angle*i)+startY);              if(i==0)        pen.graphics.lineTo((num-j)*10+startX,startY);     else     {       pen.graphics.lineTo(nodes[i-1][num-1-j].x,nodes[i-1][num-1-j].y);     }    }         }       //创建图形  //private function creatSprite():void//  {//   pen.graphics.lineStyle(2,0xffffff);//定义画笔粗糙和颜色//   for (var i:int=0; i<num; i++)//   {//    for (var j:int=0; j<2; j++)//    {//     pen.graphics.moveTo(startX,i*10);//     if (i<30)//     {//      if (j==0)//      {//       pen.graphics.lineTo(startX-i*10,startY);//      } else//      {//       pen.graphics.lineTo(startX+i*10,startY);//      }//     } else//     {//      if (j==0)//      {//       pen.graphics.lineTo(startX-(num-1-i)*10,startY);//      } else//      {//       pen.graphics.lineTo(startX+(num-1-i)*10,startY);//      }//     }//    }//   }  } }}

           

给我老师的人工智能教程打call!http://blog.csdn.net/jiangjunshow
这里写图片描述
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值