2012年8月16日 星期四

[AS3.0 學習筆記] 數學函數

在目前的公司,一直都在寫一些覺得很無趣的東西,加上客戶老是「改了又改」,成品一定跟企劃不一樣,想起以前朋友對我說:「把一朵鮮花改成一隻牛,再把一隻牛改成一沱大便,最慘的,是再把大便改回花。」沒辦法,出錢是老大,整個悶到一個不行!

所以這幾天開始研究「奶綠茶」老師的書籍:「Flash 3D 特效宅急便 」,看了真是「開心」,原來還有那麼多小技巧。今天先記錄一些簡單的數學相關語法(特別是三角函數),後面就準備開始學習「特效」囉!

效果預覽

程式學習

  • Math.abs(參數 1):取絕對值
  • Math.floor(參數 1):無條件捨去到整數位
  • Math.round(參數 1):四捨五入到整數位
  • Math.ceil(參數 1):無條件進到整數位
  • Math.pow(參數 1, 參數 2):「參數 1」的「參數 2」次方,當然也可以做開方。如:Math.pow(2,1/2)即代表根號 2。
以上十分簡單,單純做記錄;對鼻涕而言,下面的三角函數才是重點。

三角函數

開始三角函數之前,必須先複習一下高中數學的「弧度」;因為要處理三角函數,必須先將度數轉為「弧度」,所以在 as3.0 的世界裡,弧度是十分重要的。 弧度=度 *π/180=度 *(Math.PI/180)

環形物件

依據上述的「弧度公式」及「三角函數」,我們可以得知如果要製作一個圓形環繞物件,首先要知道:
  1. 一圈為 360 度,也就是「2π」,以「2* Math.PI」表示;再視有幾個物件,再去做均分。
  2. 我們必須以舞台中心為圓心。
可以用以下的程式碼製作: var ItemTotal:int = 8;// 物件數量
var r:int = 200;// 半徑
var centerX:int = stage.stageWidth / 2;// 圓心 x 座標
var centerY:int = stage.stageHeight / 2;// 圓心 y 座標
var angle:Number = Math.PI * 2 / ItemTotal;// 均分每個物件的弧度值
for (var i:int = 0; i < ItemTotal; i++)
{
var Obj:MovieClip = new OBJ();// 動態產生物件
var radian:Number = i * angle;// 每個物件的弧度(遞增)
Obj.x = Math.cos(radian) * r + centerX;// 物件的 x 座標
Obj.y = Math.sin(radian) * r + centerY;// 物件的 y 座標
this.addChild(Obj);
}

橢圓圍繞物件

橢圓圍繞物件只要修改「一致半徑」為「不同的長軸與短軸」即可。程式碼如下: var ItemTotal:int = 8;
var rX:int = 250;
var rY:int = 150;
var centerX:int = stage.stageWidth / 2;
var centerY:int = stage.stageHeight / 2;
var angle:Number = Math.PI * 2 / ItemTotal;
for (var i:int = 0; i
{
var Obj:MovieClip = new OBJ();
var radian:Number = i * angle;
Obj.x = Math.cos(radian) * rX + centerX;
Obj.y = Math.sin(radian) * rY + centerY;
this.addChild(Obj);
}

沒有留言:

張貼留言