#!/usr/bin/perl
use strict;
use warnings;
use GD;
$| = 1;

# Programmkonstante
use constant SIZE       => 200;  # Bildgroesse
use constant RAD        =>  99;  # Radius = SIZE/2 - 1
use constant MARKER     =>   6;  # Laenge Teilstrich

my $hour   = RAD * 0.60;         # Laenge Stundenzeiger
my $minute = RAD * 0.80;         # Laenge Minutenzeiger

# Umrechnung Grad in Bogenmass
use constant DEG_TO_RAD => 0.0174532925199433;

my $image = new GD::Image (SIZE, SIZE);

my $black = $image->colorAllocate (255, 255, 255);
my $red   = $image->colorAllocate (255, 0, 0);
my $green = $image->colorAllocate (0, 255, 0);
my $blue  = $image->colorAllocate (0, 0, 255);

# Zeigerstellung (Winkel)
my ($sec, $min, $std) = localtime(time);
my $hour_angle   = ($std + ($min/60) - 3)*30*DEG_TO_RAD;
my $minute_angle = ($min + ($sec/60) - 15)*6* DEG_TO_RAD;

# Ziffernblatt
$image->arc(RAD, RAD, SIZE, SIZE, 0, 360, $blue);
for (my $loop = 0; $loop < 360; $loop = $loop + 30)
  {
  my $degrees = $loop*DEG_TO_RAD;
  $image->line (RAD + ((RAD - MARKER) * cos ($degrees)),
                RAD + ((RAD - MARKER) * sin ($degrees)),
                RAD + (RAD * cos ($degrees)),
                RAD + (RAD * sin ($degrees)),
                $red);
  }
# Stundenzeiger
$image->line (RAD, RAD,
              RAD + ($hour * cos ($hour_angle)),
              RAD + ($hour * sin ($hour_angle)),
              $green);
# Minutenzeiger
  $image->line (RAD, RAD,
                RAD + ($minute * cos ($minute_angle)),
                RAD + ($minute * sin ($minute_angle)),
                $green);
# Mittelpunkt
$image->arc (RAD, RAD, 6, 6, 0, 360, $red);
$image->fill (RAD + 1, RAD + 1, $red);

# Ausgabe
print "Pragma: no-cache\n";
print "Expires: Fri, 01 Jan 2010 01:00:00 GMT\n";
print "Content-type: image/gif\n\n";
binmode STDOUT;
print $image->gif;