#!/usr/bin/env perl

use strict;
use warnings;
use Math::Trig qw(pi);

my ( @values, @distances );

# Generate C scale values and distances according to what is present on
# a Pickett Model N 3P-ES pocket slide rule, same doubling of resolution
# as in gena.
my $pad_by = 2;

genvd( 1, 3,  50 );
genvd( 3, 5,  20 );
genvd( 5, 10, 10 );

push @values,    10;
push @distances, log $values[-1];

# pi is indicated on the scale
push @values,    pi;
push @distances, log $values[-1];

# TODO "R" on scale at a hair above 5.7 is what?

@values    = sort { $a <=> $b } @values;
@distances = sort { $a <=> $b } @distances;

use Data::Dumper::Concise;
print Dumper { value => \@values, dist => \@distances };

exit 0;

sub genvd {
  my ( $min, $max, $precision ) = @_;

  my $ticks = $precision * ( $max - $min ) * $pad_by;
  my $slope = ( $max - $min ) / $ticks;
  for my $v ( 0 .. $ticks - 1 ) {
    push @values,    $slope * $v + $min;
    push @distances, log $values[-1];
  }
}
