<?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 $j;
    
$y $k;
    
$sx $x 512;
    
$sy $y 512;
    
$qx = ($sx 0)?0:1;
    
$qy = ($sy 0)?0:1;
    
$q $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($n1016);
      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($h11610);
      
$d2 base_convert($h21610);
      
$d3 base_convert($h31610);
    }
    
$color=imageColorAllocate($image,$d1,$d2,$d3);
    
imageSetPixel($image,$j,$k,$color);
  }
}


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