分享一下我老师大神的人工智能教程。零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到我们人工智能的队伍中来!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