In case Flash no longer exists; a copy of this site is included in the Flashpoint archive's "ultimate" collection.

Dead Code Preservation :: Archived AS3 works from wonderfl.net

forked from: forked from: flash on 2009-11-11

Get Adobe Flash player
by teleranek 17 Nov 2009
    Embed
/**
 * Copyright teleranek ( http://wonderfl.net/user/teleranek )
 * MIT License ( http://www.opensource.org/licenses/mit-license.php )
 * Downloaded from: http://wonderfl.net/c/agVJ
 */

// forked from teleranek's flash on 2009-11-11
package {
    import flash.display.Sprite;
    public class NeuroPDW extends Sprite {
        public function NeuroPDW () {
            var X:Array = new Array();
            var Y:Array = new Array();
            var traj:Number = 200;
            var tau:Number = 0.02;
            var time:Number = 30;
            var val:Number = -1.0;
            while( val <= 0.0 ){
                X.push( val );
                val += 0.02;
            }
            val = -0.2;
            while( val <= 1.0 ){
                Y.push( val );
                val += 0.02;
            }
            
            var x1:Number = -1;
            var xu:Number = 0;
            var y1:Number = -0.2;
            var yu:Number = 1;
            
            var i:int,j:int;
            
            var ret:Object = sample_field3( X, Y );
            var U:Array = ret.U;
            var V:Array = ret.V;
            const MARGIN:Number = 10;
            const VLEN:Number = 8;
            
            var currx:Number;
            var curry:Number;   
            
            // draw vector field
            graphics.lineStyle( 1, 0xcc6600 );
            for( i = 0; i < X.length; i++ ){
                for( j = 0; j < X.length; j++ ){
                    currx =  MARGIN*i + MARGIN;
                    curry =  MARGIN*j + MARGIN;
                    graphics.moveTo( currx , curry );
                    graphics.lineTo( currx + U[ i ]*VLEN, curry + V[ j ]*VLEN);
                }
            }
            
            var t:Number;
            var x0:Number, y0:Number;
            for( i = 1; i < 200 ; i++ ){
                x0 = (xu-x1)*Math.random() + x1;
                y0 = (xu-x1)*Math.random() + x1;
                
                for( t = 0; t < time; t += tau ){
                   
                }
            }
        }
        /*
        for i=1:traj
  x0=((xu-xl)*rand(1,1))+xl;
  y0=((yu-yl)*rand(1,1))+yl;
  tr=[];
  tr(1,:)=[x0,y0]; 
  for t=0:tau:time
    [dx,dy]=feval(F,tr(end,1),tr(end,2));
    tr(end+1,:)=tr(end,:)+tau*[dx,dy];
    if (tr(end,1)>xu)||(tr(end,1)<xl)||(tr(end,2)>yu)||(tr(end,2)<yl) 
      tr=tr(1:end-1,:);
      break;
    end; 
  end;
  plot(tr(:,1),tr(:,2),'k');
end;
axis([xl xu yl yu]);

        */
        
        public function sample_field3( X:Array , Y:Array ):Object{
            var C_d:Number = 1;
            var E_L:Number = -80;
            var I:Number = 0;
            var g_L:Number = 8;
            var g_Na:Number = 20;
            var g_K:Number = 10;
            var E_Na:Number = 60;
            var E_K:Number = -90;
            var i:int;
            
            var U:Array = new Array( X.length );
            var V:Array = new Array( X.length );
            
            for( i = 0; i < X.length; i++ ){
                X[ i ] *= 100.0;
            }
            
            /*
            U = ((I - g_L*(X-E_L)-g_Na.*m_inf(X).*(X-E_Na)-g_K.*Y.*(X-E_K))./C_d)/100;
            */
            for( i = 0; i < X.length; i++ ){
                U[ i ] = (( I - g_L*(X[i]-E_L)-g_Na*m_inf(X[i])*(X[i]-E_Na)-g_K*Y[i]*(X[i]-E_K))/C_d)/100.0;
            }
            
            for( i = 0; i < X.length; i++ ){
                V[ i ] = n_inf(X[i])-Y[i];
            }
            return { U:U , V:V };
        }
        public function m_inf( x:Number):Number{
            return 1.0/(1.0+Math.exp( ( -20.0 - x )/15.0 ));
            
        }
        public function n_inf( x:Number):Number{
            return 1.0/(1.0+Math.exp( ( -25.0 - x )/5.0 ));
            
        }
    }
}