<?php
// output PNG
header("Content-type: image/png");
$image=imagecreatetruecolor(256,256);

// fill background for no reason
$white=imageColorAllocate($image,255,255,255);
imageFilledRectangle($image,0,0,255,255,$white);
$black=imageColorAllocate($image,0,0,0);

//populate arrays
$addary = array();           //red
$addary[0] = array(0,1,0);   //red green
$addary[1] = array(-1,0,0);  //green
$addary[2] = array(0,0,1);   //green blue
$addary[3] = array(0,-1,0);  //blue
$addary[4] = array(1,0,0);   //red blue
$addary[5] = array(0,0,-1);  //red
$addary[6] = array(255,1,1);

$clrary = array(360);
for(
$i = 0; $i < 6; $i++)
for(
$j = 0; $j < 60; $j++) {
  
$clrary[60 * $i + $j] = array(3);
  for(
$k = 0; $k < 3; $k++) {
    
$clrary[60 * $i + $j][$k] = $addary[6][$k];
    
$addary[6][$k] += ($addary[$i][$k] * 4);
  }
}


for (
$k=0; $k<256; $k++) {
  for (
$j=0; $j<256; $j++) {
    
$x = 4 * $j;
    
$y = 4 * $k;
    
$sx = $x - 512;
    
$sy = $y - 512;
    
$qx = ($sx < 0)?0:1;
    
$qy = ($sy < 0)?0:1;
    
$q = 2 * $qy + $qx;
    
$quad = array(-180,360,180,0);
    
$xa = abs($sx);
    
$ya = abs($sy);
    
$d = 0;
    if (
$xa > 0) $d = 45 * $ya / $xa;
    if (
$ya > $xa) $d = 90 - ($xa * 45 / $ya);
    
$deg = floor(abs($quad[$q] - $d));
    
$n = 0;
    
$sx = abs($x - 512);
    
$sy = abs($y - 512);
    
$r = sqrt(($sx * $sx) + ($sy * $sy));
    if (
$x == 512 & $y == 512) {$c = 0;}
    else {
      for (
$i = 0; $i < 3; $i++) {
         
$r2 = $clrary[$deg][$i] * $r / 256;
         if (
$r > 256) $r2 += floor($r - 256);
         if (
$r2 > 255) $r2 = 255;
         
$n = 256 * $n + floor($r2);
         }
      
$hex = base_convert($n, 10, 16);
      while (
strlen($hex) < 6) $hex = '0' . $hex;
      
$h1 = $hex{0}.$hex{1};
      
$h2 = $hex{2}.$hex{3};
      
$h3 = $hex{4}.$hex{5};
      
$d1 = base_convert($h1, 16, 10);
      
$d2 = base_convert($h2, 16, 10);
      
$d3 = base_convert($h3, 16, 10);
    }
    
$color=imageColorAllocate($image,$d1,$d2,$d3);
    
imageSetPixel($image,$j,$k,$color);
  }
}


imagePNG($image);
imageDestroy($image);
?>