fractal 0.1.7 → 0.1.9

Sign up to get free protection for your applications and to get access to all the features.
Files changed (4) hide show
  1. checksums.yaml +4 -4
  2. data/bin/fractal +26 -5
  3. data/lib/fractal.rb +5 -5
  4. metadata +2 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 9ca753d7ca93789497b10c740760968eabe70ed3
4
- data.tar.gz: 6111c8006945b1e67a96b4a8e7322eb275417ca6
3
+ metadata.gz: d6e9e8b59a32d9c1c60cc4491b890caf44e70f70
4
+ data.tar.gz: 7279d76d297eb703f576063289ea06dc7e8ff92d
5
5
  SHA512:
6
- metadata.gz: 4a5e8dfa8df498cdb61aa878f17a53e0f4560bbf6875b17cdc1d00838554e933b8d967ba3a496d7b467bb64210b75f3dd4f2d33c7408e287bc606d4f7dc18981
7
- data.tar.gz: 6b8f3ea49144ef2c2173b4f981a5a2867b8d151bfbc394211c299be36e149c61ec95d7c6c9275de2cb6f287744d27d79c8b39512fb597f687d8c5ea022793cec
6
+ metadata.gz: 3a0aa10ad51c5cf18933c07d0d710dbae8cd21a20bd0b08d74829bef48644797ba315997b83bbf99910a147c2143e3e8f16dd2abe807d7df150f1fdad2511b77
7
+ data.tar.gz: 9238c025bd4cdeac06d21b1498ddc7677f399f6fc7b7949de04bef0903f93ee6865aa9fd54059d08de53c5e94b854bda506e1ee0c2531b1ff896030662dea47d
@@ -1,7 +1,8 @@
1
1
  #!/usr/bin/env ruby
2
2
  require 'fractal'
3
3
  args = Hash[ARGV.join(' ').scan(/--?([^=\s]+)(?:=(\S+))?/)]
4
- if args.key?('help')
4
+
5
+ if args.key? 'help'
5
6
  help = <<EOF
6
7
 
7
8
  `fractal` command-line arguments:
@@ -14,8 +15,12 @@ if args.key?('help')
14
15
  the image in colour or monochromatically,
15
16
  e.g. `--color=mono` or `--color=multi`
16
17
  which is the same as `--color=rainbow`
18
+ - `-o=`, (*optional*) is the location in which to save
19
+ your image, the `-o=` part is not required if you
20
+ just write the file location with a `.png` at the end.
17
21
  - `--def=`, (optional), the 'definition' of the image,
18
- the amount of calculations performed. e.g. `--def=255`
22
+ the amount of calculations performed or iterations of
23
+ the formula. e.g. `--def=100` for 100 iterations.
19
24
  - `--scale=`, (optional), the zoom level of the image,
20
25
  a higher value corresponds to a taller imaginary number line
21
26
  thus a smaller fractal is seen. e.g. `--scale=2.25`
@@ -29,8 +34,9 @@ if args.key?('help')
29
34
  put at any position in your list of arguments.
30
35
  e.g. `mandelbrot` or `julia`
31
36
 
32
- An example command is:
33
- `fractal -w=400 -h=320 mandelbrot --scale=2 --def=100`
37
+ Example commands:
38
+ `fractal ~/my_fractal.png -w=500 -h=310 --scale=2.92 --def=100 mandelbrot --color=mono`
39
+ `fractal julia -w=600 -h=600 --color=multi --complex=-0.8+0.156i --def=100 --scale=1.5 -o=../my_fractal`
34
40
 
35
41
  EOF
36
42
  puts help
@@ -40,14 +46,24 @@ end
40
46
  allowedFractals = ['mandelbrot', 'julia']
41
47
  fractalType = String.new
42
48
 
49
+ o = String.new
43
50
  ARGV.each do |arg|
44
51
  allowedFractals.each do |option|
45
52
  fractalType = arg.downcase if arg.downcase == option
46
53
  end
54
+
55
+ o = arg if arg[arg.length - 4, 4].downcase == '.png'
56
+ end
57
+
58
+ o = args['o'] if args.key? 'o'
59
+ if o.include? '~'
60
+ o.delete! '~'
61
+ o = "#{File.expand_path('~')}/#{o}"
47
62
  end
48
63
 
64
+
49
65
  if fractalType.empty?
50
- puts "Error: Please provide a fractal type."
66
+ puts "Error: Please provide a fractal type.\nType `fractal --help` for help."
51
67
  exit 1
52
68
  end
53
69
 
@@ -95,4 +111,9 @@ definition, scale = 255, 2.0
95
111
  definition = args['def'].to_i if args.key? 'def' # --def=100
96
112
  scale = args['scale'].to_f if args.key? 'scale' # --scale=1.5
97
113
 
114
+ unless o.empty?
115
+ fractal.draw(definition, scale).save(o)
116
+ exit 0
117
+ end
118
+
98
119
  fractal.draw(definition, scale).save("#{fractalType}-fractal.png")
@@ -29,7 +29,7 @@ module Fractals
29
29
  end
30
30
 
31
31
  def draw definition=255, scale=2.0
32
- scaleWidth = scale.to_f
32
+ scaleWidth = scale
33
33
  scaleHeight = scale.to_f * (@height.to_f / @width.to_f)
34
34
  definition = definition.to_f
35
35
  (0..@width - 1).each do |x|
@@ -67,15 +67,15 @@ module Fractals
67
67
  end
68
68
  end
69
69
 
70
- class Julia < Mandelbrot
70
+ class Julia < Mandelbrot # Since the Julia set only has a slightly modified calculation
71
71
  attr_accessor :real
72
72
  attr_accessor :complex
73
73
 
74
- def calculate a, b, c_arr
74
+ def calculate a, b, c_arr # c_arr is irrelevant as c is now constant, however the draw() still supplies it and I don't want to rewrite draw when it already exists.
75
75
  left = a * a - b * b
76
76
  right = 2 * a * b
77
- a = left + @real
78
- b = right + @complex
77
+ a = left + @real # z^2 + c
78
+ b = right + @complex # but here the c is constant, composed of a real and imaginary part in form of a±bi where a and b have been separated and labeled here as real and complex
79
79
  return [a, b]
80
80
  end
81
81
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fractal
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.7
4
+ version: 0.1.9
5
5
  platform: ruby
6
6
  authors:
7
7
  - Demonstrandum
@@ -59,7 +59,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
59
59
  version: '0'
60
60
  requirements: []
61
61
  rubyforge_project:
62
- rubygems_version: 2.6.12
62
+ rubygems_version: 2.6.11
63
63
  signing_key:
64
64
  specification_version: 4
65
65
  summary: Draws fractal PNG images.