color3.pl to HTML.

index -|- end

Generated: Tue Feb 2 17:54:27 2010 from color3.pl 2007/02/13 18.7 KB.

#!/perl -w
# *NAME* color3.pl
# AIM: To build a COLOR WHEEL in HTML
use strict;
use warnings;
use Math::Trig;
require 'logfile.pl' or die "Unable to load logfile.pl ...\n";
# log file stuff
my ($LF);
my $showref = 0; # output the color reference list, and exit
my $outfile = 'temp.'.$0.'.txt';
my $htmfile = 'temp.'.$0.'.htm';
# debug items
my $dbg1 = 0;   # show each is_in_used call
my $dbg2 = 0;   # show paragraph added to table
my $dbg3 = 0;   # list, as text, the standard generated colors
my $dbg4 = 0;   # out debug message, in get_slice()
open_log($outfile);
prt( "$0 ... Hello, World ...\n" );
my ($HF, $msg, $clr);
open $HF, ">$htmfile" or mydie( "ERROR: Unable to open $htmfile ...\n" );
my $t45 = tan(deg2rad(45));
my $at = rad2deg(atan(1));
prt( "tan(45) = $t45 ... atan(1) = $at \n");
# HTML OUTPUT
# ===========
html_begin($HF);
out_color_wheel( $HF, 32 );
#for (my $i = 9; $i < 33; $i++) {
#   out_color_wheel( $HF, $i );
#}
html_end($HF);
# END HTML OUTPUT
close $HF;
system($htmfile);
close_log($outfile,0);
exit(0);
sub html_begin {
   my ($f) = shift;
   print $f <<"EOF";
<html>
<head>
<title>$htmfile</title>
<style type="text/css">
<!-- /* Style Definitions */
body {
margin:1cm 1cm 1cm 1cm;
}
p {
margin:0cm;
padding:0cm
}
-->
</style>
</head>
<body>
<h1>$htmfile</h1>
EOF
}
sub html_end {
   my ($f) = shift;
   print $f <<"EOF";
</body>
</html>
EOF
}
sub floor { ($_[0]<0) ? -int -$_[0]+1 : int $_[0] } 
sub ceil { ($_[0]<0) ?  -int -$_[0] : int $_[0]+1 } 
sub round { ($_[0]>0) ?  int $_[0]+0.5 : int $_[0]-0.5 } 
sub out_of_circle {
   my ($x, $y, $rx, $ry, $rad) = @_;
   my $rval = 0;
   my $xmin = abs($rx);
   my $xmax = $rad + ($rad - abs($rx));
   my $ymin = $rad - abs($ry);
   my $ymax = $rad + abs($ry);
   if (($x < $xmin)||($x > $xmax)||($y < $ymin)||($y > $ymax)) {
      $rval = 1;
   }
   if ($x == 0) {
      prt("\n");
   }
   prt( sprintf("$x,$y %2.2f,%2.2f ", $rx, $ry) );
   prt( sprintf("(%2.2f %2.2f %2.2f %2.2f) ", $xmin, $xmax, $ymin, $ymax) );
   prt( "x < min " ) if ($x < $xmin);
   prt( "x > max " ) if ($x > $xmax);
   prt( "y < min " ) if ($y < $ymin);
   prt( "y > max " ) if ($y > $ymax);
   prt( ($rval ? "Out" : "IN") );
   prt( "\n" );
   return $rval;
}
sub get_bg_color {
   my ($x, $y, $grid, $part) = @_;
   my $max = $grid * $part;
   my $rad = $max / 2;
   my $fact = 256 / ($max - 1);
   my ($r, $g, $b);
   my ($xf, $yf);
   my $cx = $rad - $x;
   my $cy = $rad - $y;
   #my $dx = $cx - $x;
   #my $dy = $y - $cy;
   #my $q = 'quad ';
   my $qn = 0;
   if ($x < $rad) {
      if ($y < $rad) {
         $qn = 1;
      } else {
         $qn = 4;
      }
   } else {
      if ($y < $rad) {
         $qn = 2;
      } else {
         $qn = 3;
      }
   }
   if ($cy == 0) {
      $cy = 0.001;
   }
   my $rang = atan( $cx / $cy );
   my $rx = $rad * sin($rang);
   my $ry = $rad * cos($rang);
   my $out = out_of_circle( $x, $y, $rx, $ry, $rad );
   if ($x == 0) {
      prt("\n");
   }
   prt( "$x,$y cx=$cx,cx=$cx angle=".sprintf("%2.2f",rad2deg($rang))." out=$out\n" );
   $r = $g = $b = 0;
   $xf = int($x * $fact);
   $xf = 255 if ($xf >= 256);
   $yf = int($y * $fact);
   $yf = 255 if ($yf >= 256);
   $b = 255 - $xf;
   $g = $xf;
   my $c = '#FFFFFF';
   if ( ! $out ) {
      $c = uc(sprintf("#%2.2x%2.2x%2.2x", $r, $g, $b ));
   }
   return $c;
}
sub out_color_wheel_NO_GOOD {
   my ($f) = shift;
   my $grid = 13;
   my $part = 4;
   my $max = $grid * $part;
   my $msg = '';
   my $hdr = "Color Wheel - $max x $max grid";
   prt( "Out put of $hdr ...\n" );
   print $f "<hr>\n";
   print $f "<h1>$hdr</h1>\n";
   print $f "<table border=\"0\" cellpadding=\"0\" cellspacing=\"0\" summary=\"$hdr\" width=\"100%\">\n";
   my $cols = 0;
   my $i = 0;
   my $j = 0;
   my ($r, $g, $b);
   my ($hr, $hg, $hb);
   my ($sty);
   for ($i = 0; $i < $max; $i++) {
      print $f "<tr>\n";
      for ($j = 0; $j < $max; $j++) {
         $msg = "<td bgcolor=\"".get_bg_color($j, $i, $grid, $part)."\">";
         if ($j == 0) {
            $msg .= "$i";
         } else {
            $msg .= ".";
         }
         $msg .= "</td>\n";
         print $f $msg;
      }
      print $f "</tr>\n";
   }
   print $f "</table>\n";
}
sub simple_circle {
   my ($i, $x, $y);
   my $rad = 70;
   my $max = pi * 6;
   my $step = 0.03;
   my $cnt = 0;
   my $mrad = sprintf("%2.4f", $max);
   prt( "Gen circle, radius $rad, for 0 to $mrad (6 * pi), step $step ...\n" );
   for ($i = 0; $i < $max; $i += $step)
   {
      $cnt++;
      $x = cos($i) * $rad;
      $y = sin($i) * $rad;
      prt( sprintf("%3d %2.3f x,y = %3.2f,%3.2f ...\n", $cnt, $i, $x, $y ));
   }
}
#-----------------------------
sub hypotenuse {
    my ($sd1, $sd2) = @_;
    return sqrt( ($sd1 ** 2) + ($sd2 ** 2) );
}
#-----------------------------
sub get_angle_radians {
   my ($x, $y, $rad) = @_;
   my ($cx, $cy, $ang);
   if ($x < $rad) {
      $cx = $rad - $x;
   } else {
      $cx = $x - $rad;
   }
   if ($y < $rad) {
      $cy = $rad - $y;
   } else {
      $cy = $y - $rad;
   }
   $cy = 0.001 if ($cy == 0);
   $ang = atan( $cx / $cy );
   return $ang;
}
sub get_angle_degrees {
   my ($x, $y, $rad) = @_;
   return rad2deg(get_angle_radians( $x, $y, $rad ));
}
sub get_hypotenuse {
   my ($x, $y, $rad) = @_;
   my ($cx, $cy, $hyp);
   if ($x < $rad) {
      $cx = $rad - $x;
   } else {
      $cx = $x - $rad;
   }
   if ($y < $rad) {
      $cy = $rad - $y;
   } else {
      $cy = $y - $rad;
   }
   # have a $cx, and $cy, find hypotenuse
   # $hyp = hypotenuse( $cx+1, $cy+1 );
   # $hyp = hypotenuse( $cx+0.1, $cy+0.1 );
   $hyp = hypotenuse( $cx, $cy );
   return $hyp;
}
sub within_circle {
   # x and y reference commence upper left
   my ($x, $y, $rad) = @_;
   my ($hyp, $io);
   $hyp = get_hypotenuse( $x, $y, $rad );
   if ($hyp > $rad) {
      $io = 0;
   } else {
      $io = 1;
   }
   return $io;
}
sub within_circle_rad {
   my ($x, $y, $rad, $rad2) = @_;
   if ( within_circle( $x, $y, $rad ) ) {
      my ($hyp, $io);
      $hyp = get_hypotenuse( $x, $y, $rad );
      if ($hyp > $rad2) {
         $io = 0;
      } else {
         $io = 1;
      }
      return $io;
   }
   return 0;
}
sub does_60_deg_rad_pass {
   my ($x, $y, $rad) = @_;
   my ($a1, $a2, $a3, $a4);
   my $rval = 0;
   $a1 = get_angle_degrees( $x, $y, $rad );
   $a2 = get_angle_degrees( $x+1, $y, $rad );
   $a3 = get_angle_degrees( $x+1, $y+1, $rad );
   $a4 = get_angle_degrees( $x, $y+1, $rad );
   if ($y < $rad) {
      if (($a1 >= 60)&&($a2 <= 60)) {
         $rval++;
      }
      if (($a2 <= 60)&&($a3 >= 60)) {
         $rval++;
      }
      if (($a1 <= 60)&&($a4 >= 60)) {
         $rval++;
      }
      if (($a3 <= 60)&&($a4 >= 60)) {
         $rval++;
      }
   } else {
      if (($a1 >= 60)&&($a2 <= 60)) {
         $rval++;
      }
      if (($a2 >= 60)&&($a3 <= 60)) {
         $rval++;;
      }
      if (($a1 >= 60)&&($a4 <= 60)) {
         $rval++;
      }
      if (($a3 <= 60)&&($a4 >= 60)) {
         $rval++;
      }
   }
#   if (($x == 5)&&($y == 50)) {
#      prt( sprintf( "%d,%d a1=%2.2f a2=%2.2f a3=%2.2f a4=%2.2f %s\n", $x, $y, $a1, $a2, $a3, $a4, ($rval ? "ok" : "NO") ) );
#   }
   return $rval;
}
sub out_color_wheel_OK {
   my ($f, $rad) = @_;
   my ($i, $x, $y, $bg, $ang, $fang, $in1, $in2, $r, $g, $b, $r60, $wh, $twid, $tdw);
   my $diam = $rad * 2;
   my $cnt = 0;
   my $out = 0;
   my $fill = '';
   my $hdr = "Generate grid - $rad x $rad";
   $tdw = 14;
   $twid = $rad * $tdw;
   prt( "$hdr ...\n" );
   print $f "<hr>\n";
   print $f "<h1>$hdr</h1>\n";
   print $f "<table border=\"0\" cellpadding=\"0\" cellspacing=\"0\" summary=\"$hdr\">\n";
   $bg = '';
   $wh = ' align="center" valign="middle" width="14" height="10"';
   for( $y = 0; $y < $diam+1; $y++ ) {
      printf $f "<tr>\n";
      for ($x = 0; $x < $diam+1; $x++) {
         $r60 = does_60_deg_rad_pass( $x, $y, $rad );
         $ang = get_angle_degrees( $x, $y, $rad );
         $fang = int($ang);
         $in1 = within_circle( $x, $y, $rad );
         $in2 = within_circle_rad( $x, $y, $rad, ($rad / 2));
         if ($in1) {
            # set DEFAULT colors
            if( $in2 ) { 
               $r = 102;   # $bg = ' bgcolor="#666666"';
               $g = 102;
               $b = 102;
            } else {
               $r = 170;   # $bg = ' bgcolor="#AAAAAA"';
               $g = 170;
               $b = 170;
            }
            if ($y < $rad) {
               # upper half - left = BLUE - right = GREEN
               if ($ang == 45) {
                  if ($x < $rad) {
                     $fill = '4';
                  } else {
                     $fill = '5';
                  }
               } else {
                  if ($x < $rad) {
                     $fill = 'b';
                  } else {
                     $fill = 'g';
                  }
               }
               if ($r60) {
                  if ($x < $rad) {
                     $fill = '6';
                     if ($in2) {
                        $r = 0;
                        $g = 0;
                        $b = 128;   
                     } else {
                        $r = 0;
                        $g = 0;
                        $b = 255;
                     }
                  } else {
                     $fill = '6';
                     if ($in2) {
                        $r = 0;
                        $g = 128;
                        $b = 0;
                     } else {
                        $r = 0;
                        $g = 255;
                        $b = 0;
                     }
                  }
               } elsif ( $ang == 0 ) {
                  $fill = '0';
                  if ($in2) {
                     $r = 0;
                     $g = 128;
                     $b = 128;
                  } else {
                     $r = 0;
                     $g = 255;
                     $b = 255;
                  }
               } else {
                  if ($x < $rad) {
                     $fill = 'b';
                  } else {
                     $fill = 'g';
                  }
               }
            } else {
               # lower half = RED  (left = BLUE - right = GREEN)
               if ($ang == 0) {
                  $fill = '9';
                  if ($in2) {
                     $r = 128;
                     $g = 0;
                     $b = 0;
                  } else {
                     $r = 255;
                     $g = 0;
                     $b = 0;
                  }
               } elsif ($r60) {
                  $fill = '6';
                  if ($x < $rad) {
                     # left BLUE
                     if ($in2) {
                        $r = 128;
                        $g = 0;
                        $b = 102;
                     } else {
                        $r = 255;
                        $g = 0;
                        $b = 255;
                     }
                  } else {
                     # right GREEN
                     if ($in2) {
                        $r = 128;
                        $g = 102;
                        $b = 0;
                     } else {
                        $r = 255;
                        $g = 255;
                        $b = 0;
                     }
                  }
               } else {
                  $fill = 'r';
               }
            }
            ###$fill = '<img src="black.gif">';
         } else {
            # OUTSIDE CIRCLE - FILL WHITE ONLY
            $fill = '.';
            $r = 255;   # $bg = ' bgcolor="#FFFFFF"';
            $g = 255;
            $b = 255;
            ###$fill = '<img src="white.gif">';
         }
         #$fill .= sprintf("=%2.3f", $ang);
         #$fill .= "<br>$x,$y";
         $bg = ' bgcolor="';
         $bg .= uc(sprintf("#%2.2x%2.2x%2.2x", $r, $g, $b ));
         $bg .= '"';
         printf $f "<td$bg$wh>$fill</td>\n";
      }
      printf $f "</tr>\n";
   }
   print $f "</table>\n";
}
sub get_fill {
   my ($x, $y, $rad, $in1, $in2, $ang, $r60) = @_;
   my $fill = '.';
   if ($in1) {
      if ($y < $rad) {
         # upper half - left = BLUE - right = GREEN
         if ($ang == 45) {
            if ($x < $rad) {
               $fill = '4';
            } else {
               $fill = '5';
            }
         } else {
            if ($x < $rad) {
               $fill = 'b';
            } else {
               $fill = 'g';
            }
         }
         if ($r60) {
            if ($x < $rad) {
               $fill = '6';
            } else {
               $fill = '6';
            }
         } elsif ( $ang == 0 ) {
            $fill = '0';
         } else {
            if ($x < $rad) {
               $fill = 'b';
            } else {
               $fill = 'g';
            }
         }
      } else {
         # lower half = RED  (left = BLUE - right = GREEN)
         if ($ang == 0) {
            $fill = '9';
         } elsif ($r60) {
            $fill = '6';
         } else {
            $fill = 'r';
         }
      }
      ###$fill = '<img src="black.gif">';
   }
   ##$fill .= sprintf("=%2.3f", $ang);
   ##$fill .= "<br>$x,$y";
   return $fill;
}
my $lastmsg = '';
sub get_slice {
   my ($x, $y, $rad, $in1, $in2, $ang, $r60) = @_;
   my ($sli, $hyp, $rad2, $msg);
   $hyp = get_hypotenuse( $x, $y, $rad );
   # FOR OUTSIDE CIRCLE - FILL WHITE ONLY
   $rad2 = $rad / 2;
   $sli = 0;
   $msg = "slice: $x,$y ";
   if ($in1) {
      if ($y < $rad) {
         # upper half - left = BLUE - right = GREEN
         if ($ang < 60) {
            if ($x < $rad) {
               # favour BLUE of BG
               #$r = $g = $b = 0;   # slice 1
               $sli = 1;
               $msg .= "$sli y < rad, ang < 60, x < rad";
            } else {
               # favour GREEN of BG
               #$r = $g = $b = 0;   # slice 2
               $sli = 2;
               $msg .= "$sli y < rad, ang < 60, x >= rad";
            }
         } else {
            if ($x < $rad) {
               # favour BLUE of BR
               #$r = $g = $b = 0;   # slice 6u
               $sli = 6;
               $msg .= "$sli y < rad, ang >= 60, x < rad";
            } else {
               # favour RED of BR
               #$r = $g = $b = 0;   # slice 3u
               $sli = 3;
               $msg .= "$sli y < rad, ang >= 60, x >= rad";
            }
         }
      } else {
         # lower half = RED  (left = BLUE - right = GREEN)
         if ($ang < 60) {
            if ($x < $rad) {
               # favour BLUE of BG
               #$r = $g = $b = 0;   # slice 5
               $sli = 5;
               $msg .= "$sli y >= rad, ang < 60, x < rad";
            } else {
               # favour GREEN of BG
               #$r = $g = $b = 0;   # slice 4
               $sli = 4;
               $msg .= "$sli y >= rad, ang < 60, x >= rad";
            }
         } else {
            if ($x < $rad) {
               # favour BLUE of BR
               #$r = $g = $b = 0;   # slice 6-lower
               $sli = 6;
               $msg .= "$sli y >= rad, ang >= 60, x < rad";
            } else {
               # favour RED of BR
               #$r = $g = $b = 0;   # slice 3-lower
               $sli = 3;
               $msg .= "$sli y >= rad, ang >= 60, x >= rad";
            }
         }
      }
   }
   if ( $dbg4 && (length($msg) > 15) && ($lastmsg ne $msg)) {
      prt( "$msg " . sprintf("ang=%2.2f", $ang )."\n" );
      $lastmsg = $msg;
   }
   return $sli;
}
sub get_color {
   my ($x, $y, $rad, $in1, $in2, $ang, $r60) = @_;
   my ($r, $g, $b, $clr, $hyp, $rad2, $sli);
   my ($fac1, $f1, $fac2, $f2);
   $sli = get_slice( $x, $y, $rad, $in1, $in2, $ang, $r60 );
   $hyp = get_hypotenuse( $x, $y, $rad );
   # FOR OUTSIDE CIRCLE - FILL WHITE ONLY
   $rad2 = $rad / 2;
   $r = 255;   # $bg = ' bgcolor="#FFFFFF"';
   $g = 255;
   $b = 255;
   $clr = '#FFFFFF';
   my $msg = '';
   if ($in1) {
      # set DEFAULT colors
      if( $in2 ) { 
         $r = 102;   # $bg = ' bgcolor="#666666"';
         $g = 102;
         $b = 102;
      } else {
         $r = 170;   # $bg = ' bgcolor="#AAAAAA"';
         $g = 170;
         $b = 170;
      }
      if ($y < $rad) {
         # upper half - left = BLUE - right = GREEN
         if ($r60) {
            if ($x < $rad) {
               if ($in2) {
                  # getting darker towards centre
                  $r = 0;
                  $g = 0;
                  $b = 225;   
               } else {
                  # gettting lighter toward outside
                  $r = 0;
                  $g = 0;
                  $b = 255;
               }
            } else {
               if ($in2) {
                  $r = 0;
                  $g = 128;
                  $b = 0;
               } else {
                  $r = 0;
                  $g = 255;
                  $b = 0;
               }
            }
         } elsif ( $ang == 0 ) {
            if ($in2) {
               $r = 0;
               $g = 128;
               $b = 128;
            } else {
               $r = 0;
               $g = 255;
               $b = 255;
            }
         } else {
            # this is TOP, so sli 4, 5 do not exist
            if ($rad2 > 1) {
               $fac1 = 256 / ($rad2 - 1);
               $f1 = ($fac1 * $hyp) / 2;
               $f1 = 255 if ($f1 >= 255);
               if ($sli == 0) {
                  # out of circle(s)
               } elsif ($sli == 1) {
                  # slice 1 = BG favouring B
                  # angle 60 - 0
                  $fac2 = 256 / 59;
                  $f2 = ($fac2 * $ang);
                  $f2 = 255 if ($f2 >= 255);
                  # want a sequence something like
                  # 0000 004477 0055aa 0077ee 2299ff 55aaff 88bbff ccddff ffffff
                  if ($hyp < $rad2) {
                     # color decline to BLACK
                     $r = 0;
                     $g = 255 - $f2;
                     $b = $f1; # 255 - $f1;
                  } else {
                     # color increase to WHITE
                     $r = 0;
                     $g = $f1;
                     $b = $f2;
                  }
               } elsif ($sli == 2 ) {
                  # slice 2 = BG favouring G
                  #$r = 0;
                  #$g = 255;
                  #$b = 102;
               } elsif ($sli == 3 ) {
                  # slice 3 = RG favouring G
                  #$r = 51;
                  #$g = 255;
                  #$b = 0;
               } elsif ($sli == 4 ) {
                  # slice 4 = RG favouring R
               } elsif ($sli == 5 ) {
                  # slice 5 = RB favouring R
               } elsif ($sli == 6 ) {
                  # slice 6 = RB favouring B
                  #$r = 51;
                  #$g = 0;
                  #$b = 255;
               }
            }
         }
      } else {
         # lower half = RED  (left = BLUE - right = GREEN)
         if ($ang == 0) {
            if ($in2) {
               $r = 128;
               $g = 0;
               $b = 0;
            } else {
               $r = 255;
               $g = 0;
               $b = 0;
            }
         } elsif ($r60) {
            if ($x < $rad) {
               # left BLUE
               if ($in2) {
                  $r = 128;
                  $g = 0;
                  $b = 102;
               } else {
                  $r = 255;
                  $g = 0;
                  $b = 255;
               }
            } else {
               # right GREEN
               if ($in2) {
                  $r = 128;
                  $g = 102;
                  $b = 0;
               } else {
                  $r = 255;
                  $g = 255;
                  $b = 0;
               }
            }
         } else {
            # this is BOTTOM, so sli 1, 2 do not exist
            if ($sli == 0) {
               # out of circle(s)
            } elsif ($sli == 1) {
               # slice 1 = BG favouring B
            } elsif ($sli == 2 ) {
               # slice 2 = BG favouring G
            } elsif ($sli == 3 ) {
               # slice 3 = RG favouring G
               $r = 102;
               $g = 255;
               $b = 0;
            } elsif ($sli == 4 ) {
               # slice 4 = RG favouring R
               $r = 255;
               $g = 102;
               $b = 0;
            } elsif ($sli == 5 ) {
               # slice 5 = RB favouring R
               $r = 255;
               $g = 0;
               $b = 102;
            } elsif ($sli == 6 ) {
               # slice 6 = RB favouring B
               $r = 102;
               $g = 0;
               $b = 255;
            }
         }
      }   # division TOP and BOTTOM
   } # if WITHIN circle
   $clr = uc(sprintf("#%2.2x%2.2x%2.2x", $r, $g, $b ));
   return $clr;
}
# ############################################################################
# sub out_color_wheel ( htmlfile, radius );
# Out put color wheel in HTML code, using TABLE, each cell another color
#
# see : javascipt/colorwheel.htm, using colorwheel.jpg
# Also sites like : http://www.ficml.org/jemimap/style/color/wheel.html
#
# [n] = slice
#          Turquoise
#         [1]    [2]
#     Blue          Green
#          \       /
#     [6]    Black    [3]
#      Mauve   |   Yellow
#        [5]   |   [4]
#             Red
#
# slice 1 = BG favouring B
# slice 2 = BG favouring G
# slice 3 = RG favouring G
# slice 4 = RG favouring R
# slice 5 = RB favouring R
# slice 6 = RB favouring B
# Each color starts 0, mounts to 255, then others mount until 255,255,255
# ############################################################################
sub out_color_wheel {
   my ($f, $rad) = @_;
   my ($i, $x, $y, $bg, $ang, $in1, $in2, $r60, $wh, $twid, $tdw, $clr, $sli, $hyp);
   my $diam = $rad * 2;
   my $cnt = 0;
   my $out = 0;
   my $fill = '';
   my $hdr = "Generate grid - $rad x $rad";
   $tdw = 14;
   $twid = $rad * $tdw;
   prt( "$hdr ...\n" );
   print $f "<hr>\n";
   print $f "<h1>$hdr</h1>\n";
   print $f "<table border=\"0\" cellpadding=\"0\" cellspacing=\"0\" summary=\"$hdr\">\n";
   $bg = '';
   $wh = ' align="center" valign="middle" width="14" height="10"';
   for( $y = 0; $y < $diam+1; $y++ ) {
      printf $f "<tr>\n";
      for ($x = 0; $x < $diam+1; $x++) {
         $r60 = does_60_deg_rad_pass( $x, $y, $rad );
         $ang = get_angle_degrees( $x, $y, $rad );
         $in1 = within_circle( $x, $y, $rad );
         $in2 = within_circle_rad( $x, $y, $rad, ($rad / 2));
         $hyp = get_hypotenuse( $x, $y, $rad );
         $fill = get_fill( $x, $y, $rad, $in1, $in2, $ang, $r60);
         $sli = get_slice( $x, $y, $rad, $in1, $in2, $ang, $r60);
         $clr = get_color( $x, $y, $rad, $in1, $in2, $ang, $r60);
         $bg = ' bgcolor="';
         $bg .= $clr;
         $bg .= '"';
         ###printf $f "<td$bg$wh>$fill</td>\n";
         #printf $f "<td$bg$wh>$sli</td>\n";
         printf $f "<td$bg$wh>$sli<br>$clr</td>\n";
      }
      printf $f "</tr>\n";
   }
   print $f "</table>\n";
}
# eof - colors3.pl

index -|- top

checked by tidy  Valid HTML 4.01 Transitional