WEAVE beta – Flash: BitmapData.hitTest()

Der Computational Artisan Mario Klingemann aus München zweckentfremdet gerne Technik. Beispielsweise mit seiner generativen, auf Flash basierenden Technik “Image Foam”. Hier der Code für die Basis-Anwendung:

var brush:Shape = new Shape();
  1. brush.graphics.beginFill( 0 );
  2. brush.graphics.drawCircle( 0, 0, 60 );
  3. brush.graphics.endFill();
  4.  
  5. var map:BitmapData = new BitmapData( 500, 500, true, 0 );
  6. addChild( new Bitmap( map ) );
  7. var testMap:BitmapData = map.clone();
  8. var m:Matrix = new Matrix();
  9. var nextPoint:int = 1 + Math.random() * map.width * map.height;
  10. var origin:Point = new Point();
  11.  
  12. stage.addEventListener( Event.ENTER_FRAME, draw );
  13.  
  14. function draw( event:Event ):void
  15. {
  16.     for ( var i:int = 0; i < 20; i++ )
  17.     {
  18.         var ok:Boolean = false;
  19.         nextPoint = testMap.pixelDissolve( testMap, testMap.rect,origin, nextPoint, 1 );
  20.         m.tx = nextPoint % map.width;
  21.         m.ty = nextPoint / map.width;
  22.         if ( map.getPixel32( m.tx, m.ty ) == 0 )
  23.         {
  24.             var targetWidth:int = 5;
  25.             while ( targetWidth <= brush.width )
  26.             {
  27.                 m.a = m.d = targetWidth / brush.width;
  28.                 testMap.fillRect( testMap.rect, 0 );
  29.                 testMap.draw( brush, m );
  30.                 if ( map.hitTest( origin, 127, testMap, origin, 127 ) ) break;
  31.                 ok = true;
  32.                 targetWidth++;
  33.             }
  34.             if ( ok )
  35.             {
  36.                 m.a = m.d = ( targetWidth – 1 ) / brush.width;
  37.                 map.draw( brush, m );
  38.             }
  39.         }    
  40.     }
  41. }