cf3 0.0.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.gitignore +20 -0
- data/.yardopts +5 -0
- data/CHANGELOG +3 -0
- data/CONTRIBUTING.md +32 -0
- data/Gemfile +4 -0
- data/LICENSE.md +675 -0
- data/README.md +35 -0
- data/Rakefile +15 -0
- data/bin/cf3samples +16 -0
- data/cf3ruby.gemspec +29 -0
- data/lib/cf3.rb +240 -0
- data/lib/cf3/version.rb +3 -0
- data/samples/accident.rb +98 -0
- data/samples/alhambra.rb +79 -0
- data/samples/bar_code.rb +85 -0
- data/samples/city.rb +60 -0
- data/samples/creature.rb +59 -0
- data/samples/dark_star.rb +47 -0
- data/samples/data/java_args.txt +2 -0
- data/samples/dragon.rb +40 -0
- data/samples/escher.rb +124 -0
- data/samples/fern.rb +46 -0
- data/samples/grapher.rb +47 -0
- data/samples/hex_tube.rb +47 -0
- data/samples/isosceles.rb +36 -0
- data/samples/levy.rb +38 -0
- data/samples/pcr.rb +89 -0
- data/samples/sierpinski.rb +44 -0
- data/samples/spiral.rb +53 -0
- data/samples/tree.rb +98 -0
- data/samples/tree4.rb +65 -0
- data/samples/vine.rb +57 -0
- data/samples/y.rb +46 -0
- data/test/test_cf3.rb +26 -0
- metadata +128 -0
data/samples/tree4.rb
ADDED
@@ -0,0 +1,65 @@
|
|
1
|
+
#################################################################
|
2
|
+
# tree4.rb by Martin Prout after tree4.cfdg
|
3
|
+
# A non deterministic sketch run it until you get a result you like
|
4
|
+
# uncomment "srand 5" to get a more deterministic result. It looked
|
5
|
+
# pretty good on my linux box (however I'm not sure how universal the
|
6
|
+
# random seeding is in jruby)
|
7
|
+
#################################################################
|
8
|
+
|
9
|
+
require 'cf3'
|
10
|
+
|
11
|
+
def setup_the_tree
|
12
|
+
@tree = ContextFree.define do
|
13
|
+
shape :trunk, 20 do # rule has a probability weighting of 20
|
14
|
+
circle size: 0.25, brightness: 0.5 # giving an actual probability = 0.952381
|
15
|
+
scraggle y: -0.1 # the minus is require by the upside down coordinate system
|
16
|
+
end
|
17
|
+
|
18
|
+
shape :trunk, 1 do # rule has a probability weighting of 1
|
19
|
+
branch size: 0.7 # giving an actual probability = 0.047619
|
20
|
+
end
|
21
|
+
|
22
|
+
shape :trunk, 0.02 do # empty rule top stop early
|
23
|
+
end
|
24
|
+
|
25
|
+
shape :branch do
|
26
|
+
split do # split is like a branch, rewind returns original context
|
27
|
+
trunk rotation: 10
|
28
|
+
rewind
|
29
|
+
trunk rotation: -10
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
shape :scraggle do # without an explicit weighting
|
34
|
+
trunk rotation: 5 # probability of each scraggle rule
|
35
|
+
end # is 0.5
|
36
|
+
|
37
|
+
shape :scraggle do
|
38
|
+
trunk rotation: -5
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
43
|
+
def setup
|
44
|
+
size 600, 600
|
45
|
+
# srand 5 uncomment this to get nice looking tree
|
46
|
+
smooth
|
47
|
+
setup_the_tree
|
48
|
+
background 255 # NB color mode here is "RGB 255", within context free definition
|
49
|
+
draw_it # the color mode is "HSB 1.0", supports :hue, :saturation, :brightness
|
50
|
+
# save_frame "/home/tux/tree4.png"
|
51
|
+
end
|
52
|
+
|
53
|
+
def draw
|
54
|
+
# create a draw loop
|
55
|
+
end
|
56
|
+
|
57
|
+
def draw_it
|
58
|
+
@tree.render :trunk, start_x: width/2, start_y: height * 0.9, stop_size: height/150, size: height/15
|
59
|
+
end
|
60
|
+
|
61
|
+
def mouse_clicked
|
62
|
+
java.lang.System.gc # might help to reduce runtime stack blow ups, it happens!
|
63
|
+
background 1
|
64
|
+
draw_it
|
65
|
+
end
|
data/samples/vine.rb
ADDED
@@ -0,0 +1,57 @@
|
|
1
|
+
# vine.rb by jashkenas, click mouse to re-run
|
2
|
+
|
3
|
+
require 'cf3'
|
4
|
+
|
5
|
+
def setup_the_vine
|
6
|
+
|
7
|
+
@vine = ContextFree.define do
|
8
|
+
|
9
|
+
shrink = 0.961
|
10
|
+
|
11
|
+
shape :root do
|
12
|
+
split do
|
13
|
+
shoot y: 1
|
14
|
+
rewind
|
15
|
+
shoot rotation: 180
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
shape :shoot do
|
20
|
+
square
|
21
|
+
shoot y: 0.98, rotation: 5, size: shrink + rand * 0.05, brightness: 0.990
|
22
|
+
end
|
23
|
+
|
24
|
+
shape :shoot, 0.02 do
|
25
|
+
square
|
26
|
+
split do
|
27
|
+
shoot rotation: 90
|
28
|
+
rewind
|
29
|
+
shoot rotation: -90
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
def setup
|
37
|
+
size 700, 700
|
38
|
+
setup_the_vine
|
39
|
+
no_stroke
|
40
|
+
color_mode HSB, 1.0
|
41
|
+
smooth
|
42
|
+
draw_it
|
43
|
+
end
|
44
|
+
|
45
|
+
def draw
|
46
|
+
# Do nothing.
|
47
|
+
end
|
48
|
+
|
49
|
+
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],
|
52
|
+
start_x: width/2, start_y: height/2
|
53
|
+
end
|
54
|
+
|
55
|
+
def mouse_clicked
|
56
|
+
draw_it
|
57
|
+
end
|
data/samples/y.rb
ADDED
@@ -0,0 +1,46 @@
|
|
1
|
+
# y.rb ruby-processing by Martin Prout
|
2
|
+
require 'cf3'
|
3
|
+
Y_TOP = -1 / Math.sqrt(3)
|
4
|
+
Y_BOT = Math.sqrt(3) / 6
|
5
|
+
|
6
|
+
def setup_the_triangle
|
7
|
+
@triangle = ContextFree.define do
|
8
|
+
########
|
9
|
+
shape :start do
|
10
|
+
unit brightness: 1.0
|
11
|
+
end
|
12
|
+
|
13
|
+
shape :unit do
|
14
|
+
triangle size: 1.0
|
15
|
+
split do
|
16
|
+
unit size: 0.5, x: 0, y: Y_TOP/2, brightness: 0.8
|
17
|
+
rewind
|
18
|
+
unit size: 0.5, x: -0.25, y: -Y_TOP/4, brightness: 0.8
|
19
|
+
rewind
|
20
|
+
unit size: 0.5, x: 0.25, y: -Y_TOP/4, brightness: 0.8
|
21
|
+
end
|
22
|
+
end
|
23
|
+
########
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
def setup
|
28
|
+
size 1024, 1024
|
29
|
+
setup_the_triangle
|
30
|
+
no_stroke
|
31
|
+
color_mode RGB, 1
|
32
|
+
smooth 8
|
33
|
+
draw_it
|
34
|
+
save_frame("y.png")
|
35
|
+
end
|
36
|
+
|
37
|
+
|
38
|
+
def draw
|
39
|
+
# Do nothing.
|
40
|
+
end
|
41
|
+
|
42
|
+
def draw_it
|
43
|
+
background 225, 225, 0
|
44
|
+
@triangle.render :start, size: height, stop_size: 0.5,
|
45
|
+
start_x: width/2, start_y: height * 0.6
|
46
|
+
end
|
data/test/test_cf3.rb
ADDED
@@ -0,0 +1,26 @@
|
|
1
|
+
require_relative '../lib/cf3.rb'
|
2
|
+
|
3
|
+
def setup
|
4
|
+
size 200, 200
|
5
|
+
@triangle = ContextFree.define do
|
6
|
+
shape :tri do
|
7
|
+
circle
|
8
|
+
triangle brightness: 0
|
9
|
+
circle brightness: 10, size: 0.02
|
10
|
+
end
|
11
|
+
end
|
12
|
+
color_mode HSB, 1.0
|
13
|
+
end
|
14
|
+
|
15
|
+
def draw_it
|
16
|
+
background 1.0
|
17
|
+
@triangle.render :tri, size: height/2
|
18
|
+
end
|
19
|
+
|
20
|
+
def draw
|
21
|
+
# Do nothing.
|
22
|
+
end
|
23
|
+
|
24
|
+
def mouse_clicked
|
25
|
+
draw_it
|
26
|
+
end
|
metadata
ADDED
@@ -0,0 +1,128 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: cf3
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.1
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Jeremy Ashkenas
|
8
|
+
- Martin Prout
|
9
|
+
autorequire:
|
10
|
+
bindir: bin
|
11
|
+
cert_chain: []
|
12
|
+
date: 2013-07-27 00:00:00.000000000 Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
15
|
+
name: ruby-processing
|
16
|
+
requirement: !ruby/object:Gem::Requirement
|
17
|
+
requirements:
|
18
|
+
- - '>='
|
19
|
+
- !ruby/object:Gem::Version
|
20
|
+
version: 1.0.11
|
21
|
+
type: :runtime
|
22
|
+
prerelease: false
|
23
|
+
version_requirements: !ruby/object:Gem::Requirement
|
24
|
+
requirements:
|
25
|
+
- - '>='
|
26
|
+
- !ruby/object:Gem::Version
|
27
|
+
version: 1.0.11
|
28
|
+
- !ruby/object:Gem::Dependency
|
29
|
+
name: bundler
|
30
|
+
requirement: !ruby/object:Gem::Requirement
|
31
|
+
requirements:
|
32
|
+
- - ~>
|
33
|
+
- !ruby/object:Gem::Version
|
34
|
+
version: '1.3'
|
35
|
+
type: :development
|
36
|
+
prerelease: false
|
37
|
+
version_requirements: !ruby/object:Gem::Requirement
|
38
|
+
requirements:
|
39
|
+
- - ~>
|
40
|
+
- !ruby/object:Gem::Version
|
41
|
+
version: '1.3'
|
42
|
+
- !ruby/object:Gem::Dependency
|
43
|
+
name: rake
|
44
|
+
requirement: !ruby/object:Gem::Requirement
|
45
|
+
requirements:
|
46
|
+
- - '>='
|
47
|
+
- !ruby/object:Gem::Version
|
48
|
+
version: '0'
|
49
|
+
type: :development
|
50
|
+
prerelease: false
|
51
|
+
version_requirements: !ruby/object:Gem::Requirement
|
52
|
+
requirements:
|
53
|
+
- - '>='
|
54
|
+
- !ruby/object:Gem::Version
|
55
|
+
version: '0'
|
56
|
+
description: " A library for ruby-processing, that allows the writing of context
|
57
|
+
free \n sketches (like context free art) in a ruby DSL. It is a bit of a toy\n
|
58
|
+
\ compared to the c++ version. However you can get quite a bit of \n satisfaction
|
59
|
+
creating an interesting graphic, and you can't always\n predict what you are
|
60
|
+
going to get.\n"
|
61
|
+
email:
|
62
|
+
- martin_p@lineone.net
|
63
|
+
executables:
|
64
|
+
- cf3samples
|
65
|
+
extensions: []
|
66
|
+
extra_rdoc_files: []
|
67
|
+
files:
|
68
|
+
- .gitignore
|
69
|
+
- .yardopts
|
70
|
+
- CHANGELOG
|
71
|
+
- CONTRIBUTING.md
|
72
|
+
- Gemfile
|
73
|
+
- LICENSE.md
|
74
|
+
- README.md
|
75
|
+
- Rakefile
|
76
|
+
- bin/cf3samples
|
77
|
+
- cf3ruby.gemspec
|
78
|
+
- lib/cf3.rb
|
79
|
+
- lib/cf3/version.rb
|
80
|
+
- samples/accident.rb
|
81
|
+
- samples/alhambra.rb
|
82
|
+
- samples/bar_code.rb
|
83
|
+
- samples/city.rb
|
84
|
+
- samples/creature.rb
|
85
|
+
- samples/dark_star.rb
|
86
|
+
- samples/data/java_args.txt
|
87
|
+
- samples/dragon.rb
|
88
|
+
- samples/escher.rb
|
89
|
+
- samples/fern.rb
|
90
|
+
- samples/grapher.rb
|
91
|
+
- samples/hex_tube.rb
|
92
|
+
- samples/isosceles.rb
|
93
|
+
- samples/levy.rb
|
94
|
+
- samples/pcr.rb
|
95
|
+
- samples/sierpinski.rb
|
96
|
+
- samples/spiral.rb
|
97
|
+
- samples/tree.rb
|
98
|
+
- samples/tree4.rb
|
99
|
+
- samples/vine.rb
|
100
|
+
- samples/y.rb
|
101
|
+
- test/test_cf3.rb
|
102
|
+
homepage: http://learning-ruby-processing.blogspot.co.uk/
|
103
|
+
licenses:
|
104
|
+
- GPL3
|
105
|
+
metadata: {}
|
106
|
+
post_install_message:
|
107
|
+
rdoc_options: []
|
108
|
+
require_paths:
|
109
|
+
- lib
|
110
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
111
|
+
requirements:
|
112
|
+
- - '>='
|
113
|
+
- !ruby/object:Gem::Version
|
114
|
+
version: '0'
|
115
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
116
|
+
requirements:
|
117
|
+
- - '>='
|
118
|
+
- !ruby/object:Gem::Version
|
119
|
+
version: '0'
|
120
|
+
requirements: []
|
121
|
+
rubyforge_project:
|
122
|
+
rubygems_version: 2.0.5
|
123
|
+
signing_key:
|
124
|
+
specification_version: 4
|
125
|
+
summary: A ruby-DSL library for CF3 sketches
|
126
|
+
test_files:
|
127
|
+
- test/test_cf3.rb
|
128
|
+
has_rdoc:
|