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 ?
- //玫瑰線繪製
- 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 ?
- //描點
- private function drawPoint(point:Point):void
- {
- this.graphics.lineStyle(1);
- this.graphics.lineTo(point.x,point.y);
- }
總的藥方在這裡:
[c-sharp] view plain copy print ?- 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 ?
- //繪製玫瑰線
- 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 ?
- 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);
- }
- }
配方完成
好,現在的配方已經完成了。馬上拿給它送給你心愛的人。
接下來我們可以新增我們所希望的濾鏡進行潤色。然後就可以變成了上面的圖案,至於怎樣?這裡就留一個關子
發揮你們想象空間。