cf3 0.0.4 → 1.2.0
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 +5 -5
- data/.gitignore +2 -0
- data/{CHANGELOG → CHANGELOG.md} +13 -0
- data/Gemfile +1 -1
- data/README.md +21 -21
- data/Rakefile +7 -3
- data/bin/cf3samples +4 -4
- data/cf3ruby.gemspec +12 -13
- data/docs/.sass-cache/cd612fe6616e7f514a2421dc73159618de35b85d/jekyll-theme-cayman.scssc +0 -0
- data/docs/.sass-cache/cd612fe6616e7f514a2421dc73159618de35b85d/normalize.scssc +0 -0
- data/docs/.sass-cache/cd612fe6616e7f514a2421dc73159618de35b85d/rouge-github.scssc +0 -0
- data/docs/.sass-cache/cd612fe6616e7f514a2421dc73159618de35b85d/variables.scssc +0 -0
- data/docs/README.md +1 -0
- data/docs/_config.yml +31 -0
- data/docs/_site/README.md +1 -0
- data/docs/_site/about/index.html +52 -0
- data/docs/_site/assets/css/style.css +809 -0
- data/docs/_site/assets/y.png +0 -0
- data/docs/_site/example/index.html +113 -0
- data/docs/_site/favicon.ico +0 -0
- data/docs/_site/feed.xml +10 -0
- data/docs/_site/index.html +51 -0
- data/docs/_site/robots.txt +1 -0
- data/docs/_site/sitemap.xml +12 -0
- data/docs/about.md +14 -0
- data/docs/assets/y.png +0 -0
- data/docs/example.md +73 -0
- data/docs/favicon.ico +0 -0
- data/docs/index.md +10 -0
- data/lib/cf3/version.rb +1 -1
- data/lib/cf3.rb +85 -100
- data/samples/Rakefile +30 -0
- data/samples/accident.rb +34 -30
- data/samples/alhambra.rb +32 -29
- data/samples/bar_code.rb +26 -22
- data/samples/city.rb +14 -11
- data/samples/creature.rb +10 -6
- data/samples/dark_star.rb +5 -3
- data/samples/data/java_args.txt +1 -2
- data/samples/dragon.rb +8 -4
- data/samples/escher.rb +115 -116
- data/samples/fern.rb +13 -9
- data/samples/hex_tube.rb +16 -13
- data/samples/isosceles.rb +16 -11
- data/samples/levy.rb +5 -2
- data/samples/pcr.rb +28 -24
- data/samples/rubystar.rb +23 -17
- data/samples/sierpinski.rb +15 -11
- data/samples/spiral.rb +14 -10
- data/samples/star.rb +10 -6
- data/samples/tree.rb +20 -17
- data/samples/tree4.rb +12 -8
- data/samples/vine.rb +11 -7
- data/samples/xcross.rb +10 -7
- data/samples/y.rb +13 -9
- data/test/test_cf3.rb +11 -7
- metadata +50 -42
data/samples/levy.rb
CHANGED
@@ -17,12 +17,15 @@ def setup_the_levy
|
|
17
17
|
end
|
18
18
|
end
|
19
19
|
|
20
|
+
def settings
|
21
|
+
size 400, 400
|
22
|
+
end
|
20
23
|
|
21
24
|
def setup
|
22
|
-
|
25
|
+
sketch_title 'Levy Fractal'
|
23
26
|
setup_the_levy
|
24
27
|
draw_it
|
25
|
-
save_frame(
|
28
|
+
save_frame(data_path('levy.png'))
|
26
29
|
end
|
27
30
|
|
28
31
|
|
data/samples/pcr.rb
CHANGED
@@ -9,23 +9,24 @@ require 'cf3'
|
|
9
9
|
def setup_the_gel
|
10
10
|
@pcr = ContextFree.define do
|
11
11
|
############ Begin defining custom terminal, a proportional horizontal bar
|
12
|
-
class << self
|
12
|
+
class << self
|
13
13
|
define_method(:hbar) do |some_options|
|
14
|
-
|
15
|
-
|
16
|
-
|
14
|
+
options = get_shape_values(some_options)
|
15
|
+
size = options[:size]
|
16
|
+
ht = some_options[:ht] || 0.1 # default hbar width is 0.1
|
17
|
+
ratio = ht * size
|
17
18
|
rot = options[:rotation]
|
18
19
|
rect_mode(CENTER)
|
19
|
-
rotate(rot) if rot
|
20
|
+
rotate(rot) if rot
|
20
21
|
rect(-0.5 * size, -0.5 * ratio, 0.5 * size, 0.5 * ratio)
|
21
22
|
end
|
22
23
|
end
|
23
24
|
########### End definition of custom terminal 'hbar'
|
24
|
-
|
25
|
+
|
25
26
|
shape :gel do
|
26
27
|
dna brightness: 1.0
|
27
28
|
end
|
28
|
-
|
29
|
+
|
29
30
|
shape :dna do
|
30
31
|
split do
|
31
32
|
26.times do
|
@@ -34,43 +35,46 @@ def setup_the_gel
|
|
34
35
|
end
|
35
36
|
end
|
36
37
|
end
|
37
|
-
|
38
|
-
shape :band do # narrow band with 0.66' probability
|
38
|
+
|
39
|
+
shape :band do # narrow band with 0.66' probability
|
39
40
|
hbar size: 0.8, ht: 0.1, brightness: 0.3, alpha: 0.3, hue: 251, saturation: 1.0
|
40
41
|
band brightness: 0.5
|
41
42
|
end
|
42
|
-
|
43
|
-
shape :band, 0.5 do # double width band with 0.33' probability
|
43
|
+
|
44
|
+
shape :band, 0.5 do # double width band with 0.33' probability
|
44
45
|
hbar size: 0.8, ht: 0.15, brightness: 0.8, alpha: 0.6, hue: -36, saturation: 1.0
|
45
46
|
band brightness: 0.5
|
46
47
|
end
|
47
|
-
|
48
|
-
shape :band, 0.08 do # a low probability empty rule used to end recursion
|
49
|
-
end
|
50
|
-
|
51
|
-
shape :band do
|
48
|
+
|
49
|
+
shape :band, 0.08 do # a low probability empty rule used to end recursion
|
50
|
+
end
|
51
|
+
|
52
|
+
shape :band do
|
52
53
|
band y: -0.23
|
53
54
|
end
|
54
|
-
|
55
|
-
shape :band do
|
55
|
+
|
56
|
+
shape :band do
|
56
57
|
band y: 0.17
|
57
58
|
end
|
58
|
-
|
59
|
+
|
59
60
|
shape :band do
|
60
|
-
band y: 0.29
|
61
|
+
band y: 0.29
|
61
62
|
end
|
62
63
|
|
63
64
|
shape :band do
|
64
|
-
band y: -0.33
|
65
|
+
band y: -0.33
|
65
66
|
end
|
66
67
|
|
67
68
|
end
|
68
69
|
end
|
69
70
|
|
70
|
-
def
|
71
|
+
def settings
|
71
72
|
size 500, 300
|
73
|
+
end
|
74
|
+
|
75
|
+
def setup
|
76
|
+
sketch_title 'PCR gel'
|
72
77
|
background 0, 0, 180
|
73
|
-
smooth
|
74
78
|
setup_the_gel
|
75
79
|
draw_it
|
76
80
|
end
|
@@ -80,7 +84,7 @@ def draw
|
|
80
84
|
end
|
81
85
|
|
82
86
|
def draw_it
|
83
|
-
@pcr.render :gel, start_x: -50, start_y: height/2,
|
87
|
+
@pcr.render :gel, start_x: -50, start_y: height/2,
|
84
88
|
size: height/5, color: [252, 0.8, 0.8, 1.0]
|
85
89
|
end
|
86
90
|
|
data/samples/rubystar.rb
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
#########################
|
2
|
-
# rubystar.rb
|
2
|
+
# rubystar.rb
|
3
3
|
# Adding two custom "triangle" shapes.
|
4
4
|
# These flat and sharp primitives are
|
5
5
|
# used to make dart and kite shapes (for penrose?)
|
@@ -10,18 +10,20 @@ PHI = (1 + Math.sqrt(5)) / 2
|
|
10
10
|
|
11
11
|
def setup_the_sunstar
|
12
12
|
@hexa = ContextFree.define do
|
13
|
-
############ Begin defining custom terminals, as a sharp and flat triangles
|
13
|
+
############ Begin defining custom terminals, as a sharp and flat triangles
|
14
14
|
class << self
|
15
15
|
include Math
|
16
|
-
define_method(:sharp) do |some_options|
|
17
|
-
|
16
|
+
define_method(:sharp) do |some_options|
|
17
|
+
options = get_shape_values(some_options)
|
18
|
+
size = options[:size]
|
18
19
|
rot = options[:rotation]
|
19
|
-
rotate(rot) if rot # NB: sin(0) = 0, cos(0) = 1
|
20
|
+
rotate(rot) if rot # NB: sin(0) = 0, cos(0) = 1
|
20
21
|
@app.triangle(0, 0, size, 0, size * cos(PI/5), size * sin(PI/5))
|
21
22
|
rotate(-rot) if rot
|
22
23
|
end
|
23
|
-
define_method(:flat) do |some_options|
|
24
|
-
|
24
|
+
define_method(:flat) do |some_options|
|
25
|
+
options = get_shape_values(some_options)
|
26
|
+
size = options[:size]
|
25
27
|
rot = options[:rotation]
|
26
28
|
rotate(rot) if rot
|
27
29
|
f = (options[:flip])? -1 : 1 # flip adjustment NB: sin(0) = 0, cos(0) = 1
|
@@ -30,31 +32,31 @@ def setup_the_sunstar
|
|
30
32
|
end
|
31
33
|
end
|
32
34
|
########### End definition of custom terminals 'sharp and flat'
|
33
|
-
shape :tiling do
|
35
|
+
shape :tiling do
|
34
36
|
sun brightness: 0.8
|
35
37
|
star brightness: 0.8, alpha: 0.8
|
36
38
|
tiling size: 1/PHI, brightness: 1.0
|
37
39
|
end
|
38
|
-
|
40
|
+
|
39
41
|
shape :dart do
|
40
42
|
flat size: 1, color: [65, 0.6, 0.6, 1]
|
41
43
|
flat size: 1, color: [65, 1.0, 1.0, 1], flip: true
|
42
44
|
end
|
43
|
-
|
45
|
+
|
44
46
|
shape :kite do
|
45
47
|
sharp size: 1, color: [0, 0.6, 0.6, 1]
|
46
48
|
sharp size: 1, color: [0, 1.0, 1.0, 1], rotation: 180, flip: true
|
47
49
|
end
|
48
|
-
|
49
|
-
shape :star do
|
50
|
+
|
51
|
+
shape :star do
|
50
52
|
split do
|
51
53
|
5.times do |i|
|
52
|
-
dart rotation: 72 * i
|
54
|
+
dart rotation: 72 * i
|
53
55
|
rewind
|
54
56
|
end
|
55
57
|
end
|
56
58
|
end
|
57
|
-
|
59
|
+
|
58
60
|
shape :sun do
|
59
61
|
split do
|
60
62
|
5.times do |i|
|
@@ -66,14 +68,18 @@ def setup_the_sunstar
|
|
66
68
|
end
|
67
69
|
end
|
68
70
|
|
69
|
-
def
|
71
|
+
def settings
|
70
72
|
size 800, 800
|
73
|
+
end
|
74
|
+
|
75
|
+
def setup
|
76
|
+
sketch_title 'Ruby Star'
|
71
77
|
background 150, 20, 0, 1
|
72
78
|
setup_the_sunstar
|
73
79
|
draw_it
|
74
80
|
end
|
75
81
|
|
76
82
|
def draw_it
|
77
|
-
@hexa.render :tiling, start_x: width/2, start_y: height/2,
|
78
|
-
size: height
|
83
|
+
@hexa.render :tiling, start_x: width/2, start_y: height/2,
|
84
|
+
size: height
|
79
85
|
end
|
data/samples/sierpinski.rb
CHANGED
@@ -1,42 +1,46 @@
|
|
1
|
-
require 'cf3'
|
1
|
+
require 'cf3'
|
2
2
|
|
3
3
|
load_library 'control_panel'
|
4
4
|
|
5
5
|
attr_accessor :resolution, :panel, :hide
|
6
6
|
|
7
|
-
def setup_the_triangle
|
7
|
+
def setup_the_triangle
|
8
8
|
@triangle = ContextFree.define do
|
9
9
|
shape :tri do
|
10
|
-
triangle size: 0.5
|
10
|
+
triangle size: 0.5
|
11
11
|
split do
|
12
|
-
tri size: 0.5, y: -0.578, x: 0,
|
12
|
+
tri size: 0.5, y: -0.578, x: 0,
|
13
13
|
hue: 288, saturation: 0.2, brightness: 0.8
|
14
14
|
rewind
|
15
|
-
tri size: 0.5, y: 0.289, x: -0.5, hue: 72,
|
15
|
+
tri size: 0.5, y: 0.289, x: -0.5, hue: 72,
|
16
16
|
saturation: 0.2, brightness: 0.8
|
17
17
|
rewind
|
18
|
-
tri size: 0.5, y: 0.289, x: 0.5, hue: 72,
|
18
|
+
tri size: 0.5, y: 0.289, x: 0.5, hue: 72,
|
19
19
|
saturation: 0.2, brightness: 0.8
|
20
20
|
end
|
21
|
-
end
|
21
|
+
end
|
22
22
|
end
|
23
23
|
end
|
24
24
|
|
25
|
-
def
|
25
|
+
def settings
|
26
26
|
size 600, 600
|
27
|
+
end
|
28
|
+
|
29
|
+
def setup
|
30
|
+
sketch_title 'Sierpinski'
|
27
31
|
setup_the_triangle
|
28
32
|
no_stroke
|
29
33
|
@hide = false
|
30
34
|
@resolution = 5
|
31
35
|
control_panel do |p|
|
32
|
-
p.look_feel
|
36
|
+
p.look_feel 'Nimbus' # optional set look and feel
|
33
37
|
p.slider :resolution, (2..50), 5
|
34
38
|
@panel = p
|
35
39
|
end
|
36
40
|
end
|
37
41
|
|
38
42
|
def draw
|
39
|
-
unless hide
|
43
|
+
unless hide
|
40
44
|
panel.set_visible(true) # display panel after sketch frame
|
41
45
|
@hide = true
|
42
46
|
end
|
@@ -45,5 +49,5 @@ def draw
|
|
45
49
|
end
|
46
50
|
|
47
51
|
def mouse_clicked
|
48
|
-
@hide = false
|
52
|
+
@hide = false
|
49
53
|
end
|
data/samples/spiral.rb
CHANGED
@@ -4,7 +4,7 @@ require 'cf3'
|
|
4
4
|
|
5
5
|
def setup_the_spiral
|
6
6
|
@spiral = ContextFree.define do
|
7
|
-
|
7
|
+
|
8
8
|
shape :start do
|
9
9
|
split do
|
10
10
|
star rotation: 240
|
@@ -14,14 +14,14 @@ def setup_the_spiral
|
|
14
14
|
star rotation: 0
|
15
15
|
end
|
16
16
|
end
|
17
|
-
|
17
|
+
|
18
18
|
shape :base do
|
19
19
|
triangle hue: 180
|
20
20
|
base rotation: 3, size: 0.98, x: 0.09, brightness: 1.01
|
21
21
|
end
|
22
|
-
|
22
|
+
|
23
23
|
shape :star do
|
24
|
-
split do
|
24
|
+
split do
|
25
25
|
base brightness: 0.8, rotation: 80
|
26
26
|
rewind
|
27
27
|
base brightness: 0.8, rotation: 40
|
@@ -29,25 +29,29 @@ def setup_the_spiral
|
|
29
29
|
base brightness: 0.8, rotation: 0
|
30
30
|
end
|
31
31
|
end
|
32
|
-
|
32
|
+
|
33
33
|
end
|
34
34
|
end
|
35
|
-
|
36
|
-
def
|
35
|
+
|
36
|
+
def settings
|
37
37
|
size 600, 600
|
38
|
+
end
|
39
|
+
|
40
|
+
def setup
|
41
|
+
sketch_title 'Spiral'
|
38
42
|
setup_the_spiral
|
39
43
|
no_stroke
|
40
44
|
color_mode HSB, 1.0
|
41
45
|
draw_it
|
42
46
|
end
|
43
|
-
|
47
|
+
|
44
48
|
def draw
|
45
49
|
# Do nothing.
|
46
50
|
end
|
47
|
-
|
51
|
+
|
48
52
|
def draw_it
|
49
53
|
background 0.33, 0.25, 0.2
|
50
54
|
@spiral.render :start, size: height/5, stop_size: 1,
|
51
|
-
color: [0.35, 0.4, 0.9, 0.25],
|
55
|
+
color: [0.35, 0.4, 0.9, 0.25],
|
52
56
|
start_x: width/2, start_y: height/2
|
53
57
|
end
|
data/samples/star.rb
CHANGED
@@ -5,10 +5,14 @@ require 'cf3'
|
|
5
5
|
# from primitive terminals (renders on mouse clicked)
|
6
6
|
###
|
7
7
|
|
8
|
+
def settings
|
9
|
+
size 400, 200
|
10
|
+
end
|
11
|
+
|
8
12
|
def setup
|
9
|
-
|
13
|
+
sketch_title 'Star Shapes'
|
10
14
|
@stars = ContextFree.define do
|
11
|
-
|
15
|
+
|
12
16
|
shape :stars do
|
13
17
|
split do
|
14
18
|
sqstar size: 0.8, x: -1
|
@@ -16,21 +20,21 @@ def setup
|
|
16
20
|
trstar x: 1
|
17
21
|
end
|
18
22
|
end
|
19
|
-
|
23
|
+
|
20
24
|
shape :sqstar do
|
21
25
|
square
|
22
26
|
square rotation: 45
|
23
27
|
end
|
24
|
-
|
28
|
+
|
25
29
|
shape :trstar do
|
26
30
|
triangle
|
27
31
|
triangle rotation: 180
|
28
32
|
end
|
29
|
-
end
|
33
|
+
end
|
30
34
|
end
|
31
35
|
|
32
36
|
def draw_it
|
33
|
-
background 0.2
|
37
|
+
background 0.2
|
34
38
|
@stars.render :stars, size: height/2, color: [220, 1, 1, 1]
|
35
39
|
end
|
36
40
|
|
data/samples/tree.rb
CHANGED
@@ -9,25 +9,25 @@ attr_reader :panel, :hide
|
|
9
9
|
|
10
10
|
def setup_the_trees
|
11
11
|
control_panel do |panel|
|
12
|
-
panel.look_feel
|
13
|
-
panel.slider :srand, 0..100
|
12
|
+
panel.look_feel 'Nimbus'
|
13
|
+
panel.slider :srand, (0..100), 48.85
|
14
14
|
@panel = panel
|
15
15
|
end
|
16
|
-
|
16
|
+
|
17
17
|
@tree = ContextFree.define do
|
18
|
-
|
18
|
+
|
19
19
|
shape :seed do
|
20
20
|
square
|
21
21
|
leaf y: 0 if size < 4.5 && rand < 0.018
|
22
22
|
flower y: 0 if size < 2.0 && rand < 0.02
|
23
23
|
seed y: -1, size: 0.986, rotation: 3, brightness: 0.989
|
24
24
|
end
|
25
|
-
|
25
|
+
|
26
26
|
shape :seed, 0.1 do
|
27
27
|
square
|
28
28
|
seed flip: true
|
29
29
|
end
|
30
|
-
|
30
|
+
|
31
31
|
shape :seed, 0.04 do
|
32
32
|
square
|
33
33
|
split do
|
@@ -38,27 +38,30 @@ def setup_the_trees
|
|
38
38
|
seed size: 0.8, rotation: rand(50)
|
39
39
|
end
|
40
40
|
end
|
41
|
-
|
41
|
+
|
42
42
|
shape :leaf do
|
43
43
|
the_size = rand(25)
|
44
44
|
the_x = [1, 0, 0, 0][rand(4)]
|
45
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
|
49
|
-
split saturation: 0, brightness: rand(1.3)
|
50
|
-
|
49
|
+
split saturation: 0, brightness: rand(1.3..6.0), w: rand(15..25), h: rand(2..4) do
|
50
|
+
(0..135).step(45) do |rot|
|
51
51
|
oval rotation: rot
|
52
|
-
|
52
|
+
end
|
53
53
|
end
|
54
|
-
end
|
55
|
-
end
|
54
|
+
end
|
55
|
+
end
|
56
56
|
end
|
57
57
|
|
58
|
+
def settings
|
59
|
+
size 800, 800
|
60
|
+
end
|
58
61
|
|
59
62
|
def setup
|
60
|
-
|
61
|
-
@hide =
|
63
|
+
sketch_title 'Tree'
|
64
|
+
@hide = false
|
62
65
|
setup_the_trees
|
63
66
|
no_stroke
|
64
67
|
frame_rate 5
|
@@ -74,13 +77,13 @@ end
|
|
74
77
|
def draw_it
|
75
78
|
Kernel::srand(@srand) if @srand
|
76
79
|
background(color(rand(0 .. 255), rand(0 .. 255), rand(0 .. 255), 255))
|
77
|
-
@tree.render :seed, start_x: width/2, start_y: height+20,
|
80
|
+
@tree.render :seed, start_x: width/2, start_y: height+20,
|
78
81
|
size: height/60, color: [252, 0.15, 0.8, 1]
|
79
82
|
end
|
80
83
|
|
81
84
|
def mouse_clicked
|
82
85
|
@hide = false
|
83
|
-
panel.set_visible(true)
|
86
|
+
panel.set_visible(true)
|
84
87
|
draw_it
|
85
88
|
@hide = true
|
86
89
|
end
|