用line類作二次函數

主要應用:

lineStyle(MovieClip.lineStyle 方法);

lineTo(MovieClip.lineTo 方法);

moveTo(MovieClip.moveTo方法);

基本思路:

      先獲取開始繪圖的起點的座標,這裏所說的起點即爲二次函數頂點座標再向左移一定距離後得到的對應點的座標.因爲我們要作的是一個完整的二次函數圖象,而不是一半(如果以頂點座標爲繪圖起點開始的話,只能得到一半的圖象).

      當然有一個很關鍵的問題,就是你所求的座標是相對於舞臺上的"原點",而flash繪圖時則以最左上角的一個點作爲原點,所以還需要換算座標.

      現在就是最關鍵的環節了,建立個一用於繪圖的函數,基本思路是從"起點"開始,每一次循環就把座標加1,然後求得對應的y座標,換算後用lineTo連線.大功告成!

代碼:

///draw_btn爲舞臺上一個按鈕,First  ,Second  ,Third 是三個係數對應的輸入文本的變量,一下爲寫在第一幀的代碼

var oPointx:Number = Stage.width/2;
var oPointy:Number = Stage.height/2;
var xPosition:Number = 0;
var yPosition:Number = 0;
var drawx:Number = 0;
var drawy:Number = 0;
var First:Number = 0;
var Second:Number = 0;
var Third:Number = 0;
var Start:Number = 0;


_root.draw_btn.onPress 
= function() {

if(First != 0 && Second != 0 && Third != 0){
 _root.clear();
 Start 
= int((Second/First/2)*-1)-100;
 xPosition 
= Start;
 drawx 
= 275+Start;
 yPosition 
= xPosition*xPosition*First+xPosition*Second+Third;
 drawy 
= 200-yPosition;
 _root.moveTo(drawx, drawy);
 _root.lineStyle(
10xFF0000100);
 
for (var i:Number = 1; i<301; i++{
  xPosition 
+= 5;
  drawx 
= xPosition+275;
  yPosition 
= xPosition*xPosition*First+xPosition*Second+Third;
  drawy 
= 200-yPosition;
  _root.lineTo(drawx, drawy);

  updateAfterEvent();

 }
}


}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章