Sierpinski

by 12346
♥0 | Line 50 | Modified 2011-01-05 15:00:58 | MIT License | (replaced)
play

Related images

ActionScript3 source code

/**
 * Copyright 12346 ( http://wonderfl.net/user/12346 )
 * MIT License ( http://www.opensource.org/licenses/mit-license.php )
 * Downloaded from: http://wonderfl.net/c/6eP1
 */

//パスカルの三角形の各マスの数を定数mで割った余りを表示した三角形
//右上の2~9の数字クリックでmを設定
package{import flash.display.*;import flash.events.*;import flash.geom.*;
public class Sierpinski extends Sprite{
    public var canvas:BitmapData=new BitmapData(465,465),
        v1:Vector.<int>=new Vector.<int>,
        v2:Vector.<int>=new Vector.<int>,
        r:Rectangle=new Rectangle(0,0,8,8)
    public function Sierpinski(){
        var i:int
        Image.init(this)
        addChild(new Bitmap(canvas))
        for(i=2;i<10;i++)addChild(new Button(i,d))
    }
    public function d(m:int):void{
        var v:Vector.<int>,n:int,k:int
        v1[0]=1
        for(n=0;n<59;n++){
            v=v1;v1=v2;v2=v
            for(k=0;k<=n;k++){
                canvas.copyPixels(Image.data[v1[k]=k?k-n?(v2[k-1]+v2[k])%m:1:1],r,new Point(228-4*n+8*k,n*8))
            }
        }
    }
}}

import flash.display.*;
import flash.events.*;
import flash.geom.*;
import flash.system.*;
import flash.net.*;
class Image{
    public static var data:Vector.<BitmapData>
    public static function init($:Sierpinski):void{
        data=new Vector.<BitmapData>()
        for(var i:int=0;i<10;i++)data[i]=new BitmapData(8,8)
        var l:Loader=new Loader
        l.contentLoaderInfo.addEventListener("complete",function(e:Event):void{
            var b:BitmapData=Bitmap(l.content).bitmapData,p:Point=new Point
            for(i=0;i<10;i++)data[i].copyPixels(b,new Rectangle(i*8,0,8,8),p)
            $.d(2)
        })
        l.load(new URLRequest("http://assets.wonderfl.net/images/related_images/6/6d/6d26/6d2610788cb00a4d50f7512a13ab209ca5da8ae0"),new LoaderContext(true))
    }
}
class Button extends Sprite{
    function Button(i:int,m:Function){
        addChild(new Bitmap(Image.data[i]))
        x=i*16+300,y=60
        scaleX=scaleY=2
        addEventListener("mouseDown",function():void{m(i)})
    }
}