1
0
mirror of git://projects.qi-hardware.com/ben-wpan.git synced 2024-07-05 05:29:30 +03:00
ben-wpan/atusd/cam/pcb.pl
2010-09-12 12:43:52 -03:00

86 lines
1.2 KiB
Raku
Executable File

#!/usr/bin/perl
$d = 2.54/1000*12;
$r = $d/2+0.25;
sub orig
{
$x0 = $_[0];
$y0 = $_[1];
}
sub mil
{
return $_[0]/1000*25.4;
}
sub same
{
return @_;
}
sub rot
{
return (-$x, -$y);
}
sub cut
{
local (*fn) = $_[0];
shift @_;
if (defined $x) {
if ($x == $_[0]+$x0 && $y == $_[1]+$y0) {
shift @_;
shift @_;
} else {
print "\n";
}
}
while (@_) {
$x = shift @_;
$y = shift @_;
($x, $y) = &fn($x, $y);
$x += $x0;
$y += $y0;
print "$x $y $z\n";
}
}
sub one
{
local ($fn) = @_;
&cut($fn,
&mil( 0)-$r, &mil( 0)-$r,
&mil( 0)-$r, &mil(1010)+$r,
&mil(1400)+$r, &mil(1010)+$r,
&mil(1400)+$r, &mil( 640)-$r,
&mil( 440)+$r, &mil( 640)-$r,
&mil( 440)+$r, &mil( 390)-$r,
&mil( 410)+$r, &mil( 360)-$r,
&mil( 410)+$r, &mil( 310)+$r,
&mil( 440)+$r, &mil( 310)+$r,
&mil( 440)+$r, &mil( 250)-$r,
&mil( 380)+$r, &mil( 190)-$r,
&mil( 380)+$r, &mil( 0)-$r,
&mil( 0)-$r, &mil( 0)-$r);
}
$z = -0.8;
$col = 1;
$row = 1;
# x: corner offset, compensation for rotation, array position
# y: corner offet
&orig(5+53.5*$col, 5+33*$row)
&one(*same);
&orig(5+53.5*$col+15+&mil(1400), 5+33*$row+&mil(1010));
&one(*rot);