#!/usr/bin/perl
$I = 50;	# inner radius (50 cm)
$O = 80;	# outer radius (80 cm)
#$Y = 64;	# image heights (pixels)
#$X = 256;	# image width (pixels)


sub ang
{
	local ($r) = @_;

# (O-I)/Y = r*arc(a)
# arc 
	return ($O-$I)/$Y/$r;
}


if ($ARGV[0] eq "-r") {
	shift @ARGV;
	$rect = 1;
}

while (<>) {
	chop;
	if (/#define\s+\S+_width\s+(\d+)/) {
		$X = $1;
		next;
	}
	if (/#define\s+\S+_height\s+(\d+)/) {
		$Y = $1;
		next;
	}
	next unless /\s*0x/;
	s/^\s*//;
	s/(,|};)$//;
	push(@p, split /,/);
}

for ($x = 0; $x != $X; $x++) {
	for ($y = 0; $y != $Y; $y++) {
		$i = $x+$y*$X;
		$p = ((hex $p[$i >> 3]) >> ($i & 7)) & 1;
		next unless $p;
		if ($rect) {
			print "$x ", $Y-$y-1, "\n";
		} else {
			$r = ($Y-$y-1)/$Y*($O-$I)+$I;
			$a = &ang($O)*($x-$X/2);
			print $r*sin($a), " ", $r*cos($a), "\n";
		}
	}
}
