flash on 2013-3-2
♥0 |
Line 77 |
Modified 2013-03-02 13:47:11 |
MIT License
archived:2017-03-20 14:03:59
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);
}
}
}