Skip to content

Commit 0a28d8f

Browse files
committed
Examples demonstrating use of noise_mode.
1 parent 96d631e commit 0a28d8f

File tree

22 files changed

+441
-203
lines changed

22 files changed

+441
-203
lines changed

CHANGELOG.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1 +1,3 @@
1+
**3.0** Simplex Noise examples
2+
13
**v1.8** Update examples for hemesh-6.0.1, update pixelflow examples add more gui examples including skatolo

contributed/decagon_grid.rb

Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
#!/usr/bin/env jruby
2+
require 'propane'
3+
# Example of a grid of decagons with perlin noise after Lenny Herzog
4+
class DecagonGrid < Propane::App
5+
load_library :pdf
6+
NOISE_STRENGTH = 80.0
7+
THETA = 36
8+
attr_reader :version, :save, :noise_generator
9+
10+
def setup
11+
sketch_title 'Decagon Grid'
12+
frame_rate 24
13+
@version = 0
14+
@save = false
15+
@noise_generator = lambda do |x, y, seed|
16+
NOISE_STRENGTH * noise(
17+
x / 150.0,
18+
y / 150.0 + seed * 2,
19+
seed
20+
) - 100
21+
end
22+
end
23+
24+
def draw
25+
begin_record(PDF, data_path("Line_#{version}.pdf")) if save
26+
background(255)
27+
no_fill
28+
stroke(0)
29+
stroke_weight(1)
30+
grid(height + 100, width + 100, 50, 50) do |cy, cx|
31+
begin_shape
32+
(0..360).step(THETA) do |angle|
33+
x = (DegLut.cos(angle) * 60) + cx
34+
y = (DegLut.sin(angle) * 60) + cy
35+
noise_value = noise_generator.call(x, y, millis / 5_000.0)
36+
x += noise_value
37+
y += noise_value
38+
vertex(x, y)
39+
end
40+
end_shape(CLOSE)
41+
end
42+
return unless save
43+
44+
end_record
45+
@version += 1
46+
@save = false
47+
end
48+
49+
def mouse_pressed
50+
@save = true
51+
end
52+
53+
def settings
54+
size(1000, 1000)
55+
end
56+
end
57+
58+
DecagonGrid.new

contributed/terrain.rb

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ def eql?(key)
88
key.x == x
99
end
1010
end
11-
# The propane sketch
11+
# The propane sketch press mouse to use SimpleNoise
1212
class Terrain < Propane::App
1313
WIDTH = 1400
1414
HEIGHT = 1100
@@ -43,7 +43,7 @@ def draw
4343
stroke 235, 69, 129
4444
translate width / 2, height / 2
4545
rotate_x PI / 3
46-
translate(-WIDTH / 2, -HEIGHT / 2)
46+
translate(-WIDTH / 2, -HEIGHT / 2)
4747
(0...rows).each do |y|
4848
begin_shape(TRIANGLE_STRIP)
4949
(0..columns).each do |x|
@@ -54,6 +54,18 @@ def draw
5454
end
5555
end
5656

57+
def mouse_pressed
58+
mode = Propane::SIMPLEX
59+
noise_mode mode
60+
sketch_title "#{mode}"
61+
end
62+
63+
def mouse_released
64+
mode = Propane::VALUE
65+
noise_mode(mode)
66+
sketch_title "#{mode}"
67+
end
68+
5769
private
5870

5971
def renderer
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
#!/usr/bin/env jruby -w
2+
require 'propane'
3+
require 'toxiclibs'
4+
java_import 'toxi.geom.Circle'
5+
6+
class CircleResolution < Propane::App
7+
attr_reader :gfx
8+
def setup
9+
sketch_title 'Circle Resolution'
10+
@gfx = Gfx::ToxiclibsSupport.new(self)
11+
end
12+
13+
def draw
14+
background(0)
15+
no_stroke
16+
fill(255)
17+
res = map1d(mouse_x, 0..width, 3..72)
18+
poly = Circle.new(TVec2D.new(width / 2, height / 2), 200).toPolygon2D(res)
19+
gfx.polygon2D(poly)
20+
fill(255, 0, 0)
21+
poly.each { |vertex| gfx.circle(vertex, 5) }
22+
text(res, 20, 20)
23+
end
24+
25+
def settings
26+
size(600, 600)
27+
smooth 8
28+
end
29+
end
30+
31+
CircleResolution.new

external_library/gem/toxiclibs/geometry/voronoi1.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ def draw
2121
smooth
2222
stroke_weight 1
2323
stroke 255
24-
voronoi.get_regions.each { |polygon| gfx.polygon2D(polygon) }
24+
voronoi.get_regions.each { |polygon| gfx.polygon2D(polygon) }
2525
save_frame(data_path('voronoi-001.png'))
2626
end
2727

Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
require 'propane'
2+
3+
class DemoNoise < Propane::App
4+
attr_reader :z
5+
6+
def setup
7+
sketch_title 'Demo noise_mode'
8+
stroke(255, 64)
9+
@z = 0
10+
end
11+
12+
def draw
13+
noise_scale = 0.01
14+
background(0)
15+
grid(width, height, 10, 10) do |x, y|
16+
arrow(x, y, noise(x * noise_scale, y * noise_scale, z * noise_scale) * TWO_PI * 2)
17+
end
18+
@z += 1
19+
end
20+
21+
def mouse_pressed
22+
mode = Propane::SIMPLEX
23+
noise_mode mode
24+
sketch_title "#{mode}"
25+
end
26+
27+
def mouse_released
28+
mode = Propane::VALUE
29+
noise_mode(mode)
30+
sketch_title "#{mode}"
31+
end
32+
33+
34+
def arrow(x, y, ang)
35+
pushMatrix()
36+
translate(x, y)
37+
rotate(ang)
38+
line(0, 0, 20, 0)
39+
translate(20, 0)
40+
rotate(PI + 0.4)
41+
line(0, 0, 5, 0)
42+
rotate(-0.8)
43+
line(0, 0, 5, 0)
44+
popMatrix()
45+
end
46+
47+
def settings
48+
size(600, 400, P2D)
49+
end
50+
end
51+
52+
DemoNoise.new

0 commit comments

Comments
 (0)