aboutsummaryrefslogtreecommitdiff
path: root/logcircle.rb
diff options
context:
space:
mode:
Diffstat (limited to 'logcircle.rb')
-rw-r--r--logcircle.rb28
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)