※現在、「wonderfl build flash online」求人コンテンツ制作に関してのアンケートを実施中です!みなさまのお力添えを頂いて、続々とアンケート結果が集まっていますが、まだまだ募集しております。ご協力のほど、どうぞよろしくお願いいたします!

wonderfl運営事務局
→アンケートページ(※ログインしてからお答えいただけるようになっています。)

 notice: Flash editor updated! Join the development! Thanks to MiniBuilder


forked from : makc3d's Lagrange polynomial [diff(1)]

flash swf thumbnail

FORKED
  1. // forked from hacker_012ke7zh's forked from: Lagrange polynomial
  2. // forked from makc3d's Lagrange polynomial
  3. // http://en.wikipedia.org/wiki/Lagrange_polynomial
  4. package {
  5.     import flash.display.Sprite;
  6.     [SWF(frameRate="7")] 
  7.     public class FlashTest extends Sprite {
  8.         public function FlashTest() {
  9.             Wonderfl.capture_delay (10);
  10.             stage.addEventListener ("mouseDown", onMouseDown);
  11.             stage.addEventListener ("mouseUp", onMouseUp);
  12.             stage.addEventListener ("enterFrame", onEnterFrame);
  13.         }
  14.         public var mouseDown:Boolean = false;
  15.         public function onMouseDown (e:*):void {
  16.             posx.length = 0;
  17.             posy.length = 0;
  18.             mouseDown = true;
  19.         }
  20.         public function onMouseUp (e:*):void {
  21.             mouseDown = false;
  22.         }
  23.         public var posx:Array = [];
  24.         public var posy:Array = [];
  25.         public function onEnterFrame (e:*):void {
  26.             if (mouseDown) {
  27.                 posx.push (mouseX);
  28.                 posy.push (mouseY);
  29.             }
  30.             var i:int = 0, ts:Array = [];
  31.             graphics.clear ();
  32.             graphics.lineStyle ();
  33.             graphics.beginFill (0xFF0000);
  34.             for (i = 0; i < posx.length; i++) {
  35.                 ts.push (i);
  36.                 graphics.drawCircle (posx [i], posy [i], 3);
  37.             }
  38.             graphics.endFill ();
  39.             if (!mouseDown && (posx.length > 1)) {
  40.                 graphics.lineStyle (00);
  41.                 for (var t:Number = 0; t < 100; t += 0.1) {
  42.                     var tx:Number = lagrangeInterpolatingPolynomial (
  43.                         ts, posx, t);
  44.                     var ty:Number = lagrangeInterpolatingPolynomial (
  45.                         ts, posy, t);
  46.                     if (t == 0)
  47.                         graphics.moveTo (tx, ty);
  48.                     else
  49.                         graphics.lineTo (tx, ty);
  50.                 }
  51.             }
  52.         }
  53.         public function lagrangeInterpolatingPolynomial (
  54.             pos:Array, val:Array, desiredPos:Number):Number {
  55.             var degree:int = pos.length;
  56.             var retVal:Number = 0
  57.             for (var i:int = 0; i < degree; i++) {
  58.                 var weight:Number = 1
  59.                 for (var j:int = 0; j < degree; j++) {
  60.                     // The i-th term has to be skipped
  61.                     if (j != i) {
  62.                         weight *= (desiredPos - pos[j]) / (pos[i] - pos[j]);
  63.                     }
  64.                 }
  65.                 retVal += weight * val[i];
  66.             }
  67.  
  68.             return retVal; 
  69.         }
  70.     }
  71. }
noswf
Get Adobe Flash Player