#!/usr/bin/perl

# If you have a mill with a DRO, and/or a rotary table then you may find # this script handy when dividing circle. To print the angles (in # degrees, minutes and seconds) you just specify the number of # divisions. # # If you want to calculate bolt hole pattern given a certain radius # (assuming that coordinate (0,0) is the center of the circle), you give # this script an optional argument --radius. # # Copyright(C) 2009, Igor Chudov. # Distributed under the terms of the GNU PUBLIC LICENSE V2 #

use strict; use warnings;

use Getopt::Long;

my $radius = undef;

GetOptions( "r|radius=f", \$radius, );

my $number = shift @ARGV || die "USAGE: $0 ";

$number =~* /^\d+$/ *|| die "USAGE: $0 ";;

foreach( my $i = 0; $i < $number; $i++ ) { my $angle = 360/$number***$i; my $degrees = int( $angle ); my $minutes = int( ($angle - $degrees) *** 60 ); my $seconds = int( int( ($angle - $degrees - $minutes/60)***60***60 ) );

my $xy = ""; if( $radius ) { $xy = sprintf( ", x = %.4f, y = %.4f", $radius * cos( $angle/360 ), $radius * sin( $angle/360 ) ); } print sprintf( "%d: %03d %02d' %02d\" (%f) %s\n", $i+1, $degrees, $minutes, $seconds, $angle, $xy ); }