Skip to content

Commit 4290632

Browse files
committed
tidy up
1 parent fbbd75b commit 4290632

File tree

4 files changed

+44
-37
lines changed

4 files changed

+44
-37
lines changed

processing_app/topics/lsystems/library/grammar/grammar.rb

+3-1
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
# frozen_string_literal: true
2+
13
############################
24
# Simple lsystem grammar
35
############################
@@ -10,7 +12,7 @@ def initialize(axiom, rules)
1012

1113
def expand(production, iterations, &block)
1214
production.each_char do |token|
13-
if rules.key?(token) && iterations > 0
15+
if rules.key?(token) && iterations.positive?
1416
expand(rules[token], iterations - 1, &block)
1517
else
1618
yield token

processing_app/topics/lsystems/library/snowflake/snowflake.rb

+13-12
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,14 @@
1+
# Using abbreviated lsystem syntax NB: 9 = 10 repeats and 3 = 4 repeats
12
class PenroseSnowflake
23
include Processing::Proxy
34

45
attr_accessor :axiom, :grammar, :start_length, :theta, :production,
56
:draw_length, :pos
6-
DELTA = PI / 10
7+
DELTA = PI / 5 # 36 degrees
78

89
def initialize(pos)
9-
@axiom = 'F3-F3-F3-F3-F'
10-
@grammar = Grammar.new(axiom, 'F' => 'F3-F3-F45-F++F3-F')
10+
@axiom = 'F2-F2-F2-F2-F'
11+
@grammar = Grammar.new(axiom, 'F' => 'F2-F2-F5-F+F2-F')
1112
@start_length = 450.0
1213
@theta = 0
1314
@pos = pos
@@ -20,30 +21,30 @@ def initialize(pos)
2021
##############################################################################
2122

2223
def render
23-
repeats = 1
24+
repeat = 1
2425
production.each do |element|
2526
case element
2627
when 'F'
2728
new_pos = pos + Vec2D.from_angle(theta) * draw_length
2829
line(pos.x, pos.y, new_pos.x, new_pos.y)
2930
@pos = new_pos
30-
repeats = 1
31+
repeat = 1
3132
when '+'
32-
@theta += DELTA * repeats
33-
repeats = 1
33+
@theta += DELTA * repeat
34+
repeat = 1
3435
when '-'
35-
@theta -= DELTA * repeats
36-
repeats = 1
37-
when '3', '4', '5'
38-
repeats += element.to_i
36+
@theta -= DELTA * repeat
37+
repeat = 1
38+
when '2', '5'
39+
repeat = element.to_i
3940
else
4041
puts "Character '#{element}' is not in grammar"
4142
end
4243
end
4344
end
4445

4546
##########################################
46-
# adjust draw length with number of repeats
47+
# adjust draw length with number of repeat
4748
# uses grammar to set production string
4849
# see 'grammar.rb'
4950
##########################################

processing_app/topics/lsystems/peano.rb

+3-1
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
# frozen_string_literal: true
2+
13
########################################################
24
# A Peano fractal implemented using a
35
# Lindenmayer System in JRubyArt by Martin Prout
@@ -80,7 +82,7 @@ def render(points)
8082
end
8183

8284
def renderer
83-
@renderer ||= GfxRender.new(self.g)
85+
@renderer ||= GfxRender.new(g)
8486
end
8587

8688
def settings

processing_app/topics/lsystems/snake_kolam.rb

+25-23
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,31 @@
1+
# frozen_string_literal: true
2+
13
#######################################################
24
# Lindenmayer System in ruby-procesDegLut.sing by Martin Prout
35
# snake_kolam.rb uDegLut.sing l-systems
46
#######################################################
57
load_library :grammar
68

9+
attr_reader :kolam
10+
11+
def setup
12+
sketch_title 'Snake Kolam'
13+
@kolam = SnakeKolam.new width / 8, height * 0.8
14+
kolam.create_grammar 3 # create grammar from rules
15+
no_loop
16+
end
17+
18+
def draw
19+
background 0
20+
stroke_weight 3
21+
stroke 200
22+
kolam.render
23+
end
24+
25+
def settings
26+
size 500, 500
27+
end
28+
729
# class SnakeKolam
830
class SnakeKolam
931
include Processing::Proxy
@@ -27,10 +49,11 @@ def setup_grammar
2749
@axiom = 'FX+F+FX+F'
2850
@grammar = Grammar.new(
2951
axiom,
30-
'X' => 'X-F-F+FX+F+FX-F-F+FX')
52+
'X' => 'X-F-F+FX+F+FX-F-F+FX'
53+
)
3154
end
3255

33-
def render # NB not using affine transforms here
56+
def render # NB not using affine transforms here
3457
turtle = [xpos, ypos, 0.0]
3558
production.each do |element|
3659
case element
@@ -72,24 +95,3 @@ def draw_line(turtle, length)
7295
[new_xpos, new_ypos, turtle[ANGLE]]
7396
end
7497
end
75-
76-
attr_reader :kolam
77-
78-
def setup
79-
sketch_title 'Snake Kolam'
80-
@kolam = SnakeKolam.new width / 8, height * 0.8
81-
kolam.create_grammar 3 # create grammar from rules
82-
no_loop
83-
end
84-
85-
def draw
86-
background 0
87-
stroke_weight 3
88-
stroke 200
89-
kolam.render
90-
end
91-
92-
def settings
93-
size 500, 500
94-
end
95-

0 commit comments

Comments
 (0)