Flash 与数学 星形线 

 

  今晚我们来玩玩这种线绘制,星形线。 在大学的里面解析几何当中,把这种曲线叫做四尖点星形线。由于它的形状如星星 称上这个名称也不无道理,看到这种线的时候,你是否会许个愿望呢?一起来吧

 

星形线公式:

   x=a*cos3A

   y=a*sin3A   

 Flash 与数学 星形线

公式很简单,A的角度可以是正无穷 和负无穷之间,(a可以理解为半径) 但是我的做法,理解他为0-360已经足够了。也就是说他旋转一圈。通过绘制这条线,同样我们加入一些线的动画,这样做的好处是增加一些动感性。

 

程序的思路很简单,我们就按他的提供的公式设计一个绘图程序,它会按顺时针来进行绘制,这是因为flash 的坐标系和我们传统的数学坐标系有区别,顺时针所转换的角度是正的,而传统的则是负的。可以去了解一些这两种坐标系区别。

 

我们使用描点的方式来进行绘制线,是在flash 里面一个很常用的手法。而你看到的图像,我们可以假设认为是360度描点所得的结果,有兴趣可以继续深入。

 

下面是代码:

 

package { //星形线动画 //   x=a*cos3A  //     y=a*sin3A      // 写于2010年4月11日 import flash.display.Sprite; import flash.events.*; public class Main extends Sprite {  private var pen:Sprite=new Sprite();  private var lineMc:Sprite=new Sprite();  private var angle:int=-1;//角度  private var centerX:Number=stage.stageWidth/2;//中心点x位置  private var centerY:Number=stage.stageHeight/2;//中心点y位置  public function Main()  {   init();  }  private function init():void  {   addChild(pen);   addChild(lineMc);      //描绘十字坐标   pen.graphics.lineStyle(1);   pen.graphics.moveTo(centerX,centerY);   pen.graphics.lineTo(centerX,0);   pen.graphics.moveTo(centerX,centerY);   pen.graphics.lineTo(centerX*2,centerY);   pen.graphics.moveTo(centerX,centerY);   pen.graphics.lineTo(centerX,centerY*2);   pen.graphics.moveTo(centerX,centerY);   pen.graphics.lineTo(0,centerY);   addEventListener(Event.ENTER_FRAME,Run);  }  private function Run(event:Event):void  {   lineMc.graphics.clear();   if (angle==-1)   {    var px:Number=centerX+200*Math.pow(Math.cos(angle*Math.PI/180),3);    var py:Number=centerY+200*Math.pow(Math.sin(angle*Math.PI/180),3);    lineMc.graphics.lineStyle(1,0x0033FF);    lineMc.graphics.moveTo(centerX,centerY);    lineMc.graphics.lineTo(px,py);    lineMc.graphics.drawCircle(px,py,5);        pen.graphics.moveTo(px,py);    drawLine(px,py);   }   else if(angle<=360 && angle>=0)   {    px=centerX+200*Math.pow(Math.cos(angle*Math.PI/180),3);    py=centerY+200*Math.pow(Math.sin(angle*Math.PI/180),3);    lineMc.graphics.lineStyle(1,0x0033FF);    lineMc.graphics.moveTo(centerX,centerY);    lineMc.graphics.lineTo(px,py);    lineMc.graphics.drawCircle(px,py,5);    drawLine(px,py);       }   else    {    removeEventListener(Event.ENTER_FRAME,Run);    trace("over");    }   angle++;  }  //绘制线程序  private function drawLine(x2,y2:Number):void  {   pen.graphics.lineStyle(1,0xff0000);   pen.graphics.lineTo(x2,y2);  } }}

 

 

 

 扩展:除了星形线,还有之前介绍的螺旋线等等,还有很多关于线的图像和面,例如玫瑰线等等这些线会在日后写作当中介绍一下。

我们有意识将他认为是0-360旋转一周的图像,其程序只是通过我们常用”描点法" 描写这些图像。有兴趣可以尝试一下玫瑰线的绘制

下面就留一个问题,下面的是怎样绘制?或者复制? 好,准备睡觉去,累

 Flash 与数学 星形线

 

 

 

           

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

相关文章:

  • 2022-12-23
  • 2022-12-23
  • 2021-10-12
  • 2021-05-26
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
猜你喜欢
  • 2022-12-23
  • 2022-12-23
  • 2021-08-13
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-12-31
相关资源
相似解决方案