ruby-processing 1.0.2 → 1.0.3
Sign up to get free protection for your applications and to get access to all the features.
- data/CHANGELOG +12 -0
- data/lib/ruby-processing.rb +2 -1
- data/lib/ruby-processing/app.rb +7 -5
- data/lib/ruby-processing/exporters/creator.rb +7 -4
- data/lib/ruby-processing/helpers/numeric.rb +11 -0
- data/lib/ruby-processing/helpers/string.rb +8 -0
- data/lib/ruby-processing/runner.rb +11 -10
- data/lib/ruby-processing/runners/watch.rb +33 -0
- data/samples/bezier_playground.rb +243 -0
- data/samples/flight_patterns.rb +1 -1
- data/samples/learning_processing/chapter_16/01_display_video.rb +1 -1
- data/samples/learning_processing/chapter_16/02_manipulate_video_image.rb +1 -1
- data/samples/processing_app/basics/arrays/array.rb +41 -0
- data/samples/processing_app/basics/arrays/array_2d.rb +38 -0
- data/samples/processing_app/basics/arrays/array_objects.rb +67 -0
- data/samples/processing_app/basics/color/brightness.rb +30 -0
- data/samples/processing_app/basics/color/color_wheel.rb +97 -0
- data/samples/processing_app/basics/color/creating.rb +37 -0
- data/samples/processing_app/basics/color/hue.rb +29 -0
- data/samples/processing_app/basics/color/linear_gradient.rb +47 -0
- data/samples/processing_app/basics/color/radial_gradient.rb +52 -0
- data/samples/processing_app/basics/color/reading/data/cait.jpg +0 -0
- data/samples/processing_app/basics/color/reading/reading.rb +43 -0
- data/samples/processing_app/basics/color/relativity.rb +38 -0
- data/samples/processing_app/basics/color/saturation.rb +35 -0
- data/samples/processing_app/basics/color/wave_gradient.rb +45 -0
- data/samples/processing_app/basics/control/conditionals1.rb +51 -0
- data/samples/processing_app/basics/control/conditionals2.rb +44 -0
- data/samples/processing_app/basics/control/embedded_iteration.rb +42 -0
- data/samples/processing_app/basics/control/iteration.rb +61 -0
- data/samples/processing_app/basics/control/logical_operators.rb +59 -0
- data/samples/processing_app/basics/data/characters_strings/characters_strings.rb +87 -0
- data/samples/processing_app/basics/data/characters_strings/data/Eureka-90.vlw +0 -0
- data/samples/processing_app/basics/data/characters_strings/data/rathausFrog.jpg +0 -0
- data/samples/processing_app/basics/data/datatype_conversion.rb +45 -0
- data/samples/processing_app/basics/data/integers_floats.rb +34 -0
- data/samples/processing_app/basics/data/true_false.rb +37 -0
- data/samples/processing_app/basics/data/variable_scope.rb +80 -0
- data/samples/processing_app/basics/data/variables.rb +40 -0
- data/samples/processing_app/basics/form/bezier.rb +23 -0
- data/samples/processing_app/basics/form/bezier_ellipse.rb +110 -0
- data/samples/processing_app/basics/form/pie_chart.rb +31 -0
- data/samples/processing_app/basics/form/points_lines.rb +37 -0
- data/samples/processing_app/basics/form/shape_primitives.rb +25 -0
- data/samples/processing_app/basics/form/triangle_strip.rb +43 -0
- data/samples/processing_app/basics/form/vertices.rb +51 -0
- data/samples/processing_app/basics/image/alphamask.rb +23 -0
- data/samples/processing_app/basics/image/background_image.rb +30 -0
- data/samples/processing_app/basics/image/create_image.rb +23 -0
- data/samples/processing_app/basics/image/data/construct.jpg +0 -0
- data/samples/processing_app/basics/image/data/eames.jpg +0 -0
- data/samples/processing_app/basics/image/data/jelly.jpg +0 -0
- data/samples/processing_app/basics/image/data/mask.jpg +0 -0
- data/samples/processing_app/basics/image/data/milan_rubbish.jpg +0 -0
- data/samples/processing_app/basics/image/data/teddy.gif +0 -0
- data/samples/processing_app/basics/image/data/test.jpg +0 -0
- data/samples/processing_app/basics/image/data/wash.jpg +0 -0
- data/samples/processing_app/basics/image/load_display_image.rb +25 -0
- data/samples/processing_app/basics/image/pointillism.rb +30 -0
- data/samples/processing_app/basics/image/request_image.rb +71 -0
- data/samples/processing_app/basics/image/sprite.rb +38 -0
- data/samples/processing_app/basics/image/transparency.rb +27 -0
- data/samples/processing_app/basics/input/clock.rb +46 -0
- data/samples/processing_app/basics/input/constrain.rb +39 -0
- data/samples/processing_app/basics/input/easing.rb +33 -0
- data/samples/processing_app/basics/input/keyboard.rb +36 -0
- data/samples/processing_app/basics/input/keyboard_2.rb +45 -0
- data/samples/processing_app/basics/input/keyboard_functions.rb +87 -0
- data/samples/processing_app/basics/input/milliseconds.rb +25 -0
- data/samples/processing_app/basics/input/mouse_1d.rb +34 -0
- data/samples/processing_app/basics/input/mouse_2d.rb +25 -0
- data/samples/processing_app/basics/input/mouse_functions.rb +73 -0
- data/samples/processing_app/basics/input/mouse_press.rb +21 -0
- data/samples/processing_app/basics/input/mouse_signals.rb +45 -0
- data/samples/processing_app/basics/input/storing_input.rb +39 -0
- data/samples/processing_app/basics/math/additive_wave.rb +66 -0
- data/samples/processing_app/basics/math/arctangent.rb +54 -0
- data/samples/processing_app/topics/simulate/chain.rb +82 -0
- data/samples/processing_app/topics/simulate/multiple_particle_systems.rb +166 -0
- data/samples/processing_app/topics/simulate/simple_particle_system.rb +113 -0
- data/samples/processing_app/topics/simulate/spring.rb +85 -0
- data/samples/processing_app/topics/simulate/springs.rb +125 -0
- metadata +93 -2
@@ -0,0 +1,85 @@
|
|
1
|
+
require 'ruby-processing'
|
2
|
+
|
3
|
+
#
|
4
|
+
# Ported from http://www.processing.org/learning/topics/spring.html
|
5
|
+
#
|
6
|
+
# Click, drag, and release the horizontal bar to start the spring.
|
7
|
+
#
|
8
|
+
class Spring < Processing::App
|
9
|
+
|
10
|
+
def setup
|
11
|
+
rect_mode CORNERS
|
12
|
+
no_stroke
|
13
|
+
|
14
|
+
@s_height = 16 # Height
|
15
|
+
@left = 50 # Left position
|
16
|
+
@right = 150 # Right position
|
17
|
+
@max = 100 # Maximum Y value
|
18
|
+
@min = 20 # Minimum Y value
|
19
|
+
@over = false # If mouse over
|
20
|
+
@move = false # If mouse down and over
|
21
|
+
|
22
|
+
# Spring simulation constants
|
23
|
+
@M = 0.8 # Mass
|
24
|
+
@K = 0.2 # Spring constant
|
25
|
+
@D = 0.92 # Damping
|
26
|
+
@R = 60 # Rest position
|
27
|
+
|
28
|
+
# Spring simulation variables
|
29
|
+
@ps = 60.0 # Position
|
30
|
+
@vs = 0.0 # Velocity
|
31
|
+
@as = 0 # Acceleration
|
32
|
+
@f = 0 # Force
|
33
|
+
end
|
34
|
+
|
35
|
+
def draw
|
36
|
+
background 102
|
37
|
+
update_spring
|
38
|
+
draw_spring
|
39
|
+
end
|
40
|
+
|
41
|
+
def draw_spring
|
42
|
+
# Draw base
|
43
|
+
fill 0.2
|
44
|
+
b_width = 0.5 * @ps + -8
|
45
|
+
rect(width/2 - b_width, @ps + @s_height, width/2 + b_width, 150)
|
46
|
+
|
47
|
+
# Set color and draw top bar
|
48
|
+
fill (@over || @move) ? 255 : 204
|
49
|
+
rect @left, @ps, @right, @ps + @s_height
|
50
|
+
end
|
51
|
+
|
52
|
+
def update_spring
|
53
|
+
# Update the spring position
|
54
|
+
if (!@move)
|
55
|
+
@f = -1 * @K * (@ps - @R) # f=-ky
|
56
|
+
@as = @f / @M # Set the acceleration, f=ma == a=f/m
|
57
|
+
@vs = @D * (@vs + @as) # Set the velocity
|
58
|
+
@ps = @ps + @vs # Updated position
|
59
|
+
end
|
60
|
+
@vs = 0.0 if @vs.abs < 0.1
|
61
|
+
|
62
|
+
# Test if mouse is over the top bar
|
63
|
+
within_x = (@left..@right).include?(mouse_x)
|
64
|
+
within_y = (@ps..@ps+@s_height).include?(mouse_y)
|
65
|
+
@over = within_x && within_y
|
66
|
+
|
67
|
+
# Set and constrain the position of top bar
|
68
|
+
if (@move)
|
69
|
+
@ps = mouseY - @s_height/2
|
70
|
+
@ps = @min if (@ps < @min)
|
71
|
+
@ps = @max if (@ps > @max)
|
72
|
+
end
|
73
|
+
end
|
74
|
+
|
75
|
+
def mouse_pressed
|
76
|
+
@move = true if @over
|
77
|
+
end
|
78
|
+
|
79
|
+
def mouse_released
|
80
|
+
@move = false
|
81
|
+
end
|
82
|
+
|
83
|
+
end
|
84
|
+
|
85
|
+
Spring.new(:width => 200, :height => 200, :title => "Spring", :full_screen => false)
|
@@ -0,0 +1,125 @@
|
|
1
|
+
require 'ruby-processing'
|
2
|
+
|
3
|
+
#
|
4
|
+
# Ported from http://www.processing.org/learning/topics/springs.html
|
5
|
+
#
|
6
|
+
# Move the mouse over one of the circles and click to re-position. When you release the mouse, it will
|
7
|
+
# snap back into position. Each circle has a slightly different behavior.
|
8
|
+
#
|
9
|
+
class Springs < Processing::App
|
10
|
+
|
11
|
+
def setup
|
12
|
+
no_stroke
|
13
|
+
smooth
|
14
|
+
|
15
|
+
@springs = []
|
16
|
+
@springs << Spring.new(self, 70, 160, 20, 0.98, 8.0, 0.1, @springs, 0)
|
17
|
+
@springs << Spring.new(self, 150, 110, 60, 0.95, 9.0, 0.1, @springs, 1)
|
18
|
+
@springs << Spring.new(self, 40, 70, 120, 0.90, 9.9, 0.1, @springs, 2)
|
19
|
+
end
|
20
|
+
|
21
|
+
def draw
|
22
|
+
background(51)
|
23
|
+
@springs.each do |sp|
|
24
|
+
sp.update
|
25
|
+
sp.display
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
def mouse_pressed
|
30
|
+
@springs.each {|x| x.pressed}
|
31
|
+
end
|
32
|
+
|
33
|
+
def mouse_released
|
34
|
+
@springs.each {|x| x.released}
|
35
|
+
end
|
36
|
+
|
37
|
+
end
|
38
|
+
|
39
|
+
class Spring
|
40
|
+
|
41
|
+
def initialize(app, x, y, s, d, m, k, others, id)
|
42
|
+
@app = app
|
43
|
+
|
44
|
+
# Screen values
|
45
|
+
@xpos = @tempxpos = x
|
46
|
+
@ypos = @tempypos = y
|
47
|
+
@rest_posx = x # Rest position X
|
48
|
+
@rest_posy = y # Rest position Y
|
49
|
+
@size = s
|
50
|
+
@damp = d # Damping
|
51
|
+
|
52
|
+
# Spring simulation constants
|
53
|
+
@mass = m # Mass
|
54
|
+
@kin = k # Spring constant
|
55
|
+
@friends = others
|
56
|
+
@me = id # Index of me in @friends
|
57
|
+
@over = false
|
58
|
+
@move = false
|
59
|
+
|
60
|
+
# Spring simulation variables
|
61
|
+
@velx = 0.0 # X Velocity
|
62
|
+
@vely = 0.0 # Y Velocity
|
63
|
+
@accel = 0 # Acceleration
|
64
|
+
@force = 0 # Force
|
65
|
+
end
|
66
|
+
|
67
|
+
def update
|
68
|
+
if (@move)
|
69
|
+
@rest_posx = @app.mouse_x
|
70
|
+
@rest_posy = @app.mouse_y
|
71
|
+
end
|
72
|
+
|
73
|
+
@force = -1 * @kin * (@tempypos - @rest_posy) # f=-ky
|
74
|
+
@accel = @force / @mass # Set the acceleration, f=ma == a=f/m
|
75
|
+
@vely = @damp * (@vely + @accel); # Set the velocity
|
76
|
+
@tempypos = @tempypos + @vely; # Updated position
|
77
|
+
|
78
|
+
@force = -1 * @kin * (@tempxpos - @rest_posx) # f=-ky
|
79
|
+
@accel = @force / @mass; # Set the acceleration, f=ma == a=f/m
|
80
|
+
@velx = @damp * (@velx + @accel); # Set the velocity
|
81
|
+
@tempxpos = @tempxpos + @velx; # Updated position
|
82
|
+
|
83
|
+
@over = ((over? || @move) && !other_over?)
|
84
|
+
end
|
85
|
+
|
86
|
+
# Test to see if mouse is over this spring
|
87
|
+
def over?
|
88
|
+
dis_x = @tempxpos - @app.mouse_x
|
89
|
+
dis_y = @tempypos - @app.mouse_y
|
90
|
+
Math::sqrt(@app.sq(dis_x) + @app.sq(dis_y)) < @size/2
|
91
|
+
end
|
92
|
+
|
93
|
+
# Make sure no other springs are active
|
94
|
+
def other_over?
|
95
|
+
@friends.each_with_index do |f, i|
|
96
|
+
if (i != @me)
|
97
|
+
if f.over?
|
98
|
+
return true
|
99
|
+
end
|
100
|
+
end
|
101
|
+
end
|
102
|
+
return false
|
103
|
+
end
|
104
|
+
|
105
|
+
def display
|
106
|
+
if (over?)
|
107
|
+
@app.fill(153)
|
108
|
+
else
|
109
|
+
@app.fill(255)
|
110
|
+
end
|
111
|
+
@app.ellipse(@tempxpos, @tempypos, @size, @size)
|
112
|
+
end
|
113
|
+
|
114
|
+
def pressed
|
115
|
+
@move = over?
|
116
|
+
end
|
117
|
+
|
118
|
+
def released
|
119
|
+
@move = false
|
120
|
+
@rest_posx = @xpos
|
121
|
+
@rest_posy = @ypos
|
122
|
+
end
|
123
|
+
end
|
124
|
+
|
125
|
+
Springs.new(:width => 200, :height => 200, :title => "Springs", :full_screen => false)
|
metadata
CHANGED
@@ -1,18 +1,22 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ruby-processing
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jeremy Ashkenas
|
8
8
|
- Peter Gassner
|
9
9
|
- Martin Stannard
|
10
10
|
- Andrew Nanton
|
11
|
+
- Marc Chung
|
12
|
+
- Peter Krenn
|
13
|
+
- Florian Jenett
|
14
|
+
- Andreas Haller
|
11
15
|
autorequire:
|
12
16
|
bindir: bin
|
13
17
|
cert_chain: []
|
14
18
|
|
15
|
-
date: 2009-
|
19
|
+
date: 2009-03-03 00:00:00 -05:00
|
16
20
|
default_executable: rp5
|
17
21
|
dependencies: []
|
18
22
|
|
@@ -39,6 +43,7 @@ files:
|
|
39
43
|
- lib/ruby-processing/exporters/base_exporter.rb
|
40
44
|
- lib/ruby-processing/exporters/creator.rb
|
41
45
|
- lib/ruby-processing/helpers
|
46
|
+
- lib/ruby-processing/helpers/numeric.rb
|
42
47
|
- lib/ruby-processing/helpers/string.rb
|
43
48
|
- lib/ruby-processing/runner.rb
|
44
49
|
- lib/ruby-processing/runners
|
@@ -177,6 +182,7 @@ files:
|
|
177
182
|
- library/video/library
|
178
183
|
- library/video/library/video.jar
|
179
184
|
- samples/animator.rb
|
185
|
+
- samples/bezier_playground.rb
|
180
186
|
- samples/circle_collision.rb
|
181
187
|
- samples/fern.rb
|
182
188
|
- samples/flight_patterns.rb
|
@@ -318,11 +324,96 @@ files:
|
|
318
324
|
- samples/processing_app/3D/typography/data/Univers66.vlw.gz
|
319
325
|
- samples/processing_app/3D/typography/kinetic_type.rb
|
320
326
|
- samples/processing_app/ABOUT
|
327
|
+
- samples/processing_app/basics
|
328
|
+
- samples/processing_app/basics/arrays
|
329
|
+
- samples/processing_app/basics/arrays/array.rb
|
330
|
+
- samples/processing_app/basics/arrays/array_2d.rb
|
331
|
+
- samples/processing_app/basics/arrays/array_objects.rb
|
332
|
+
- samples/processing_app/basics/color
|
333
|
+
- samples/processing_app/basics/color/brightness.rb
|
334
|
+
- samples/processing_app/basics/color/color_wheel.rb
|
335
|
+
- samples/processing_app/basics/color/creating.rb
|
336
|
+
- samples/processing_app/basics/color/hue.rb
|
337
|
+
- samples/processing_app/basics/color/linear_gradient.rb
|
338
|
+
- samples/processing_app/basics/color/radial_gradient.rb
|
339
|
+
- samples/processing_app/basics/color/reading
|
340
|
+
- samples/processing_app/basics/color/reading/data
|
341
|
+
- samples/processing_app/basics/color/reading/data/cait.jpg
|
342
|
+
- samples/processing_app/basics/color/reading/reading.rb
|
343
|
+
- samples/processing_app/basics/color/relativity.rb
|
344
|
+
- samples/processing_app/basics/color/saturation.rb
|
345
|
+
- samples/processing_app/basics/color/wave_gradient.rb
|
346
|
+
- samples/processing_app/basics/control
|
347
|
+
- samples/processing_app/basics/control/conditionals1.rb
|
348
|
+
- samples/processing_app/basics/control/conditionals2.rb
|
349
|
+
- samples/processing_app/basics/control/embedded_iteration.rb
|
350
|
+
- samples/processing_app/basics/control/iteration.rb
|
351
|
+
- samples/processing_app/basics/control/logical_operators.rb
|
352
|
+
- samples/processing_app/basics/data
|
353
|
+
- samples/processing_app/basics/data/characters_strings
|
354
|
+
- samples/processing_app/basics/data/characters_strings/characters_strings.rb
|
355
|
+
- samples/processing_app/basics/data/characters_strings/data
|
356
|
+
- samples/processing_app/basics/data/characters_strings/data/Eureka-90.vlw
|
357
|
+
- samples/processing_app/basics/data/characters_strings/data/rathausFrog.jpg
|
358
|
+
- samples/processing_app/basics/data/datatype_conversion.rb
|
359
|
+
- samples/processing_app/basics/data/integers_floats.rb
|
360
|
+
- samples/processing_app/basics/data/true_false.rb
|
361
|
+
- samples/processing_app/basics/data/variable_scope.rb
|
362
|
+
- samples/processing_app/basics/data/variables.rb
|
363
|
+
- samples/processing_app/basics/form
|
364
|
+
- samples/processing_app/basics/form/bezier.rb
|
365
|
+
- samples/processing_app/basics/form/bezier_ellipse.rb
|
366
|
+
- samples/processing_app/basics/form/pie_chart.rb
|
367
|
+
- samples/processing_app/basics/form/points_lines.rb
|
368
|
+
- samples/processing_app/basics/form/shape_primitives.rb
|
369
|
+
- samples/processing_app/basics/form/triangle_strip.rb
|
370
|
+
- samples/processing_app/basics/form/vertices.rb
|
371
|
+
- samples/processing_app/basics/image
|
372
|
+
- samples/processing_app/basics/image/alphamask.rb
|
373
|
+
- samples/processing_app/basics/image/background_image.rb
|
374
|
+
- samples/processing_app/basics/image/create_image.rb
|
375
|
+
- samples/processing_app/basics/image/data
|
376
|
+
- samples/processing_app/basics/image/data/construct.jpg
|
377
|
+
- samples/processing_app/basics/image/data/eames.jpg
|
378
|
+
- samples/processing_app/basics/image/data/jelly.jpg
|
379
|
+
- samples/processing_app/basics/image/data/mask.jpg
|
380
|
+
- samples/processing_app/basics/image/data/milan_rubbish.jpg
|
381
|
+
- samples/processing_app/basics/image/data/teddy.gif
|
382
|
+
- samples/processing_app/basics/image/data/test.jpg
|
383
|
+
- samples/processing_app/basics/image/data/wash.jpg
|
384
|
+
- samples/processing_app/basics/image/load_display_image.rb
|
385
|
+
- samples/processing_app/basics/image/pointillism.rb
|
386
|
+
- samples/processing_app/basics/image/request_image.rb
|
387
|
+
- samples/processing_app/basics/image/sprite.rb
|
388
|
+
- samples/processing_app/basics/image/transparency.rb
|
389
|
+
- samples/processing_app/basics/input
|
390
|
+
- samples/processing_app/basics/input/clock.rb
|
391
|
+
- samples/processing_app/basics/input/constrain.rb
|
392
|
+
- samples/processing_app/basics/input/easing.rb
|
393
|
+
- samples/processing_app/basics/input/keyboard.rb
|
394
|
+
- samples/processing_app/basics/input/keyboard_2.rb
|
395
|
+
- samples/processing_app/basics/input/keyboard_functions.rb
|
396
|
+
- samples/processing_app/basics/input/milliseconds.rb
|
397
|
+
- samples/processing_app/basics/input/mouse_1d.rb
|
398
|
+
- samples/processing_app/basics/input/mouse_2d.rb
|
399
|
+
- samples/processing_app/basics/input/mouse_functions.rb
|
400
|
+
- samples/processing_app/basics/input/mouse_press.rb
|
401
|
+
- samples/processing_app/basics/input/mouse_signals.rb
|
402
|
+
- samples/processing_app/basics/input/storing_input.rb
|
403
|
+
- samples/processing_app/basics/math
|
404
|
+
- samples/processing_app/basics/math/additive_wave.rb
|
405
|
+
- samples/processing_app/basics/math/arctangent.rb
|
321
406
|
- samples/processing_app/topics
|
322
407
|
- samples/processing_app/topics/effects
|
323
408
|
- samples/processing_app/topics/effects/data
|
324
409
|
- samples/processing_app/topics/effects/data/red_smoke.jpg
|
325
410
|
- samples/processing_app/topics/effects/lens.rb
|
411
|
+
- samples/processing_app/topics/simulate
|
412
|
+
- samples/processing_app/topics/simulate/chain.rb
|
413
|
+
- samples/processing_app/topics/simulate/multiple_particle_systems.rb
|
414
|
+
- samples/processing_app/topics/simulate/simple_particle_system.rb
|
415
|
+
- samples/processing_app/topics/simulate/spring.rb
|
416
|
+
- samples/processing_app/topics/simulate/springs.rb
|
326
417
|
- samples/reflection.rb
|
327
418
|
- samples/simple_buffer.rb
|
328
419
|
- samples/tree.rb
|