flash on 2013-3-2

by ohisama
♥0 | Line 77 | Modified 2013-03-02 13:47:11 | MIT License
play

ActionScript3 source code

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

package 
{
    import flash.display.Sprite;
    import flash.display.BitmapData;
    import flash.display.Bitmap;
    import frocessing.color.ColorHSV;
    public class FlashTest extends Sprite 
    {
        public function FlashTest() 
        {
            var bmp : BitmapData = new BitmapData(300, 300, false, 0x444444);
            var width : Number = 300;
            var height : Number = 300;
            var backr : Number = 0.2;
            var backg : Number = 0.2;
            var backb : Number = 0.6;
            var ballred : Number = 1.0;
            var ballgreen : Number = 1.0;
            var ballblue : Number = 0.0;
            var bx : Number = 10.0;
            var by : Number = 10.0;
            var bz : Number = 42.0;
            var br : Number = 30.0;
            var lx : Number = Math.sqrt(1.0 / 3.0);
            var ly : Number = Math.sqrt(1.0 / 3.0);
            var lz : Number = Math.sqrt(1.0 / 3.0);
            var i : Number = 0;
            var j : Number = 0;
            var r : Number = 0;
            var vx : Number = 0;
            var vy : Number = 0;
            var vz : Number = 0;
            var vlen : Number = 0;
            for (i = 0; i < height; i++)
            {
                for (j = 0; j < width; j++)
                {
                    vz = 1.0;
                    vx = (i - height / 1.6) / height;
                    vy = (j - width / 1.6) / width;
                    vlen = Math.sqrt(vx * vx + vy * vy + vz * vz);
                    vx = vx / vlen;
                    vy = vy / vlen;
                    vz = vz / vlen;
                    var a : Number = vx * vx + vy * vy + vz * vz;
                    var b : Number = -2 * vx * bx - 2 * vy * by - 2 * vz * bz;
                    var c : Number = bx * bx + by * by + bz * bz - br * br;
                    var d : Number = b * b - 4 * a * c;  
                    if (d < 0.0)
                    {
                        r = backr * 255 * 255 *255 + backg * 255 * 255 + backb * 255;
                    }
                    else
                    {
                        var t : Number = (-b - Math.sqrt(d)) / (2 * a);
                        var nx : Number = vx * t - bx;
                        var ny : Number = vy * t - by;
                        var nz : Number = vz * t - bz;
                        var nlen : Number = Math.sqrt(nx * nx + ny * ny + nz * nz);
                        nx = nx / nlen;
                        ny = ny / nlen;
                        nz = nz / nlen;
                        var costheta1 : Number =  - vx * nx - vy * ny - vz * nz;
                        var costheta2 : Number =  - lx * nx - ly * ny - lz * nz;
                        var red : Number = Math.min(1.0, ballred * costheta1 * costheta2);
                        var gre : Number = Math.min(1.0, ballgreen * costheta1 * costheta2);
                        var blu : Number = Math.min(1.0, ballblue * costheta1 * costheta2);
                        r = red * 255 * 255 * 255 + gre * 255 * 255 + blu * 255;
                    }
                    bmp.setPixel(i, j, r);
                }
            }
            var bm : Bitmap = new Bitmap(bmp);
            addChild(bm);
        }
    }
}