Rubik's Cube Image Generator Download
Below you can find the source of the Rubik's Cube Image generator by Josef Jelinek or you can download the same code in .txt format.
Click here to read about the Rubik's Cube Image Generator
<?php function rotu($u,$v,$a) { return $u*cos($a) - $v*sin($a); } function rotv($u,$v,$a) { return $u*sin($a) + $v*cos($a); } function rotxy($x,$y,$z,$ex,$ey,$ez,$ax,$ay) { $ry = rotu($ey,$ez,$ax); $rz = rotv($ey,$ez,$ax); $rx = rotu($ex,$rz,$ay); $rz = rotv($ex,$rz,$ay); return $x*$rx + $y*$ry + $z*$rz; } function projxy($x,$y,$z,$ex,$ey,$ax,$ay,$m) { $xx = $m == 2 ? $z : $x; $yy = $m == 0 ? $z : $y; $zz = $m == 0 ? -$y : ($m == 2 ? $x : $z); return rotxy($xx,$yy,$zz,$ex,$ey,0,$ax,$ay) / (1.0 - 0.3 * rotxy($xx,$yy,$zz,0,0,-1,$ax,$ay)); } function outcoordx($x,$m) { return $m > 0 ? $x * 0.58 + 0.52 : $x * -0.58 + 0.48; } function outcoordy($y,$m) { return $m > 0 ? $y * 0.58 + 0.46 : $y * -0.58 + 0.54; } function tile($im,$r, $x0,$y0, $x1,$y1, $x2,$y2, $x3,$y3, $z, $ax, $ay, $c, $m, $mx, $my) { $xx0 = outcoordx(projxy($x0,$y0,$z,1,0,$ax,$ay,$m), $mx) * $r; $yy0 = outcoordy(projxy($x0,$y0,$z,0,1,$ax,$ay,$m), $my) * $r; $xx1 = outcoordx(projxy($x1,$y1,$z,1,0,$ax,$ay,$m), $mx) * $r; $yy1 = outcoordy(projxy($x1,$y1,$z,0,1,$ax,$ay,$m), $my) * $r; $xx2 = outcoordx(projxy($x2,$y2,$z,1,0,$ax,$ay,$m), $mx) * $r; $yy2 = outcoordy(projxy($x2,$y2,$z,0,1,$ax,$ay,$m), $my) * $r; $xx3 = outcoordx(projxy($x3,$y3,$z,1,0,$ax,$ay,$m), $mx) * $r; $yy3 = outcoordy(projxy($x3,$y3,$z,0,1,$ax,$ay,$m), $my) * $r; imagefilledpolygon($im, array($xx0,$yy0, $xx1,$yy1, $xx2,$yy2, $xx3,$yy3), 4, $c); } function square($im,$r, $x,$y, $w, $b, $z, $m, $c, $mx, $my) { tile($im,$r, $x+$b-0.5,$y+$b-0.5, $x+$w-$b-0.5,$y+$b-0.5, $x+$w-$b-0.5,$y+$w-$b-0.5, $x+$b-0.5,$y+$w-$b-0.5, $z, -0.5, 0.6, $c, $m, $mx, $my); } $side = isset($_GET['n']) ? 1 * $_GET['n'] : 3; $size = isset($_GET['size']) ? $_GET['size'] : 100; $b = isset($_GET['b']) ? $_GET['b'] : 25; $d = isset($_GET['d']) ? $_GET['d'] : 5; $dim = min(5 * $size, 500); $fl = isset($_GET['fl']) ? $_GET['fl'] : $_GET['stickers']; $bg = isset($_GET['bg']) ? hexdec($_GET['bg']) : 0xFFFFFF; $c = array( 'r'=>0xD00000, 'o'=>0xEE8800, 'b'=>0x2040D0, 'g'=>0x11AA00, 'w'=>0xFFFFFF, 'y'=>0xFFFF00, 'l'=>0xDDDDDD, 'd'=>0x555555, 'x'=>0x999999, 'k'=>0x111111, 'c'=>0x0099FF, 'p'=>0xFF99CC, 'm'=>0xFF0099); $mx = isset($_GET['m']) ? ($_GET['m'] == 'x' || $_GET['m'] == 'xy' ? -1 : 1) : 1; $my = isset($_GET['m']) ? ($_GET['m'] == 'y' || $_GET['m'] == 'xy' ? -1 : 1) : 1; $im = imagecreatetruecolor($dim,$dim); imagefilledrectangle($im, 0,0, $dim-1,$dim-1, $bg); square($im,$dim, 0,0, 1, 0, -0.5, 0, 0x010101, $mx, $my); // U square($im,$dim, 0,0, 1, 0, -0.5, 1, 0x090909, $mx, $my); // F square($im,$dim, 0,0, 1, 0, 0.5, 2, 0x050505, $mx, $my); // R for ($m = 0; $m < 3; $m++) for ($i = 0; $i < $side; $i++) for ($j = 0; $j < $side; $j++) square($im,$dim, $j/(1.0*$side),$i/(1.0*$side), 1.0/$side, $b/1000.0, $m < 2 ? -0.5-$d/1000.0 : 0.5+$d/1000.0, $m, $c[substr($fl,$m*$side*$side+$i*$side+$j,1)], $mx, $my); $im2 = imagecreatetruecolor($size,$size); imagecopyresampled($im2, $im, 0,0, 0,0, $size,$size, $dim,$dim); imagedestroy($im); if (!isset($_GET['f']) || $_GET['f'] == 'gif'): header('Content-type: image/gif'); imagegif($im2); elseif ($_GET['f'] == 'png'): header("Content-type: image/png"); imagepng($im2); elseif ($_GET['f'] == 'jpg' || $_GET['f'] == 'jpeg'): header('Content-type: image/jpeg'); imagejpeg($im2); endif; imagedestroy($im2); ?>