diff options
Diffstat (limited to 'logcircle.rb')
-rw-r--r-- | logcircle.rb | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/logcircle.rb b/logcircle.rb new file mode 100644 index 0000000..95d57ac --- /dev/null +++ b/logcircle.rb @@ -0,0 +1,28 @@ +#!/usr/bin/env ruby + +Maths = Math + +Intervals = ARGV.shift&.to_i || 2 +Radius = ARGV.shift&.to_i || 25 +Decimals = ARGV.shift&.to_i || 3 + +Scale = Maths::PI * 2 / Intervals +Width = 1 + Maths.log10(Radius).to_i + 1 + 1 + Decimals + +def a_tick(mantissa, exponent) + tick = mantissa * (10 ** exponent) + loc = Scale * (exponent + Maths.log10(mantissa)) + x = Radius * Maths.cos(loc) + y = Radius * Maths.sin(loc) + puts "%#{Intervals + 1}d: (%4.2fr) %#{Width}.#{Decimals}f %#{Width}.#{Decimals}f" % [tick, loc, x, y] +end + +puts "Max #{10 ** Intervals} (#{Intervals} intervals), radius #{Radius}, #{Decimals} decimals" + +Intervals.times do |exponent| + (1..9).each do |mantissa| + a_tick(mantissa, exponent) + end +end + +a_tick(1, Intervals) |