cf3 0.0.2 → 0.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: abf03ff4ab58c68a6bd23d96f7d63b8470e0dc0d
4
- data.tar.gz: 91aefce6f4a52cc9a045876bb90a2762b66b7fb2
3
+ metadata.gz: 8f8af1424885f56dc32e59cbde844fceb924a4f9
4
+ data.tar.gz: 69c5707acfd748da7428921c2da6a2e085dbbffc
5
5
  SHA512:
6
- metadata.gz: dd7e9fff158ddf4928772873aa5fa703693dfdee81873330c7dc1c05bfe4ca70a219d85866be5c0fdddbd6f1cd2ba2a1009ffdb75c842ed326a27441485cfee7
7
- data.tar.gz: e80cab9e1fca1a36863f3722651ebb913f0b1c5fabd511a4f33a63791e46b672bbd29bf18e1c8e077ccb3b492336942c08a9810ded36991e909f8cab5b7a7ecd
6
+ metadata.gz: d4ffc79ae3dbe15ec0df3b529d8e2fb5df121d1074b681a86d2f950754d09d5d1860fb464feb1d684c5308be499396efd3ffd069700d19f53b8db742431d214d
7
+ data.tar.gz: 5eca072d46f2571e3524c038c13a1c440d832082c681ccb129baf8d74f093f2160a8222184b6f9a1948d6e3d2e8c11aaef02dc6526bf9faf5ea95ef8875b0419
data/CHANGELOG CHANGED
@@ -1,3 +1,8 @@
1
+ v0.0.3 Change to use HSB 360 1 1 1 (ie just like cfdg)
2
+ * rotation of primitives like shapes now in degrees (vs radians)
3
+ * examples updated, includes a colorful alhambra design
4
+
5
+
1
6
  v0.0.2 Second Gem Release
2
7
  * extract samples to cf3work/samples, was cf3samples/samples
3
8
  * gives me an opportunity to create a lock for bundler?
data/README.md CHANGED
@@ -2,12 +2,12 @@
2
2
 
3
3
  **context-free DSL for ruby-1.9 and CF3 syntax**
4
4
 
5
- Very much derived from [context-free.rb][] by Jeremy Ashkenas this version is updated to be more in line with CF3 and ruby 1.9 syntax. Tested as working with last rubygems release of ruby-processing (v 1.0.11) as well as the current [version][] (v 2.1.0).
5
+ Very much derived from [context-free.rb][] by Jeremy Ashkenas this version is updated to be more in line with CF3 and ruby 1.9 syntax. Tested as working with last rubygems release of ruby-processing (v 1.0.11) as well as the current [version][] (v 2.1.4).
6
6
  [context-free.rb]:https://github.com/jashkenas/context_free/
7
7
  [version]:https://github.com/monkstone/ruby-processing/releases/
8
8
  ## Installation
9
9
 
10
- To use this library you need install jruby (preferably jruby-1.7.4+), you will also need [ruby-processing][] to be installed (minimum version 1.0.11, preferred version 2.1.0). There are three ways you can install this library:-
10
+ To use this library you need install jruby (preferably jruby-1.7.4+), you will also need [ruby-processing][] to be installed (minimum version 1.0.11, preferred version 2.1.4). There are three ways you can install this library:-
11
11
 
12
12
  ***rake test and gem install***
13
13
 
@@ -16,7 +16,7 @@ Either clone this repository, or download a [snapshot][].
16
16
  ```bash
17
17
  cd cf3ruby
18
18
  jruby -S rake test # builds and tests gem (mouse click on frame for test image to show)
19
- jruby -S gem install cf3-0.0.1.gem # may need sudo access
19
+ jruby -S gem install cf3-0.0.3.gem # may need sudo access
20
20
  ```
21
21
 
22
22
  ***local bundle install***
@@ -25,25 +25,28 @@ Either clone this repository, or download a [snapshot].
25
25
 
26
26
  ```bash
27
27
  cd cf3
28
- bundle install
28
+ bundle install # using regular installed bundler may need to set GEM_PATH
29
+ jruby -S bundle install # if you installed bundler with jruby
29
30
  ```
30
31
 
31
32
  ***gem install from rubygems***
32
33
  ```bash
33
- gem install cf3
34
+ gem install cf3 # regular install may need to set GEM_PATH env variable
35
+ jruby -S gem install cf3 # jruby install
34
36
  ```
35
37
  it couldn't be easier could it?
36
38
 
37
39
  ## Usage
38
40
 
39
- Extract the included samples to your home directory
41
+ Extract the included samples to your home directory (HOME/cf3work/samples)
40
42
  ```bash
41
- jruby -S cf3samples
43
+ cf3samples # should work
44
+ jruby -S cf3samples # else if installed with jruby this should also work
42
45
  ```
43
46
 
44
- As for running ruby-processing, it requires the external jruby flag
47
+ As for running ruby-processing, ( _it requires the external jruby flag prior to ruby-processing-2.1.2_ )
45
48
  ```bash
46
- rp5 run --jruby city.rb # this is why you should install both ruby-processing and cf3ruby using jruby
49
+ rp5 run city.rb # providing you installed both ruby-processing and cf3ruby using jruby
47
50
 
48
51
  ```
49
52
  You should read the [ruby-processing_documentation][] on using rubygems.
data/lib/cf3.rb CHANGED
@@ -14,7 +14,7 @@ module Processing
14
14
  HSB_ORDER = {hue: 0, saturation: 1, brightness: 2, alpha: 3}
15
15
  TRIANGLE_TOP = -1 / Math.sqrt(3)
16
16
  TRIANGLE_BOTTOM = Math.sqrt(3) / 6
17
-
17
+ RADIANS = (Math::PI / 180.0)
18
18
  # Define a context-free system. Use this method to create a ContextFree
19
19
  # object. Call render() on it to make it draw.
20
20
  def self.define(&block)
@@ -96,7 +96,7 @@ module Processing
96
96
  when :x, :y
97
97
  old_ops[key] = value * old_ops[:size]
98
98
  when :rotation
99
- old_ops[key] = value * (Math::PI / 180.0)
99
+ old_ops[key] = value * RADIANS
100
100
  when :hue, :saturation, :brightness, :alpha
101
101
  adjusted = old_ops[:color].dup
102
102
  adjusted[HSB_ORDER[key]] *= value
@@ -170,7 +170,7 @@ module Processing
170
170
  rotation: 0, flip: false,
171
171
  size: 20, width: 20, height: 20,
172
172
  start_x: width/2, start_y: height/2,
173
- color: [0.5, 0.5, 0.5, 1],
173
+ color: [180, 0.5, 0.5, 1],
174
174
  stop_size: 1.5}
175
175
  @values.merge!(starting_values)
176
176
  @finished = false
@@ -178,7 +178,7 @@ module Processing
178
178
  @app.rect_mode CENTER
179
179
  @app.ellipse_mode CENTER
180
180
  @app.no_stroke
181
- @app.color_mode HSB, 1.0
181
+ @app.color_mode HSB, 360, 1.0, 1.0, 1.0 # match cfdg
182
182
  @app.translate @values[:start_x], @values[:start_y]
183
183
  self.send(rule_name, {})
184
184
  end
@@ -204,32 +204,35 @@ module Processing
204
204
 
205
205
  # Square, circle, and ellipse are the primitive drawing
206
206
  # methods, but hopefully triangles will be added soon.
207
- def square(some_options=nil)
207
+ def square(some_options={})
208
208
  size, options = *get_shape_values(some_options)
209
+ rot = options[:rotation]
210
+ @app.rotate(rot) if rot
209
211
  @app.rect(0, 0, size, size)
212
+ @app.rotate(-rot) if rot
210
213
  end
211
214
 
212
215
 
213
- def circle(some_options=nil)
216
+ def circle(some_options={})
214
217
  size, options = *get_shape_values(some_options)
215
218
  @app.ellipse(0, 0, size, size)
216
219
  end
217
220
 
218
- def triangle(some_options=nil)
219
- rot = some_options[:rotation]
220
- @app.rotate(rot) if rot
221
+ def triangle(some_options={})
221
222
  size, options = *get_shape_values(some_options)
223
+ rot = options[:rotation]
224
+ @app.rotate(rot) if rot
222
225
  @app.triangle(0, TRIANGLE_TOP * size, 0.5 * size, TRIANGLE_BOTTOM * size, -0.5 * size, TRIANGLE_BOTTOM * size)
223
226
  @app.rotate(-rot) if rot
224
227
  end
225
228
 
226
229
 
227
230
  def ellipse(some_options={})
228
- rot = some_options[:rotation]
229
- @app.rotate(rot) if rot
230
231
  size, options = *get_shape_values(some_options)
231
232
  width = options[:width] || options[:size]
232
233
  height = options[:height] || options[:size]
234
+ rot = some_options[:rotation]
235
+ @app.rotate(rot) if rot
233
236
  @app.oval(options[:x] || 0, options[:y] || 0, width, height)
234
237
  @app.rotate(-rot) if rot
235
238
  end
@@ -1,3 +1,3 @@
1
1
  module Cf3
2
- VERSION = "0.0.2"
2
+ VERSION = "0.0.3"
3
3
  end
@@ -47,21 +47,21 @@ def setup_the_sunstar
47
47
 
48
48
  shape :sunstar do
49
49
  split do
50
- sun brightness: 0.8
50
+ sun brightness: 0.9, alpha: 1.0
51
51
  rewind
52
- star brightness: 0.8, alpha: 0.8
52
+ star brightness: 0.9, alpha: 0.8
53
53
  rewind
54
54
  end
55
55
  end
56
56
 
57
57
  shape :dart do
58
- flat size: 1, color: [0.18, 0.6, 0.6]
59
- flat size: 1, color: [0.18, 1.0, 1.0], flip: true
58
+ flat size: 1, hue: 65, sat: 0.9, brightness: 0.9
59
+ flat size: 1, hue: 65, sat: 1.0, brightness: 1.0, flip: true
60
60
  end
61
61
 
62
62
  shape :kite do
63
- sharp size: 1, color: [0, 0.6, 0.6]
64
- sharp size: 1, color: [0, 1.0, 1.0], rotation: 180, flip: true
63
+ sharp size: 1, hue: 0, sat: 0.9, brightness: 0.9
64
+ sharp size: 1, hue: 0, sat: 1.0, brightness: 1.0, rotation: 180, flip: true
65
65
  end
66
66
 
67
67
  shape :star do
@@ -85,9 +85,8 @@ def setup_the_sunstar
85
85
  end
86
86
 
87
87
  def setup
88
- size 800, 820
89
- background 150, 20, 0
90
- smooth
88
+ size 800, 800
89
+ background 255
91
90
  setup_the_sunstar
92
91
  draw_it
93
92
  end
@@ -1,5 +1,12 @@
1
1
  require 'cf3'
2
2
 
3
+ GOLD = [33, 0.967, 0.592, 1]
4
+ BLACK = [0, 0.909, 0.129, 1]
5
+ GREEN = [148, 0.696, 0.271, 1]
6
+ BLUE = [225, 0.777, 0.475, 1]
7
+ RED = [17, 0.983, 0.231, 1]
8
+ COLORS = [GOLD, BLACK, GREEN, BLUE, RED]
9
+
3
10
  def setup_the_tiles
4
11
  @tiles= ContextFree.define do
5
12
  ############ Begin defining custom terminal, an wavy_triangle triangle
@@ -56,9 +63,9 @@ def setup_the_tiles
56
63
 
57
64
  ########### End definition of custom terminal 'wavy_triangle' shape
58
65
  shape :tiles do
59
- 10.times do |i|
60
- 10.times do |j|
61
- wavy_triangle size: 1, x: (i + 0.5 * j%2), y: j * 0.9
66
+ 20.times do |i|
67
+ 20.times do |j|
68
+ wavy_triangle size: 1, x: (i + 0.5 * j%2), y: j * 0.9, color: COLORS[i % 5]
62
69
  end
63
70
  end
64
71
  end
@@ -66,7 +73,7 @@ def setup_the_tiles
66
73
  end
67
74
 
68
75
  def setup
69
- size 400, 400
76
+ size 1024, 720
70
77
  background 255
71
78
  smooth
72
79
  setup_the_tiles
@@ -74,6 +81,6 @@ def setup
74
81
  end
75
82
 
76
83
  def draw_it
77
- @tiles.render :tiles, start_x: -50, start_y: 20,
78
- size: height/6, color: [0, 0.8, 0.8, 1]
84
+ @tiles.render :tiles, start_x: -200, start_y: 0,
85
+ size: height/6
79
86
  end
@@ -0,0 +1,98 @@
1
+ require 'cf3'
2
+ #############
3
+ # to be fixed
4
+ #############
5
+
6
+ GOLD = [33, 0.967, 0.592, 1]
7
+ BLACK = [0, 0.909, 0.129, 1]
8
+ GREEN = [148, 0.696, 0.271, 1]
9
+ BLUE = [225, 0.777, 0.475, 1]
10
+ RED = [17, 0.983, 0.231, 1]
11
+ COLORS = [GOLD, BLACK, GREEN, BLUE, RED]
12
+
13
+ def setup_the_tiles
14
+ @tiles= ContextFree.define do
15
+ ############ Begin defining custom terminal, an wavy_triangle triangle
16
+ class << self
17
+ define_method(:wavy_triangle) do |some_options| # wavy_triangle triangle
18
+ size, options = *self.get_shape_values(some_options)
19
+ rot = options[:rotation]
20
+ disp = 0.32 # could introduce a rule option?
21
+ x0 = options[:x]
22
+ y0 = options[:y]
23
+ pts = Array.new(12)
24
+ pts[0] = PVector.new(x0, y0 - size/Math.sqrt(3)) # A
25
+ pts[1] = PVector.new(x0 - 0.5 * size, y0 + (Math.sqrt(3)*size)/6) # B
26
+ pts[2] = PVector.new(x0 + 0.5 * size, y0 + (Math.sqrt(3)*size)/6) # C
27
+ pts[3] = get_mid_point(pts[0], pts[1]) # Ab
28
+ pts[4] = get_mid_point(pts[1], pts[2]) # Bc
29
+ pts[5] = get_mid_point(pts[0], pts[2]) # Ca
30
+ pts[6] = get_mid_point(pts[0], pts[3]) # Aba
31
+ adjust_bezier(pts[6], PI/3, disp*size) # Aba
32
+ pts[7] = get_mid_point(pts[3], pts[1]) # Abb
33
+ adjust_bezier(pts[7], PI/3, -disp*size) # Abb
34
+ pts[8] = get_mid_point(pts[1], pts[4])
35
+ adjust_bezier(pts[8], PI/2, -disp*size)
36
+ pts[9] = get_mid_point(pts[4], pts[2])
37
+ adjust_bezier(pts[9], PI/2, disp*size)
38
+ pts[10] = get_mid_point(pts[2], pts[5])
39
+ adjust_bezier(pts[10], -PI/3, -disp*size)
40
+ pts[11] = get_mid_point(pts[5], pts[0])
41
+ adjust_bezier(pts[11], -PI/3, disp*size)
42
+ rotate(rot) if rot
43
+ begin_shape
44
+ vertex(pts[0].x, pts[0].y)
45
+ bezier_vertex(pts[0].x, pts[0].y, pts[6].x, pts[6].y, pts[3].x, pts[3].y)
46
+ bezier_vertex(pts[3].x, pts[3].y, pts[7].x, pts[7].y, pts[1].x, pts[1].y)
47
+ bezier_vertex(pts[1].x, pts[1].y, pts[8].x, pts[8].y, pts[4].x, pts[4].y)
48
+ bezier_vertex(pts[4].x, pts[4].y, pts[9].x, pts[9].y, pts[2].x, pts[2].y)
49
+ bezier_vertex(pts[2].x, pts[2].y, pts[10].x, pts[10].y, pts[5].x, pts[5].y)
50
+ bezier_vertex(pts[5].x, pts[5].y, pts[11].x, pts[11].y, pts[0].x, pts[0].y)
51
+ end_shape(CLOSE)
52
+ rotate(-rot) if rot
53
+ end
54
+
55
+ private
56
+ def adjust_bezier(base, theta, disp)
57
+ base.add(PVector.new(Math.cos(theta)*disp, Math.sin(theta)*disp))
58
+ end
59
+
60
+ def get_mid_point(a, b)
61
+ mid = PVector.add(a, b)
62
+ mid.div(2)
63
+ return mid
64
+ end
65
+ end
66
+
67
+ ########### End definition of custom terminal 'wavy_triangle' shape
68
+ shape :tiles do
69
+ 20.times do |i|
70
+ 20.times do |j|
71
+ split do
72
+ wavy_triangle size: 1, x: (i + 0.5 * j%2), y: j * 0.9, color: COLORS[i % 5]
73
+ rewind
74
+ star size: 0.4, x: (2.5 * i - 1.25 * j%2) +0.4, y: (j * 2.5 * 0.9) + 1.25, color: COLORS[j % 5]
75
+ end
76
+ end
77
+ end
78
+ end
79
+
80
+ shape :star do
81
+ triangle
82
+ triangle rotation: 180
83
+ end
84
+ end
85
+ end
86
+
87
+ def setup
88
+ size 1024, 720
89
+ background 255
90
+ smooth
91
+ setup_the_tiles
92
+ draw_it
93
+ end
94
+
95
+ def draw_it
96
+ @tiles.render :tiles, start_x: -200, start_y: 0,
97
+ size: height/6
98
+ end
@@ -18,8 +18,8 @@ def setup_the_creature
18
18
  end
19
19
 
20
20
  shape :legs do
21
- circle hue: 0.15, saturation: 0.5, brightness: 1.0, color: [0.95, 0.15]
22
- legs y: 0.1, size: 0.965
21
+ circle hue: 54, saturation: 0.5, brightness: 1.0
22
+ legs y: 0.1, size: 0.96
23
23
  end
24
24
 
25
25
  shape :legs, 0.01 do
@@ -38,10 +38,6 @@ def setup
38
38
  size 600, 600
39
39
  setup_the_creature
40
40
  no_stroke
41
- color_mode HSB, 1.0
42
- smooth
43
- draw_it
44
- # save_frame("creature.png")
45
41
  end
46
42
 
47
43
  def draw
@@ -49,9 +45,9 @@ def draw
49
45
  end
50
46
 
51
47
  def draw_it
52
- background -1.0
48
+ background 0
53
49
  @creature.render :start, size: height/5, stop_size: 0.8,
54
- start_x: width/2, start_y: height/3, color: [0.75, 0.1, 0.9]
50
+ start_x: width/2, start_y: height/3
55
51
  end
56
52
 
57
53
  def mouse_clicked
@@ -1,2 +1,2 @@
1
- -Xmn128m -Xms1024m -Xmx1024m -XX:+OptimizeStringConcat -XX:CompileCommand=dontinline,org.jruby.runtime.invokedynamic.InvokeDynamicSupport::invocationFallback
1
+ -Xmn128m -Xms512m -Xmx512m -XX:+OptimizeStringConcat -XX:CompileCommand=dontinline,org.jruby.runtime.invokedynamic.InvokeDynamicSupport::invocationFallback
2
2
 
@@ -86,15 +86,15 @@ def setup_the_birds
86
86
  end
87
87
 
88
88
  shape :bird do
89
- wavy_diamond color: [0.7, 1, 1, 1]
89
+ wavy_diamond color: [38, 1, 1, 1]
90
90
  end
91
91
 
92
92
  shape :bird do
93
- wavy_diamond color: [0.5, 1, 1, 1]
93
+ wavy_diamond color: [180, 1, 1, 1]
94
94
  end
95
95
 
96
96
  shape :bird do
97
- wavy_diamond color: [0.1, 1, 1, 1]
97
+ wavy_diamond color: [36, 1, 1, 1]
98
98
  end
99
99
 
100
100
  shape :bird do
@@ -1,17 +1,23 @@
1
1
  require 'cf3'
2
2
 
3
+ #######################################################
4
+ # This sketch takes some time to develop, #
5
+ # clicking the mouse, allows you view current state #
6
+ # final state background green #
7
+ #######################################################
8
+
3
9
  def setup_the_fern
4
10
 
5
11
  @fern = ContextFree.define do
6
12
 
7
13
  shape :start do
8
- fern rotation: 50, hue: 0.8
14
+ fern rotation: 50, hue: 306
9
15
  end
10
16
 
11
17
  shape :fern do
12
18
  circle size: 0.75, rotation: -10
13
19
  split do
14
- fern size: 0.92, y: -2, rotation: -5, hue: 0.85
20
+ fern size: 0.92, y: -2, rotation: -5, hue: 306
15
21
  rewind
16
22
  fern size: 0.5, y: -2, rotation: 90
17
23
  rewind
@@ -26,9 +32,6 @@ def setup
26
32
  size 600, 600
27
33
  setup_the_fern
28
34
  no_stroke
29
- color_mode HSB, 1.0
30
- smooth
31
- draw_it
32
35
  end
33
36
 
34
37
  def draw
@@ -36,8 +39,8 @@ def draw
36
39
  end
37
40
 
38
41
  def draw_it
39
- background 0.33, 0.25, 0.2
40
- @fern.render :start, size: height/23, color: [0.35, 0.4, 0.9, 0.55], stop_size: 1,
42
+ background 119, 0.25, 0.2, 1.0
43
+ @fern.render :start, size: height/23, color: [126, 0.4, 0.9, 0.55], stop_size: 1,
41
44
  start_x: width/2.5, start_y: height/1.285
42
45
  end
43
46
 
@@ -43,5 +43,5 @@ end
43
43
 
44
44
  def draw_it
45
45
  @hexa.render :hextube, start_x: width/2, start_y: height/2,
46
- size: height/2.1, color: [0, 1, 1, 0.5]
46
+ size: height/2.1, color: [60, 1, 1, 0.5]
47
47
  end
@@ -36,12 +36,12 @@ def setup_the_gel
36
36
  end
37
37
 
38
38
  shape :band do # narrow band with 0.66' probability
39
- hbar size: 0.8, ht: 0.1, brightness: 0.3, alpha: 0.3, hue: 0.7, saturation: 1.0
39
+ hbar size: 0.8, ht: 0.1, brightness: 0.3, alpha: 0.3, hue: 251, saturation: 1.0
40
40
  band brightness: 0.5
41
41
  end
42
42
 
43
43
  shape :band, 0.5 do # double width band with 0.33' probability
44
- hbar size: 0.8, ht: 0.15, brightness: 0.8, alpha: 0.6, hue: -0.1, saturation: 1.0
44
+ hbar size: 0.8, ht: 0.15, brightness: 0.8, alpha: 0.6, hue: -36, saturation: 1.0
45
45
  band brightness: 0.5
46
46
  end
47
47
 
@@ -81,7 +81,7 @@ end
81
81
 
82
82
  def draw_it
83
83
  @pcr.render :gel, start_x: -50, start_y: height/2,
84
- size: height/5, color: [0.7, 0.8, 0.8, 1.0]
84
+ size: height/5, color: [252, 0.8, 0.8, 1.0]
85
85
  end
86
86
 
87
87
  def mouse_clicked
@@ -0,0 +1,79 @@
1
+ #########################
2
+ # rubystar.rb
3
+ # Adding two custom "triangle" shapes.
4
+ # These flat and sharp primitives are
5
+ # used to make dart and kite shapes (for penrose?)
6
+ #########################
7
+ require 'cf3'
8
+
9
+ PHI = (1 + Math.sqrt(5)) / 2
10
+
11
+ def setup_the_sunstar
12
+ @hexa = ContextFree.define do
13
+ ############ Begin defining custom terminals, as a sharp and flat triangles
14
+ class << self
15
+ include Math
16
+ define_method(:sharp) do |some_options|
17
+ size, options = *self.get_shape_values(some_options)
18
+ rot = options[:rotation]
19
+ rotate(rot) if rot # NB: sin(0) = 0, cos(0) = 1
20
+ @app.triangle(0, 0, size, 0, size * cos(PI/5), size * sin(PI/5))
21
+ rotate(-rot) if rot
22
+ end
23
+ define_method(:flat) do |some_options|
24
+ size, options = *self.get_shape_values(some_options)
25
+ rot = options[:rotation]
26
+ rotate(rot) if rot
27
+ f = (options[:flip])? -1 : 1 # flip adjustment NB: sin(0) = 0, cos(0) = 1
28
+ @app.triangle(0, 0, size/PHI, 0, size * cos(PI * f/5), size * sin(PI * f/5))
29
+ rotate(-rot) if rot
30
+ end
31
+ end
32
+ ########### End definition of custom terminals 'sharp and flat'
33
+ shape :tiling do
34
+ sun brightness: 0.8
35
+ star brightness: 0.8, alpha: 0.8
36
+ tiling size: 1/PHI, brightness: 1.0
37
+ end
38
+
39
+ shape :dart do
40
+ flat size: 1, color: [65, 0.6, 0.6, 1]
41
+ flat size: 1, color: [65, 1.0, 1.0, 1], flip: true
42
+ end
43
+
44
+ shape :kite do
45
+ sharp size: 1, color: [0, 0.6, 0.6, 1]
46
+ sharp size: 1, color: [0, 1.0, 1.0, 1], rotation: 180, flip: true
47
+ end
48
+
49
+ shape :star do
50
+ split do
51
+ 5.times do |i|
52
+ dart rotation: 72 * i
53
+ rewind
54
+ end
55
+ end
56
+ end
57
+
58
+ shape :sun do
59
+ split do
60
+ 5.times do |i|
61
+ kite rotation: 72 * i
62
+ rewind
63
+ end
64
+ end
65
+ end
66
+ end
67
+ end
68
+
69
+ def setup
70
+ size 800, 800
71
+ background 150, 20, 0, 1
72
+ setup_the_sunstar
73
+ draw_it
74
+ end
75
+
76
+ def draw_it
77
+ @hexa.render :tiling, start_x: width/2, start_y: height/2,
78
+ size: height
79
+ end
@@ -1,6 +1,6 @@
1
1
  # Contributed by Monkstone.
2
2
 
3
- load_library :cf3
3
+ require 'cf3'
4
4
 
5
5
  def setup_the_spiral
6
6
  @spiral = ContextFree.define do
@@ -16,7 +16,7 @@ def setup_the_spiral
16
16
  end
17
17
 
18
18
  shape :base do
19
- triangle hue: 0.5
19
+ triangle hue: 180
20
20
  base rotation: 3, size: 0.98, x: 0.09, brightness: 1.01
21
21
  end
22
22
 
@@ -50,4 +50,4 @@ def draw_it
50
50
  @spiral.render :start, size: height/5, stop_size: 1,
51
51
  color: [0.35, 0.4, 0.9, 0.25],
52
52
  start_x: width/2, start_y: height/2
53
- end
53
+ end
@@ -0,0 +1,43 @@
1
+ require 'cf3'
2
+ #######
3
+ # Simple example demonstrating rewind
4
+ # also how to make simple composite shapes
5
+ # from primitive terminals (renders on mouse clicked)
6
+ ###
7
+
8
+ def setup
9
+ size 400, 200
10
+ @stars = ContextFree.define do
11
+
12
+ shape :stars do
13
+ split do
14
+ sqstar size: 0.8, x: -1
15
+ rewind
16
+ trstar x: 1
17
+ end
18
+ end
19
+
20
+ shape :sqstar do
21
+ square
22
+ square rotation: 45
23
+ end
24
+
25
+ shape :trstar do
26
+ triangle
27
+ triangle rotation: 180
28
+ end
29
+ end
30
+ end
31
+
32
+ def draw_it
33
+ background 0.2
34
+ @stars.render :stars, size: height/2, color: [220, 1, 1, 1]
35
+ end
36
+
37
+ def draw
38
+ # Do nothing.
39
+ end
40
+
41
+ def mouse_clicked
42
+ draw_it
43
+ end
@@ -5,13 +5,13 @@
5
5
  require 'cf3'
6
6
  load_library :control_panel
7
7
 
8
- attr_reader :panel
8
+ attr_reader :panel, :hide
9
9
 
10
10
  def setup_the_trees
11
-
12
11
  control_panel do |panel|
13
- @panel = panel
12
+ panel.look_feel "Metal"
14
13
  panel.slider :srand, 0..100
14
+ @panel = panel
15
15
  end
16
16
 
17
17
  @tree = ContextFree.define do
@@ -42,7 +42,7 @@ def setup_the_trees
42
42
  shape :leaf do
43
43
  the_size = rand(25)
44
44
  the_x = [1, 0, 0, 0][rand(4)]
45
- circle size: the_size, hue: 0.15, saturation: 1.25, brightness: 1.9, x: the_x, color: [0.95, 0.15]
45
+ circle size: the_size, hue: 54, saturation: 1.25, brightness: 0.9, x: the_x
46
46
  end
47
47
 
48
48
  shape :flower do
@@ -59,40 +59,29 @@ end
59
59
 
60
60
  def setup
61
61
  size 800, 800
62
+ @hide = true
62
63
  setup_the_trees
63
64
  no_stroke
64
- smooth
65
65
  frame_rate 5
66
66
  draw_it
67
67
  end
68
68
 
69
69
  def draw
70
- panel.set_visible(true) if self.visible
71
- # Do nothing.
72
- end
73
-
74
- def draw_the_background
75
- color_mode RGB, 1
76
- color = [0.0, 0.0, 0.00]
77
- background *color
78
- count = height/2
79
- push_matrix
80
- size = height / count
81
- (2*count).times do |i|
82
- color[2] = color[2] + (0.07/count)
83
- fill *color
84
- rect 0, i, width, 1
70
+ unless hide
71
+ panel.set_visible(true)
85
72
  end
86
73
  end
87
74
 
88
75
  def draw_it
89
76
  Kernel::srand(@srand) if @srand
90
- draw_the_background
77
+ background(color(rand(0 .. 255), rand(0 .. 255), rand(0 .. 255), 255))
91
78
  @tree.render :seed, start_x: width/2, start_y: height+20,
92
- size: height/60, color: [0.7, 0.15, 0.8]
79
+ size: height/60, color: [252, 0.15, 0.8, 1]
93
80
  end
94
81
 
95
82
  def mouse_clicked
83
+ @hide = false
96
84
  panel.set_visible(true)
97
85
  draw_it
86
+ @hide = true
98
87
  end
@@ -37,9 +37,6 @@ def setup
37
37
  size 700, 700
38
38
  setup_the_vine
39
39
  no_stroke
40
- color_mode HSB, 1.0
41
- smooth
42
- draw_it
43
40
  end
44
41
 
45
42
  def draw
@@ -47,8 +44,8 @@ def draw
47
44
  end
48
45
 
49
46
  def draw_it
50
- background 0.75, 1.0, 0.15
51
- @vine.render :root, size: height/75, color: [0.75, 0.1, 0.9],
47
+ background 270, 1.0, 0.15, 1.0
48
+ @vine.render :root, size: height/75, color: [270, 0.1, 0.9, 1.0],
52
49
  start_x: width/2, start_y: height/2
53
50
  end
54
51
 
@@ -5,15 +5,14 @@ def setup
5
5
  @triangle = ContextFree.define do
6
6
  shape :tri do
7
7
  circle
8
- triangle brightness: 0
9
- circle brightness: 10, size: 0.02
8
+ triangle brightness: 0.8
9
+ circle brightness: 1.0, size: 0.02
10
10
  end
11
11
  end
12
- color_mode HSB, 1.0
13
12
  end
14
13
 
15
14
  def draw_it
16
- background 1.0
15
+ background 0.2
17
16
  @triangle.render :tri, size: height/2
18
17
  end
19
18
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cf3
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.0.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jeremy Ashkenas
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-07-29 00:00:00.000000000 Z
12
+ date: 2013-08-31 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: ruby-processing
@@ -79,6 +79,7 @@ files:
79
79
  - lib/cf3/version.rb
80
80
  - samples/accident.rb
81
81
  - samples/alhambra.rb
82
+ - samples/alhambra2.rb
82
83
  - samples/bar_code.rb
83
84
  - samples/city.rb
84
85
  - samples/creature.rb
@@ -92,8 +93,10 @@ files:
92
93
  - samples/isosceles.rb
93
94
  - samples/levy.rb
94
95
  - samples/pcr.rb
96
+ - samples/rubystar.rb
95
97
  - samples/sierpinski.rb
96
98
  - samples/spiral.rb
99
+ - samples/star.rb
97
100
  - samples/tree.rb
98
101
  - samples/tree4.rb
99
102
  - samples/vine.rb