/* * * java applet code from albert kluge @ http://www.jjam.de * * ported to actionscript 2 and modified by michael kneib @ www.kneib.biz * * usage: new FootBall(this, 150, 275, 200); * * */ class FootBall { private var p:Array; private var mc:MovieClip; private var s:Number; private var cx:Number; private var cy:Number; private var x:Number = 0; private var y:Number = 1; private var z:Number = 2; function FootBall(timeline:MovieClip, size:Number, centerX:Number, centerY:Number){ mc = timeline; s = size; cx = centerX; cy = centerY; init(); } private function init(Void):Void { p=new Array(60); for (var i=0;i<60;i++) { p[i]= new Array(3); } var h = s*0.5*(Math.sqrt(5)-1); var h1 = h/3; var h2 = h*2/3; var s1 = s/3; var s2 = s*2/3; var k1 = h+(s-h)/3; var k2 = h+(s-h)*2/3; p[0][x] = -s; p[0][y] = 0; p[0][z] = h1; p[1][x] = -s; p[1][y] = 0; p[1][z] = -h1; p[2][x] = -k2; p[2][y] = s1; p[2][z] = -h2; p[3][x] = -k1; p[3][y] = s2; p[3][z] = -h1; p[4][x] = -k1; p[4][y] = s2; p[4][z] = h1; p[5][x] = -k2; p[5][y] = s1; p[5][z] = h2; p[6][x] = -k2; p[6][y] = -s1; p[6][z] = -h2; p[7][x] = -k1; p[7][y] = -s2; p[7][z] = -h1; p[8][x] = -k1; p[8][y] = -s2; p[8][z] = h1; p[9][x] = -k2; p[9][y] = -s1; p[9][z] = h2; p[10][x] = -s2; p[10][y] = -h1; p[10][z] = k1; p[11][x] = -s1; p[11][y] = -h2; p[11][z] = k2; p[12][x] = 0; p[12][y] = -h1; p[12][z] = s; p[13][x] = 0; p[13][y] = h1; p[13][z] = s; p[14][x] = -s1; p[14][y] = h2; p[14][z] = k2; p[15][x] = -s2; p[15][y] = h1; p[15][z] = k1; p[16][x] = -h1; p[16][y] = k1; p[16][z] = s2; p[17][x] = -h2; p[17][y] = k2; p[17][z] = s1; p[18][x] = -h2; p[18][y] = -k2; p[18][z] = s1; p[19][x] = -h1; p[19][y] = -k1; p[19][z] = s2; p[20][x] = s; p[20][y] = 0; p[20][z] = -h1; p[21][x] = s; p[21][y] = 0; p[21][z] = h1; p[22][x] = k2; p[22][y] = -s1; p[22][z] = h2; p[23][x] = k1; p[23][y] = -s2; p[23][z] = h1; p[24][x] = k1; p[24][y] = -s2; p[24][z] = -h1; p[25][x] = k2; p[25][y] = -s1; p[25][z] = -h2; p[26][x] = k2; p[26][y] = s1; p[26][z] = h2; p[27][x] = k1; p[27][y] = s2; p[27][z] = h1; p[28][x] = k1; p[28][y] = s2; p[28][z] = -h1; p[29][x] = k2; p[29][y] = s1; p[29][z] = -h2; p[30][x] = s2; p[30][y] = h1; p[30][z] = -k1; p[31][x] = s1; p[31][y] = h2; p[31][z] = -k2; p[32][x] = 0; p[32][y] = h1; p[32][z] = -s; p[33][x] = 0; p[33][y] = -h1; p[33][z] = -s; p[34][x] = s1; p[34][y] = -h2; p[34][z] = -k2; p[35][x] = s2; p[35][y] = -h1; p[35][z] = -k1; p[36][x] = h1; p[36][y] = -k1; p[36][z] = -s2; p[37][x] = h2; p[37][y] = -k2; p[37][z] = -s1; p[38][x] = h2; p[38][y] = k2; p[38][z] = -s1; p[39][x] = h1; p[39][y] = k1; p[39][z] = -s2; p[40][x] = -h1; p[40][y] = s; p[40][z] = 0; p[41][x] = h1; p[41][y] = s; p[41][z] = 0; p[42][x] = h2; p[42][y] = k2; p[42][z] = s1; p[43][x] = h1; p[43][y] = k1; p[43][z] = s2; p[44][x] = s1; p[44][y] = h2; p[44][z] = k2; p[45][x] = s2; p[45][y] = h1; p[45][z] = k1; p[46][x] = s1; p[46][y] = -h2; p[46][z] = k2; p[47][x] = s2; p[47][y] = -h1; p[47][z] = k1; p[48][x] = h1; p[48][y] = -k1; p[48][z] = s2; p[49][x] = h2; p[49][y] = -k2; p[49][z] = s1; p[50][x] = h1; p[50][y] = -s; p[50][z] = 0; p[51][x] = -h1; p[51][y] = -s; p[51][z] = 0; p[52][x] = -h2; p[52][y] = -k2; p[52][z] = -s1; p[53][x] = -h1; p[53][y] = -k1; p[53][z] = -s2; p[54][x] = -s1; p[54][y] = -h2; p[54][z] = -k2; p[55][x] = -s2; p[55][y] = -h1; p[55][z] = -k1; p[56][x] = -s1; p[56][y] = h2; p[56][z] = -k2; p[57][x] = -s2; p[57][y] = h1; p[57][z] = -k1; p[58][x] = -h1; p[58][y] = k1; p[58][z] = -s2; p[59][x] = -h2; p[59][y] = k2; p[59][z] = -s1; setInterval(this, "paint", 10) } private function paint(Void):Void { mc.clear(); mc.moveTo(p[0][x]+cx,p[0][y]+cy); mc.lineStyle(0, 0x000000, 100, true); var px:Number; var py:Number; var pz:Number var ax:Number = (cx-_ymouse)/5000; var ay:Number = (cy-_xmouse)/5000; var az:Number = .005; line(0, 1); line(1, 2); line(2, 3); line(3, 4); line(4, 5); line(5, 0); line(1, 6); line(6, 7); line(7, 8); line(8, 9); line(9, 0); line(10, 11); line(11, 12); line(12, 13); line(13, 14); line(14, 15); line(15, 10); line(5, 15); line(9, 10); line(4, 17); line(17, 16); line(16, 14); line(8, 18); line(18, 19); line(19, 11); line(20, 21); line(21, 22); line(22, 23); line(23, 24); line(24, 25); line(25, 20); line(21, 26); line(26, 27); line(27, 28); line(28, 29); line(29, 20); line(30, 31); line(31, 32); line(32, 33); line(33, 34); line(34, 35); line(35, 30); line(25, 35); line(29, 30); line(24, 37); line(37, 36); line(36, 34); line(28, 38); line(38, 39); line(39, 31); line(40, 41); line(42, 43); line(44, 45); line(46, 47); line(48, 49); line(50, 51); line(52, 53); line(54, 55); line(56, 57); line(58, 59); line(41, 42); line(43, 16); line(43, 44); line(44, 13); line(46, 12); line(48, 19); line(49, 50); line(51, 52); line(53, 54); line(55, 57); line(56, 58); line(45, 47); line(46, 48); line(17, 40); line(3, 59); line(59, 40); line(58, 39); line(41, 38); line(50, 37); line(52, 7); line(36, 53); line(42, 27); line(45, 26); line(49, 23); line(2, 57); line(33, 54); line(55, 6); line(56, 32); line(22, 47); line(18, 51); for (var i:Number=0;i<60;i++) { px = p[i][x]; py = p[i][y]; pz = p[i][z]; p[i][y] = py*Math.cos(ax)-pz*Math.sin(ax); p[i][z] = py*Math.sin(ax)+pz*Math.cos(ax); py = p[i][y]; pz = p[i][z]; p[i][x] = px*Math.cos(ay)+pz*Math.sin(ay); p[i][z] =-px*Math.sin(ay)+pz*Math.cos(ay); px = p[i][x]; p[i][x] = px*Math.cos(az)-py*Math.sin(az); p[i][y] = py*Math.cos(az)+px*Math.sin(az); } } private function line(i:Number,j:Number):Void { mc.moveTo(p[i][x]+cx,p[i][y]+cy); mc.lineTo(p[j][x]+cx,p[j][y]+cy); } }