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


forked from : nutsu's Worm matrix based. [diff(79)]

embed

FAVORITE BY
:
:
:
:
curvebitmap drawings
:
worm mouse
:
:
:
:
:
:
ンギッモヂィィ
:
particleマウス移動に応じてクルクルシュッとなる効果。WormObject
:
:
:
:
:
:
mouseeffect很漂亮!多点触摸可用,像素屏可用?
:
:
:
:
effectコレはたまらん
:
wormgood!
:
:
:
mousetwirl mouse
:
:
linesworms lines mouse gesture
:
VisualeffectnatureVisual grow like nature stem
:
frocessingにょろにょろ
:
frocessing recursive fractal
:
frocessingにょろーんくるくる
:
にょろにょろ
:
:
:
:
:
frocessingわ〜い
:
:
:
:
うつくしい
:
おぉー。
:
FORKED
  1. // forked from nutsu's Draw worm by mouse gesture.
  2. // forked from nutsu's Worm matrix based.
  3. /**
  4. LOVE MATRIX.
  5. a study for drawing curl curve.
  6. license under the GNU Lesser General Public License.
  7. */
  8. package {
  9.     import frocessing.display.F5MovieClip2DBmp;
  10.     import frocessing.geom.FMatrix2D;
  11.     import flash.geom.ColorTransform;
  12.     
  13.     public class WormMatrix extends F5MovieClip2DBmp{
  14.         
  15.         private var vms:Array;
  16.         private var MAX_NUM:int = 100
  17.         private var N:Number = 80;
  18.         private var px:Number;
  19.         private var py:Number;
  20.         private var col:uint = 0x000000;
  21.         private var ct:ColorTransform = new ColorTransform(1,1,1,1,4,4,4);
  22.         
  23.         public function WormMatrix () {
  24.             superfalse, 0xffffffff );
  25.             stage.frameRate = 60;
  26.             vms = [];
  27.         }
  28.         
  29.         public function check():void
  30.         {
  31.             var x0:Number = mouseX;
  32.             var y0:Number = mouseY;
  33.             var vx:Number = x0 - px;
  34.             var vy:Number = y0 - py;
  35.             var len:Number = min( mag( vx, vy ), 50 );
  36.             
  37.             if( len<10 ) return;
  38.             
  39.             var mtx:FMatrix2D = new FMatrix2D();
  40.             mtx.rotate( atan2( vy, vx ) );
  41.             mtx.translate( x0, y0 );
  42.             
  43.             createObj( mtx, len );
  44.             
  45.             stroke(col)
  46.             line( px, py, x0, y0 );
  47.             px = x0;
  48.             py = y0;
  49.         }
  50.         
  51.         public function createObj( mtx:FMatrix2D, len:Number ):void
  52.         {
  53.             var angle:Number = random(PI/64,PI/6);
  54.             if( Math.random()>0.5 )
  55.                 angle *= -1;
  56.             var tmt:FMatrix2D = new FMatrix2D();
  57.             tmt.scale( 0.950.95 );
  58.             tmt.rotate( angle );
  59.             tmt.translate( len, 0 );
  60.             var w:Number = 0.5;
  61.                
  62.             var obj:WormObject = new WormObject();
  63.             obj.c1x = obj.p1x = -w * mtx.c + mtx.tx;
  64.             obj.c1y = obj.p1y = -w * mtx.d + mtx.ty;
  65.             obj.c2x = obj.p2x =  w * mtx.c + mtx.tx;
  66.             obj.c2y = obj.p2y =  w * mtx.d + mtx.ty;
  67.             obj.vmt = mtx;
  68.             obj.tmt = tmt;
  69.             obj.r   = angle;
  70.             obj.w   = len/20;
  71.             obj.count = 0;
  72.                 
  73.             vms.push( obj );
  74.             if( vms.length > MAX_NUM )
  75.                 vms.shift();
  76.         }
  77.         
  78.         public function setup():void
  79.         {
  80.             size( 465465 );
  81.             background(255);
  82.             noStroke();
  83.             px = mouseX;
  84.             py = mouseY;
  85.         }
  86.         
  87.         public function draw():void
  88.         {
  89.             if( isMousePressed )
  90.             {
  91.                 background(255);
  92.                 vms = [];
  93.             }
  94.             
  95.             noStroke();
  96.             var len:int = vms.length;
  97.             forvar i:int=0; i<len; i++ )
  98.             {
  99.                 var o:WormObject = vms[i];
  100.                 if( o.count<N ){
  101.                     drawWorm( o );
  102.                     o.count++;
  103.                 }else{
  104.                     len--;
  105.                     vms.splice( i, 1 );
  106.                     i--;
  107.                 }
  108.             }
  109.             
  110.             check();
  111.             
  112.             bitmapData.colorTransform( bitmapData.rect, ct );
  113.         }
  114.         
  115.         public function drawWorm( obj:WormObject ):void
  116.         {
  117.             
  118.             if( Math.random()>0.9 ){
  119.                 obj.tmt.rotate( -obj.r*2 );
  120.                 obj.r *= -1;
  121.             }
  122.             obj.vmt.prepend( obj.tmt );
  123.             var cc1x:Number = -obj.w*obj.vmt.c + obj.vmt.tx;
  124.             var cc1y:Number = -obj.w*obj.vmt.d + obj.vmt.ty;
  125.             var pp1x:Number = (obj.c1x+cc1x)/2;
  126.             var pp1y:Number = (obj.c1y+cc1y)/2;
  127.             var cc2x:Number = obj.w*obj.vmt.c + obj.vmt.tx;
  128.             var cc2y:Number = obj.w*obj.vmt.d + obj.vmt.ty;
  129.             var pp2x:Number = (obj.c2x+cc2x)/2;
  130.             var pp2y:Number = (obj.c2y+cc2y)/2;
  131.             beginFill( col );
  132.             moveTo( obj.p1x, obj.p1y );
  133.             curveTo( obj.c1x, obj.c1y, pp1x, pp1y );
  134.             lineTo( pp2x, pp2y );
  135.             curveTo( obj.c2x, obj.c2y, obj.p2x, obj.p2y );
  136.             closePath();
  137.             endFill();
  138.             obj.c1x = cc1x;
  139.             obj.c1y = cc1y;
  140.             obj.p1x = pp1x;
  141.             obj.p1y = pp1y;
  142.             obj.c2x = cc2x;
  143.             obj.c2y = cc2y;
  144.             obj.p2x = pp2x;
  145.             obj.p2y = pp2y;
  146.         }
  147.     }
  148. }
  149. import frocessing.geom.FMatrix2D;
  150. class WormObject{
  151.     public var c1x:Number;
  152.     public var c1y:Number;
  153.     public var c2x:Number;
  154.     public var c2y:Number;
  155.     public var p1x:Number;
  156.     public var p1y:Number;
  157.     public var p2x:Number;
  158.     public var p2y:Number;
  159.     public var w:Number;
  160.     public var r:Number;
  161.     public var count:int;
  162.     public var vmt:FMatrix2D;
  163.     public var tmt:FMatrix2D;
  164.     public function WormObject(){
  165.         
  166.     }
  167. }
noswf
  1. // forked from nutsu's Draw worm by mouse gesture.
  2. // forked from nutsu's Worm matrix based.
  3. /**
  4. LOVE MATRIX.
  5. a study for drawing curl curve.
  6. license under the GNU Lesser General Public License.
  7. */
  8. package {
  9.     import frocessing.display.F5MovieClip2DBmp;
  10.     import frocessing.geom.FMatrix2D;
  11.     import flash.geom.ColorTransform;
  12.     
  13.     public class WormMatrix extends F5MovieClip2DBmp{
  14.         
  15.         private var vms:Array;
  16.         private var MAX_NUM:int = 100
  17.         private var N:Number = 80;
  18.         private var px:Number;
  19.         private var py:Number;
  20.         private var col:uint = 0x000000;
  21.         private var ct:ColorTransform = new ColorTransform(1,1,1,1,4,4,4);
  22.         
  23.         public function WormMatrix () {
  24.             superfalse, 0xffffffff );
  25.             stage.frameRate = 60;
  26.             vms = [];
  27.         }
  28.         
  29.         public function check():void
  30.         {
  31.             var x0:Number = mouseX;
  32.             var y0:Number = mouseY;
  33.             var vx:Number = x0 - px;
  34.             var vy:Number = y0 - py;
  35.             var len:Number = min( mag( vx, vy ), 50 );
  36.             
  37.             if( len<10 ) return;
  38.             
  39.             var mtx:FMatrix2D = new FMatrix2D();
  40.             mtx.rotate( atan2( vy, vx ) );
  41.             mtx.translate( x0, y0 );
  42.             
  43.             createObj( mtx, len );
  44.             
  45.             stroke(col)
  46.             line( px, py, x0, y0 );
  47.             px = x0;
  48.             py = y0;
  49.         }
  50.         
  51.         public function createObj( mtx:FMatrix2D, len:Number ):void
  52.         {
  53.             var angle:Number = random(PI/64,PI/6);
  54.             if( Math.random()>0.5 )
  55.                 angle *= -1;
  56.             var tmt:FMatrix2D = new FMatrix2D();
  57.             tmt.scale( 0.950.95 );
  58.             tmt.rotate( angle );
  59.             tmt.translate( len, 0 );
  60.             var w:Number = 0.5;
  61.                
  62.             var obj:WormObject = new WormObject();
  63.             obj.c1x = obj.p1x = -w * mtx.c + mtx.tx;
  64.             obj.c1y = obj.p1y = -w * mtx.d + mtx.ty;
  65.             obj.c2x = obj.p2x =  w * mtx.c + mtx.tx;
  66.             obj.c2y = obj.p2y =  w * mtx.d + mtx.ty;
  67.             obj.vmt = mtx;
  68.             obj.tmt = tmt;
  69.             obj.r   = angle;
  70.             obj.w   = len/20;
  71.             obj.count = 0;
  72.                 
  73.             vms.push( obj );
  74.             if( vms.length > MAX_NUM )
  75.                 vms.shift();
  76.         }
  77.         
  78.         public function setup():void
  79.         {
  80.             size( 465465 );
  81.             background(255);
  82.             noStroke();
  83.             px = mouseX;
  84.             py = mouseY;
  85.         }
  86.         
  87.         public function draw():void
  88.         {
  89.             if( isMousePressed )
  90.             {
  91.                 background(255);
  92.                 vms = [];
  93.             }
  94.             
  95.             noStroke();
  96.             var len:int = vms.length;
  97.             forvar i:int=0; i<len; i++ )
  98.             {
  99.                 var o:WormObject = vms[i];
  100.                 if( o.count<N ){
  101.                     drawWorm( o );
  102.                     o.count++;
  103.                 }else{
  104.                     len--;
  105.                     vms.splice( i, 1 );
  106.                     i--;
  107.                 }
  108.             }
  109.             
  110.             check();
  111.             
  112.             bitmapData.colorTransform( bitmapData.rect, ct );
  113.         }
  114.         
  115.         public function drawWorm( obj:WormObject ):void
  116.         {
  117.             
  118.             if( Math.random()>0.9 ){
  119.                 obj.tmt.rotate( -obj.r*2 );
  120.                 obj.r *= -1;
  121.             }
  122.             obj.vmt.prepend( obj.tmt );
  123.             var cc1x:Number = -obj.w*obj.vmt.c + obj.vmt.tx;
  124.             var cc1y:Number = -obj.w*obj.vmt.d + obj.vmt.ty;
  125.             var pp1x:Number = (obj.c1x+cc1x)/2;
  126.             var pp1y:Number = (obj.c1y+cc1y)/2;
  127.             var cc2x:Number = obj.w*obj.vmt.c + obj.vmt.tx;
  128.             var cc2y:Number = obj.w*obj.vmt.d + obj.vmt.ty;
  129.             var pp2x:Number = (obj.c2x+cc2x)/2;
  130.             var pp2y:Number = (obj.c2y+cc2y)/2;
  131.             beginFill( col );
  132.             moveTo( obj.p1x, obj.p1y );
  133.             curveTo( obj.c1x, obj.c1y, pp1x, pp1y );
  134.             lineTo( pp2x, pp2y );
  135.             curveTo( obj.c2x, obj.c2y, obj.p2x, obj.p2y );
  136.             closePath();
  137.             endFill();
  138.             obj.c1x = cc1x;
  139.             obj.c1y = cc1y;
  140.             obj.p1x = pp1x;
  141.             obj.p1y = pp1y;
  142.             obj.c2x = cc2x;
  143.             obj.c2y = cc2y;
  144.             obj.p2x = pp2x;
  145.             obj.p2y = pp2y;
  146.         }
  147.     }
  148. }
  149. import frocessing.geom.FMatrix2D;
  150. class WormObject{
  151.     public var c1x:Number;
  152.     public var c1y:Number;
  153.     public var c2x:Number;
  154.     public var c2y:Number;
  155.     public var p1x:Number;
  156.     public var p1y:Number;
  157.     public var p2x:Number;
  158.     public var p2y:Number;
  159.     public var w:Number;
  160.     public var r:Number;
  161.     public var count:int;
  162.     public var vmt:FMatrix2D;
  163.     public var tmt:FMatrix2D;
  164.     public function WormObject(){
  165.         
  166.     }
  167. }
noswf
  1. // forked from nutsu's Draw worm by mouse gesture.
  2. // forked from nutsu's Worm matrix based.
  3. /**
  4. LOVE MATRIX.
  5. a study for drawing curl curve.
  6. license under the GNU Lesser General Public License.
  7. */
  8. package {
  9.     import frocessing.display.F5MovieClip2DBmp;
  10.     import frocessing.geom.FMatrix2D;
  11.     import flash.geom.ColorTransform;
  12.     
  13.     public class WormMatrix extends F5MovieClip2DBmp{
  14.         
  15.         private var vms:Array;
  16.         private var MAX_NUM:int = 100
  17.         private var N:Number = 80;
  18.         private var px:Number;
  19.         private var py:Number;
  20.         private var col:uint = 0x000000;
  21.         private var ct:ColorTransform = new ColorTransform(1,1,1,1,4,4,4);
  22.         
  23.         public function WormMatrix () {
  24.             superfalse, 0xffffffff );
  25.             stage.frameRate = 60;
  26.             vms = [];
  27.         }
  28.         
  29.         public function check():void
  30.         {
  31.             var x0:Number = mouseX;
  32.             var y0:Number = mouseY;
  33.             var vx:Number = x0 - px;
  34.             var vy:Number = y0 - py;
  35.             var len:Number = min( mag( vx, vy ), 50 );
  36.             
  37.             if( len<10 ) return;
  38.             
  39.             var mtx:FMatrix2D = new FMatrix2D();
  40.             mtx.rotate( atan2( vy, vx ) );
  41.             mtx.translate( x0, y0 );
  42.             
  43.             createObj( mtx, len );
  44.             
  45.             stroke(col)
  46.             line( px, py, x0, y0 );
  47.             px = x0;
  48.             py = y0;
  49.         }
  50.         
  51.         public function createObj( mtx:FMatrix2D, len:Number ):void
  52.         {
  53.             var angle:Number = random(PI/64,PI/6);
  54.             if( Math.random()>0.5 )
  55.                 angle *= -1;
  56.             var tmt:FMatrix2D = new FMatrix2D();
  57.             tmt.scale( 0.950.95 );
  58.             tmt.rotate( angle );
  59.             tmt.translate( len, 0 );
  60.             var w:Number = 0.5;
  61.                
  62.             var obj:WormObject = new WormObject();
  63.             obj.c1x = obj.p1x = -w * mtx.c + mtx.tx;
  64.             obj.c1y = obj.p1y = -w * mtx.d + mtx.ty;
  65.             obj.c2x = obj.p2x =  w * mtx.c + mtx.tx;
  66.             obj.c2y = obj.p2y =  w * mtx.d + mtx.ty;
  67.             obj.vmt = mtx;
  68.             obj.tmt = tmt;
  69.             obj.r   = angle;
  70.             obj.w   = len/20;
  71.             obj.count = 0;
  72.                 
  73.             vms.push( obj );
  74.             if( vms.length > MAX_NUM )
  75.                 vms.shift();
  76.         }
  77.         
  78.         public function setup():void
  79.         {
  80.             size(1024768);
  81.             background(255);
  82.             noStroke();
  83.             px = mouseX;
  84.             py = mouseY;
  85.         }
  86.         
  87.         public function draw():void
  88.         {
  89.             if( isMousePressed )
  90.             {
  91.                 background(255);
  92.                 vms = [];
  93.             }
  94.             
  95.             noStroke();
  96.             var len:int = vms.length;
  97.             forvar i:int=0; i<len; i++ )
  98.             {
  99.                 var o:WormObject = vms[i];
  100.                 if( o.count<N ){
  101.                     drawWorm( o );
  102.                     o.count++;
  103.                 }else{
  104.                     len--;
  105.                     vms.splice( i, 1 );
  106.                     i--;
  107.                 }
  108.             }
  109.             
  110.             check();
  111.             
  112.             bitmapData.colorTransform( bitmapData.rect, ct );
  113.         }
  114.         
  115.         public function drawWorm( obj:WormObject ):void
  116.         {
  117.             
  118.             if( Math.random()>0.9 ){
  119.                 obj.tmt.rotate( -obj.r*2 );
  120.                 obj.r *= -1;
  121.             }
  122.             obj.vmt.prepend( obj.tmt );
  123.             var cc1x:Number = -obj.w*obj.vmt.c + obj.vmt.tx;
  124.             var cc1y:Number = -obj.w*obj.vmt.d + obj.vmt.ty;
  125.             var pp1x:Number = (obj.c1x+cc1x)/2;
  126.             var pp1y:Number = (obj.c1y+cc1y)/2;
  127.             var cc2x:Number = obj.w*obj.vmt.c + obj.vmt.tx;
  128.             var cc2y:Number = obj.w*obj.vmt.d + obj.vmt.ty;
  129.             var pp2x:Number = (obj.c2x+cc2x)/2;
  130.             var pp2y:Number = (obj.c2y+cc2y)/2;
  131.             beginFill( col );
  132.             moveTo( obj.p1x, obj.p1y );
  133.             curveTo( obj.c1x, obj.c1y, pp1x, pp1y );
  134.             lineTo( pp2x, pp2y );
  135.             curveTo( obj.c2x, obj.c2y, obj.p2x, obj.p2y );
  136.             closePath();
  137.             endFill();
  138.             obj.c1x = cc1x;
  139.             obj.c1y = cc1y;
  140.             obj.p1x = pp1x;
  141.             obj.p1y = pp1y;
  142.             obj.c2x = cc2x;
  143.             obj.c2y = cc2y;
  144.             obj.p2x = pp2x;
  145.             obj.p2y = pp2y;
  146.         }
  147.     }
  148. }
  149. import frocessing.geom.FMatrix2D;
  150. class WormObject{
  151.     public var c1x:Number;
  152.     public var c1y:Number;
  153.     public var c2x:Number;
  154.     public var c2y:Number;
  155.     public var p1x:Number;
  156.     public var p1y:Number;
  157.     public var p2x:Number;
  158.     public var p2y:Number;
  159.     public var w:Number;
  160.     public var r:Number;
  161.     public var count:int;
  162.     public var vmt:FMatrix2D;
  163.     public var tmt:FMatrix2D;
  164.     public function WormObject(){
  165.         
  166.     }
  167. }
noswf
  1. // forked from nutsu's Draw worm by mouse gesture.
  2. // forked from nutsu's Worm matrix based.
  3. /**
  4. LOVE MATRIX.
  5. a study for drawing curl curve.
  6. license under the GNU Lesser General Public License.
  7. */
  8. package {
  9.     import frocessing.display.F5MovieClip2DBmp;
  10.     import frocessing.geom.FMatrix2D;
  11.     import flash.geom.ColorTransform;
  12.     
  13.     public class WormMatrix extends F5MovieClip2DBmp{
  14.         
  15.         private var vms:Array;
  16.         private var MAX_NUM:int = 100
  17.         private var N:Number = 80;
  18.         private var px:Number;
  19.         private var py:Number;
  20.         private var col1:uint = 0x000000;
  21.         private var col2:uint = 0xffffff;
  22.         private var ct:ColorTransform = new ColorTransform(1,1,1,1,4,4,4);
  23.         
  24.         public function WormMatrix () {
  25.             superfalse, 0xffffffff );
  26.             stage.frameRate = 60;
  27.             vms = [];
  28.         }
  29.         
  30.         public function check():void
  31.         {
  32.             var x0:Number = mouseX;
  33.             var y0:Number = mouseY;
  34.             var vx:Number = px - x0;
  35.             var vy:Number = py - y0;
  36.             var len:Number = min( mag( vx, vy ), 50 );
  37.             
  38.             if( len<10 ) return;
  39.             
  40.             var mtx:FMatrix2D = new FMatrix2D();
  41.             mtx.rotate( atan2( vy, vx ) );
  42.             mtx.translate( x0, y0 );
  43.             
  44.             createObj( mtx, len );
  45.             
  46.             stroke(col1)
  47.             line( px, py, x0, y0 );
  48.             px = x0;
  49.             py = y0;
  50.         }
  51.         
  52.         public function createObj( mtx:FMatrix2D, len:Number ):void
  53.         {
  54.             var angle:Number = random(PI/64,PI/6);
  55.             if( Math.random()>0.5 )
  56.                 angle *= -1;
  57.             var tmt:FMatrix2D = new FMatrix2D();
  58.             tmt.scale( 0.950.95 );
  59.             tmt.rotate( angle );
  60.             tmt.translate( len, 0 );
  61.             var w:Number = 0.5;
  62.                
  63.             var obj:WormObject = new WormObject();
  64.             obj.c1x = obj.p1x = -w * mtx.c + mtx.tx;
  65.             obj.c1y = obj.p1y = -w * mtx.d + mtx.ty;
  66.             obj.c2x = obj.p2x =  w * mtx.c + mtx.tx;
  67.             obj.c2y = obj.p2y =  w * mtx.d + mtx.ty;
  68.             obj.vmt = mtx;
  69.             obj.tmt = tmt;
  70.             obj.r   = angle;
  71.             obj.w   = len;
  72.             obj.count = 0;
  73.                 
  74.             vms.push( obj );
  75.             if( vms.length > MAX_NUM )
  76.                 vms.shift();
  77.         }
  78.         
  79.         public function setup():void
  80.         {
  81.             size( 465465 );
  82.             background(255);
  83.             noStroke();
  84.             px = mouseX;
  85.             py = mouseY;
  86.         }
  87.         
  88.         public function draw():void
  89.         {
  90.             if( isMousePressed )
  91.             {
  92.                 background(255);
  93.                 vms = [];
  94.             }
  95.             
  96.             noStroke();
  97.             var len:int = vms.length;
  98.             forvar i:int=0; i<len; i++ )
  99.             {
  100.                 var o:WormObject = vms[i];
  101.                 if( o.count<N ){
  102.                     drawWorm( o );
  103.                     o.count++;
  104.                 }else{
  105.                     len--;
  106.                     vms.splice( i, 1 );
  107.                     i--;
  108.                 }
  109.             }
  110.             
  111.             check();
  112.             
  113.             bitmapData.colorTransform( bitmapData.rect, ct );
  114.         }
  115.         
  116.         public function drawWorm( obj:WormObject ):void
  117.         {
  118.             
  119.             if( Math.random()>0.9 ){
  120.                 obj.tmt.rotate( -obj.r*2 );
  121.                 obj.r *= -1;
  122.             }
  123.             obj.vmt.prepend( obj.tmt );
  124.             var cc1x:Number = -obj.w*obj.vmt.c + obj.vmt.tx;
  125.             var cc1y:Number = -obj.w*obj.vmt.d + obj.vmt.ty;
  126.             var pp1x:Number = (obj.c1x+cc1x)/2;
  127.             var pp1y:Number = (obj.c1y+cc1y)/2;
  128.             var cc2x:Number = obj.w*obj.vmt.c + obj.vmt.tx;
  129.             var cc2y:Number = obj.w*obj.vmt.d + obj.vmt.ty;
  130.             var pp2x:Number = (obj.c2x+cc2x)/2;
  131.             var pp2y:Number = (obj.c2y+cc2y)/2;
  132.             beginFill( random(col1,col2) );
  133.             moveTo( obj.p1x, obj.p1y );
  134.             curveTo( obj.c1x, obj.c1y, pp1x, pp1y );
  135.             lineTo( pp2x, pp2y );
  136.             curveTo( obj.c2x, obj.c2y, obj.p2x, obj.p2y );
  137.             closePath();
  138.             endFill();
  139.             obj.c1x = cc1x;
  140.             obj.c1y = cc1y;
  141.             obj.p1x = pp1x;
  142.             obj.p1y = pp1y;
  143.             obj.c2x = cc2x;
  144.             obj.c2y = cc2y;
  145.             obj.p2x = pp2x;
  146.             obj.p2y = pp2y;
  147.         }
  148.     }
  149. }
  150. import frocessing.geom.FMatrix2D;
  151. class WormObject{
  152.     public var c1x:Number;
  153.     public var c1y:Number;
  154.     public var c2x:Number;
  155.     public var c2y:Number;
  156.     public var p1x:Number;
  157.     public var p1y:Number;
  158.     public var p2x:Number;
  159.     public var p2y:Number;
  160.     public var w:Number;
  161.     public var r:Number;
  162.     public var count:int;
  163.     public var vmt:FMatrix2D;
  164.     public var tmt:FMatrix2D;
  165.     public function WormObject(){
  166.         
  167.     }
  168. }
noswf
  1. // forked from nutsu's Draw worm by mouse gesture.
  2. // forked from nutsu's Worm matrix based.
  3. /**
  4. LOVE MATRIX.
  5. a study for drawing curl curve.
  6. license under the GNU Lesser General Public License.
  7. */
  8. package {
  9.     import frocessing.display.F5MovieClip2DBmp;
  10.     import frocessing.geom.FMatrix2D;
  11.     import flash.geom.ColorTransform;
  12.     
  13.     public class WormMatrix extends F5MovieClip2DBmp{
  14.         
  15.         private var vms:Array;
  16.         private var MAX_NUM:int = 100
  17.         private var N:Number = 80;
  18.         private var px:Number;
  19.         private var py:Number;
  20.         private var col:uint = 0x000000;
  21.         private var ct:ColorTransform = new ColorTransform(1,1,1,1,4,4,4);
  22.         
  23.         public function WormMatrix () {
  24.             superfalse, 0xffffffff );
  25.             stage.frameRate = 60;
  26.             vms = [];
  27.         }
  28.         
  29.         public function check():void
  30.         {
  31.             var x0:Number = mouseX;
  32.             var y0:Number = mouseY;
  33.             var vx:Number = x0 - px;
  34.             var vy:Number = y0 - py;
  35.             var len:Number = min( mag( vx, vy ), 50 );
  36.             
  37.             if( len<10 ) return;
  38.             
  39.             var mtx:FMatrix2D = new FMatrix2D();
  40.             mtx.rotate( atan2( vy, vx ) );
  41.             mtx.translate( x0, y0 );
  42.             
  43.             createObj( mtx, len );
  44.             
  45.             stroke(col)
  46.             line( px, py, x0, y0 );
  47.             px = x0;
  48.             py = y0;
  49.         }
  50.         
  51.         public function createObj( mtx:FMatrix2D, len:Number ):void
  52.         {
  53.             var angle:Number = random(PI/64,PI/6);
  54.             if( Math.random()>0.5 )
  55.                 angle *= -1;
  56.             var tmt:FMatrix2D = new FMatrix2D();
  57.             tmt.scale( 0.950.95 );
  58.             tmt.rotate( angle );
  59.             tmt.translate( len, 0 );
  60.             var w:Number = 0.5;
  61.                
  62.             var obj:WormObject = new WormObject();
  63.             obj.c1x = obj.p1x = -w * mtx.c + mtx.tx;
  64.             obj.c1y = obj.p1y = -w * mtx.d + mtx.ty;
  65.             obj.c2x = obj.p2x =  w * mtx.c + mtx.tx;
  66.             obj.c2y = obj.p2y =  w * mtx.d + mtx.ty;
  67.             obj.vmt = mtx;
  68.             obj.tmt = tmt;
  69.             obj.r   = angle;
  70.             obj.w   = len/20;
  71.             obj.count = 0;
  72.                 
  73.             vms.push( obj );
  74.             if( vms.length > MAX_NUM )
  75.                 vms.shift();
  76.         }
  77.         
  78.         public function setup():void
  79.         {
  80.             size( 465465 );
  81.             background(255);
  82.             noStroke();
  83.             px = mouseX;
  84.             py = mouseY;
  85.         }
  86.         
  87.         public function draw():void
  88.         {
  89.             if( isMousePressed )
  90.             {
  91.                 background(255);
  92.                 vms = [];
  93.             }
  94.             
  95.             noStroke();
  96.             var len:int = vms.length;
  97.             forvar i:int=0; i<len; i++ )
  98.             {
  99.                 var o:WormObject = vms[i];
  100.                 if( o.count<N ){
  101.                     drawWorm( o );
  102.                     o.count++;
  103.                 }else{
  104.                     len--;
  105.                     vms.splice( i, 1 );
  106.                     i--;
  107.                 }
  108.             }
  109.             
  110.             check();
  111.             
  112.             bitmapData.colorTransform( bitmapData.rect, ct );
  113.         }
  114.         
  115.         public function drawWorm( obj:WormObject ):void
  116.         {
  117.             
  118.             if( Math.random()>0.9 ){
  119.                 obj.tmt.rotate( -obj.r*2 );
  120.                 obj.r *= -1;
  121.             }
  122.             obj.vmt.prepend( obj.tmt );
  123.             var cc1x:Number = -obj.w*obj.vmt.c + obj.vmt.tx;
  124.             var cc1y:Number = -obj.w*obj.vmt.d + obj.vmt.ty;
  125.             var pp1x:Number = (obj.c1x+cc1x)/2;
  126.             var pp1y:Number = (obj.c1y+cc1y)/2;
  127.             var cc2x:Number = obj.w*obj.vmt.c + obj.vmt.tx;
  128.             var cc2y:Number = obj.w*obj.vmt.d + obj.vmt.ty;
  129.             var pp2x:Number = (obj.c2x+cc2x)/2;
  130.             var pp2y:Number = (obj.c2y+cc2y)/2;
  131.             beginFill( col );
  132.             moveTo( obj.p1x, obj.p1y );
  133.             curveTo( obj.c1x, obj.c1y, pp1x, pp1y );
  134.             lineTo( pp2x, pp2y );
  135.             curveTo( obj.c2x, obj.c2y, obj.p2x, obj.p2y );
  136.             closePath();
  137.             endFill();
  138.             obj.c1x = cc1x;
  139.             obj.c1y = cc1y;
  140.             obj.p1x = pp1x;
  141.             obj.p1y = pp1y;
  142.             obj.c2x = cc2x;
  143.             obj.c2y = cc2y;
  144.             obj.p2x = pp2x;
  145.             obj.p2y = pp2y;
  146.         }
  147.     }
  148. }
  149. import frocessing.geom.FMatrix2D;
  150. class WormObject{
  151.     public var c1x:Number;
  152.     public var c1y:Number;
  153.     public var c2x:Number;
  154.     public var c2y:Number;
  155.     public var p1x:Number;
  156.     public var p1y:Number;
  157.     public var p2x:Number;
  158.     public var p2y:Number;
  159.     public var w:Number;
  160.     public var r:Number;
  161.     public var count:int;
  162.     public var vmt:FMatrix2D;
  163.     public var tmt:FMatrix2D;
  164.     public function WormObject(){
  165.         
  166.     }
  167. }
noswf
Get Adobe Flash Player