一行代碼讓圓周運動不依賴於三角函數

想在AS3裏實現圓周運動,咱們通常都這麼寫:編程

var centerX:Number = 300;
var centerY:Number = 200;
var radius:Number = 20;
var degree:Number = 0;
addEventListener(Event.ENTER_FRAME, enterFrameHandler);
function enterFrameHandler(event:Event):void{
  display.x = centerX + radius * Math.cos(degree * Math.PI / 180);
  display.y = centerY + radius * Math.sin(degree * Math.PI / 180);
  degree += 5;
}

  其中centerX和centerY分別是圓心的x座標和y座標,radius爲圓周的半徑,degree是當前角度。

代碼中出現了cos和sin兩個三角函數,可別以爲這些中學的基礎知識你們都懂,沒準就在高中畢業當天,就有很多人把這些函數都還給老師了。就像iloveas,除了「欲窮幹裏日」一句外,小學課本里教過的古詩詞都早給我忘的一乾二淨了。

那麼,有沒辦法不經過這些蛋疼的三角函數來實現一樣的效果呢?說到這裏,大神們估計很容易想到向量、矩陣等高端貨,不過今天iloveas給你們分享一個更簡單的作法,只要一行代碼,什麼弦什麼切的均可以一邊涼快去了:函數

var pt:Point = Point.polar(radius, degree * Math.PI / 180);
display.x = centerX + pt.x;
display.y = centerY + pt.y;

  若是你喜歡裝逼,那如下寫法會更適合你:blog

var pt:Point = Point.polar(radius, degree * Math.PI / 180).add(new Point(centerX, centerY));
display.x = pt.x;
display.y = pt.y;

  不能否認的是,iloveas今天介紹的方法在運行效率方面比本身寫三角函數要差的多,但它很適合像iloveas這樣的數學白癡們入門編程這一行。在這點上,AS3確實作的比其餘語言好,因此無論AS3的明天何去何從,你們都來多多支持AS3吧。數學

相關文章
相關標籤/搜索