ruby-processing 1.0.4 → 1.0.5

Sign up to get free protection for your applications and to get access to all the features.
Files changed (136) hide show
  1. data/CHANGELOG +8 -0
  2. data/lib/patches/JRubyApplet.diff +0 -0
  3. data/lib/patches/PATCHES.txt +0 -0
  4. data/lib/patches/PApplet.diff +0 -0
  5. data/lib/ruby-processing.rb +1 -1
  6. data/lib/ruby-processing/app.rb +20 -1
  7. data/lib/ruby-processing/exporters/base_exporter.rb +1 -1
  8. data/lib/ruby-processing/exporters/creator.rb +1 -2
  9. data/lib/ruby-processing/runner.rb +4 -3
  10. data/lib/ruby-processing/runners/watch.rb +2 -2
  11. data/lib/templates/applet/index.html.erb +1 -1
  12. metadata +2 -145
  13. data/samples/learning_processing/ABOUT +0 -11
  14. data/samples/learning_processing/chapter_01/1_stroke_and_fill.rb +0 -18
  15. data/samples/learning_processing/chapter_01/2_nofill.rb +0 -20
  16. data/samples/learning_processing/chapter_01/3_rgb_color.rb +0 -19
  17. data/samples/learning_processing/chapter_01/4_alpha_transparency.rb +0 -42
  18. data/samples/learning_processing/chapter_01/5_zoog.rb +0 -24
  19. data/samples/learning_processing/chapter_02/1_zoog_again.rb +0 -41
  20. data/samples/learning_processing/chapter_03/1_zoog_as_dynamic_sketch.rb +0 -44
  21. data/samples/learning_processing/chapter_03/2_mouse_x_and_mouse_y.rb +0 -26
  22. data/samples/learning_processing/chapter_03/3_zoog_as_dynamic_sketch_with_variation.rb +0 -41
  23. data/samples/learning_processing/chapter_03/4_drawing_a_continuous_line.rb +0 -18
  24. data/samples/learning_processing/chapter_03/5_mouse_pressed_and_key_pressed.rb +0 -29
  25. data/samples/learning_processing/chapter_03/6_interactive_zoog.rb +0 -42
  26. data/samples/learning_processing/chapter_04/1_variable_declaration.rb +0 -24
  27. data/samples/learning_processing/chapter_04/2_using_variables.rb +0 -27
  28. data/samples/learning_processing/chapter_04/3_varying_variables.rb +0 -27
  29. data/samples/learning_processing/chapter_04/4_many_variables.rb +0 -38
  30. data/samples/learning_processing/chapter_04/5_using_system_variables.rb +0 -28
  31. data/samples/learning_processing/chapter_04/6_ellipse_with_variables.rb +0 -24
  32. data/samples/learning_processing/chapter_04/7_filling_variables_with_random_values.rb +0 -27
  33. data/samples/learning_processing/chapter_04/8_variable_zoog.rb +0 -50
  34. data/samples/learning_processing/chapter_05/01_conditionals.rb +0 -31
  35. data/samples/learning_processing/chapter_05/02_more_conditionals.rb +0 -38
  36. data/samples/learning_processing/chapter_05/03_rollovers.rb +0 -34
  37. data/samples/learning_processing/chapter_05/04_hold_down_the_button.rb +0 -33
  38. data/samples/learning_processing/chapter_05/05_button_as_switch.rb +0 -39
  39. data/samples/learning_processing/chapter_05/06_bouncing_ball.rb +0 -33
  40. data/samples/learning_processing/chapter_05/07_bouncing_color.rb +0 -37
  41. data/samples/learning_processing/chapter_05/08_square_following_edge.rb +0 -59
  42. data/samples/learning_processing/chapter_05/09_simple_gravity.rb +0 -43
  43. data/samples/learning_processing/chapter_05/10_zoog_and_conditionals.rb +0 -53
  44. data/samples/learning_processing/chapter_06/01_many_lines.rb +0 -29
  45. data/samples/learning_processing/chapter_06/02_many_lines_with_variables.rb +0 -53
  46. data/samples/learning_processing/chapter_06/03_while_loop.rb +0 -30
  47. data/samples/learning_processing/chapter_06/04_infinite_loop.rb +0 -25
  48. data/samples/learning_processing/chapter_06/05_another_infinite_loop.rb +0 -33
  49. data/samples/learning_processing/chapter_06/06_legs_with_a_for_loop.rb +0 -41
  50. data/samples/learning_processing/chapter_06/07_local_variables.rb +0 -39
  51. data/samples/learning_processing/chapter_06/08_lines_one_at_a_time.rb +0 -30
  52. data/samples/learning_processing/chapter_06/09_simple_while_loop_with_interactivity.rb +0 -41
  53. data/samples/learning_processing/chapter_06/10_zoog_with_arms.rb +0 -56
  54. data/samples/learning_processing/chapter_06/11_multiple_zoogs.rb +0 -46
  55. data/samples/learning_processing/chapter_07/01_defining_a_function.rb +0 -22
  56. data/samples/learning_processing/chapter_07/02_calling_a_function.rb +0 -22
  57. data/samples/learning_processing/chapter_07/03_bouncing_ball_with_functions.rb +0 -49
  58. data/samples/learning_processing/chapter_07/04_function_returns_distance.rb +0 -48
  59. data/samples/learning_processing/chapter_07/05_zoog_with_functions.rb +0 -71
  60. data/samples/learning_processing/chapter_08/01_car_class_and_car_variable.rb +0 -45
  61. data/samples/learning_processing/chapter_08/02_two_car_objects.rb +0 -60
  62. data/samples/learning_processing/chapter_08/03_object_oriented_zoog.rb +0 -81
  63. data/samples/learning_processing/chapter_10/01_catcher.rb +0 -35
  64. data/samples/learning_processing/chapter_10/02_bouncing_ball.rb +0 -44
  65. data/samples/learning_processing/chapter_10/03_bouncing_balls_with_intersection.rb +0 -69
  66. data/samples/learning_processing/chapter_10/04_a_timer.rb +0 -24
  67. data/samples/learning_processing/chapter_10/05_object_oriented_timer.rb +0 -42
  68. data/samples/learning_processing/chapter_10/06_simple_raindrop.rb +0 -23
  69. data/samples/learning_processing/chapter_10/07_drops_one_at_a_time.rb +0 -63
  70. data/samples/learning_processing/chapter_13/02_random_number_distribution.rb +0 -24
  71. data/samples/learning_processing/chapter_13/03_probabilities.rb +0 -33
  72. data/samples/learning_processing/chapter_13/04_perlin_noise.rb +0 -22
  73. data/samples/learning_processing/chapter_13/06_oscillation.rb +0 -29
  74. data/samples/learning_processing/chapter_13/07_wave.rb +0 -31
  75. data/samples/learning_processing/chapter_13/08_recursion.rb +0 -30
  76. data/samples/learning_processing/chapter_13/09_two_dimensional_array.rb +0 -21
  77. data/samples/learning_processing/chapter_13/10_two_dimensional_array_with_objects.rb +0 -54
  78. data/samples/learning_processing/chapter_14/01_growing_rectangle.rb +0 -26
  79. data/samples/learning_processing/chapter_14/02_multiple_translations.rb +0 -37
  80. data/samples/learning_processing/chapter_14/03_depth_rectangle.rb +0 -29
  81. data/samples/learning_processing/chapter_14/04_pyramid_using_beingshape.rb +0 -55
  82. data/samples/learning_processing/chapter_14/05_rotate_rectangle_around_center.rb +0 -28
  83. data/samples/learning_processing/chapter_14/06_rotate_z.rb +0 -24
  84. data/samples/learning_processing/chapter_14/07_rotate_x.rb +0 -24
  85. data/samples/learning_processing/chapter_14/08_rotate_y.rb +0 -24
  86. data/samples/learning_processing/chapter_14/09_rotate_all.rb +0 -24
  87. data/samples/learning_processing/chapter_14/10_draw_pyramid.rb +0 -59
  88. data/samples/learning_processing/chapter_14/12_rotating_one_square.rb +0 -25
  89. data/samples/learning_processing/chapter_14/13_rotating_another_square.rb +0 -25
  90. data/samples/learning_processing/chapter_14/14_rotating_both_squares.rb +0 -43
  91. data/samples/learning_processing/chapter_14/15_rotating_many_things.rb +0 -56
  92. data/samples/learning_processing/chapter_14/16_simple_solar_system.rb +0 -53
  93. data/samples/learning_processing/chapter_14/17_nested_push_and_pop.rb +0 -50
  94. data/samples/learning_processing/chapter_14/18_object_oriented_solar_system.rb +0 -69
  95. data/samples/learning_processing/chapter_15/01_hello_world_image.rb +0 -20
  96. data/samples/learning_processing/chapter_15/02_image_sprite.rb +0 -29
  97. data/samples/learning_processing/chapter_15/03_swapping_images.rb +0 -25
  98. data/samples/learning_processing/chapter_15/04_image_sequence.rb +0 -22
  99. data/samples/learning_processing/chapter_15/05_setting_pixels.rb +0 -19
  100. data/samples/learning_processing/chapter_15/06_pixels_2d.rb +0 -29
  101. data/samples/learning_processing/chapter_15/07_image_pixels.rb +0 -40
  102. data/samples/learning_processing/chapter_15/08_image_brightness.rb +0 -29
  103. data/samples/learning_processing/chapter_15/09_flashlight_effect.rb +0 -42
  104. data/samples/learning_processing/chapter_15/10_brightness_threshold.rb +0 -33
  105. data/samples/learning_processing/chapter_15/11_brightness_threshold_with_filter.rb +0 -20
  106. data/samples/learning_processing/chapter_15/12_pixel_neighbour_differences.rb +0 -43
  107. data/samples/learning_processing/chapter_15/14_pointillism.rb +0 -34
  108. data/samples/learning_processing/chapter_15/15_2d_image_mapped_to_3d.rb +0 -43
  109. data/samples/learning_processing/chapter_15/data/animal0.jpg +0 -0
  110. data/samples/learning_processing/chapter_15/data/animal1.jpg +0 -0
  111. data/samples/learning_processing/chapter_15/data/animal2.jpg +0 -0
  112. data/samples/learning_processing/chapter_15/data/animal3.jpg +0 -0
  113. data/samples/learning_processing/chapter_15/data/animal4.jpg +0 -0
  114. data/samples/learning_processing/chapter_15/data/animal5.jpg +0 -0
  115. data/samples/learning_processing/chapter_15/data/animal6.jpg +0 -0
  116. data/samples/learning_processing/chapter_15/data/face.jpg +0 -0
  117. data/samples/learning_processing/chapter_15/data/mysummervacation.jpg +0 -0
  118. data/samples/learning_processing/chapter_15/data/sunflower.jpg +0 -0
  119. data/samples/learning_processing/chapter_16/01_display_video.rb +0 -25
  120. data/samples/learning_processing/chapter_16/02_manipulate_video_image.rb +0 -24
  121. data/samples/learning_processing/chapter_16/03_adjust_video_brightness.rb +0 -49
  122. data/samples/learning_processing/chapter_17/01_simple_displaying_text.rb +0 -14
  123. data/samples/learning_processing/chapter_17/02_text_align.rb +0 -21
  124. data/samples/learning_processing/chapter_17/03_scrolling_headlines.rb +0 -35
  125. data/samples/learning_processing/chapter_17/04_text_mirror.rb +0 -68
  126. data/samples/learning_processing/chapter_17/05_rotating_text.rb +0 -22
  127. data/samples/learning_processing/chapter_17/06_text_breaking_up.rb +0 -73
  128. data/samples/learning_processing/chapter_17/07_boxes_along_a_curve.rb +0 -49
  129. data/samples/learning_processing/chapter_17/08_characters_along_a_curve.rb +0 -51
  130. data/samples/learning_processing/chapter_17/data/ArialMT-16.vlw +0 -0
  131. data/samples/learning_processing/chapter_17/data/Courier-Bold-20.vlw +0 -0
  132. data/samples/learning_processing/chapter_18/01_user_input.rb +0 -39
  133. data/samples/learning_processing/chapter_18/02_graphing_comma_separated_numbers_from_a_text_file.rb +0 -28
  134. data/samples/learning_processing/chapter_18/03_creating_object_from_a_text_file.rb +0 -64
  135. data/samples/learning_processing/chapter_18/data/data-1.txt +0 -1
  136. data/samples/learning_processing/chapter_18/data/data-2.txt +0 -10
@@ -1,69 +0,0 @@
1
- require 'ruby-processing'
2
-
3
- class BouncingBallsWithIntersection < Processing::App
4
- def setup
5
- smooth
6
- # Create two balls.
7
- @ball_1, @ball_2 = Ball.new(64), Ball.new(32)
8
- end
9
-
10
- def draw
11
- background 255
12
- @ball_1.move
13
- @ball_2.move
14
-
15
- # New! Methods on objects that you define can take each other as arguments.
16
- # This is one way to have objects communicate.
17
- # In this case they're checking to see if they intersect.
18
- if @ball_1.intersect(@ball_2)
19
- @ball_1.highlight
20
- @ball_2.highlight
21
- end
22
-
23
- @ball_1.display
24
- @ball_2.display
25
- end
26
- end
27
-
28
-
29
- class Ball
30
- # We use attr_reader to make the @x, @y and @r instance variables readable by other objects.
31
- attr_reader :x, :y, :r
32
-
33
- def initialize(temp_r)
34
- @r = temp_r
35
- @x, @y = rand($app.width), rand($app.height)
36
- @x_speed, @y_speed = (rand * 10 - 5), (rand * 10 - 5)
37
- @color = $app.color(100, 50)
38
- end
39
-
40
- def move
41
- @x += @x_speed # Move the ball horizontally
42
- @y += @y_speed # Move the ball vertically
43
-
44
- @x_speed *= -1 unless (0..$app.width).include?(@x)
45
- @y_speed *= -1 unless (0..$app.height).include?(@y)
46
- end
47
-
48
- def highlight
49
- @color = $app.color(0, 150)
50
- end
51
-
52
- def display
53
- $app.stroke 0
54
- $app.fill @color
55
- $app.ellipse @x, @y, @r*2, @r*2
56
- # After the ball is displayed, the color is reset back to a dark gray.
57
- @color = $app.color(100, 50)
58
- end
59
-
60
- # A function that returns true or false based on whether or not two circles intersect.
61
- # If distance is less than the sum of the radii, the circles touch.
62
- # Objects that you define can be passed as arguments too!
63
- def intersect(other_ball)
64
- distance = $app.dist(@x, @y, other_ball.x, other_ball.y)
65
- distance < @r + other_ball.r
66
- end
67
- end
68
-
69
- BouncingBallsWithIntersection.new :title => "Bouncing Balls with Intersection", :width => 400, :height => 400
@@ -1,24 +0,0 @@
1
- require 'ruby-processing'
2
-
3
- class Timer < Processing::App
4
-
5
- def setup
6
- background 0
7
- @total_time = 5000
8
- @saved_time = millis
9
- end
10
-
11
- def draw
12
- passed_time = millis - @saved_time
13
- # Has 5 seconds passed?
14
- if passed_time > @total_time
15
- puts "5 seconds have passed!"
16
- # Color a new background, and let's give it some color.
17
- background rand(255), rand(255), rand(255)
18
- @saved_time = millis # Save the current time to restart the timer!
19
- end
20
- end
21
-
22
- end
23
-
24
- Timer.new :title => "04 A Timer", :width => 200, :height => 200
@@ -1,42 +0,0 @@
1
- require 'ruby-processing'
2
-
3
- class ObjectOrientedTimer < Processing::App
4
-
5
- def setup
6
- background 0
7
- @timer = Timer.new(5000)
8
- @timer.start
9
- end
10
-
11
- def draw
12
- if @timer.is_finished?
13
- background rand(255)
14
- @timer.start
15
- end
16
- end
17
-
18
- end
19
-
20
-
21
- class Timer
22
- def initialize(total_time)
23
- @saved_time = nil # When it started
24
- @total_time = total_time # How long it should last
25
- end
26
-
27
- # When the timer starts it stores the current time in milliseconds
28
- def start
29
- @saved_time = $app.millis
30
- end
31
-
32
- # The method is_finished? returns true if 5 seconds have passed.
33
- # Most of the work of the timer is farmed out to this method.
34
- def is_finished?
35
- passed_time = $app.millis - @saved_time
36
- passed_time > @total_time
37
- end
38
-
39
-
40
- end
41
-
42
- ObjectOrientedTimer.new :title => "Object Oriented Timer", :width => 200, :height => 200
@@ -1,23 +0,0 @@
1
- require 'ruby-processing'
2
-
3
- class SimpleRaindrop < Processing::App
4
-
5
- def setup
6
- background 0
7
- @x, @y = width / 2, 0
8
- smooth
9
- no_stroke
10
- end
11
-
12
- def draw
13
- background 255
14
- # Show the drop
15
- fill 50, 100, 150
16
- ellipse @x, @y, 16, 16
17
- # Move the drop
18
- @y += 1
19
- end
20
-
21
- end
22
-
23
- SimpleRaindrop.new :title => "Simple Raindrop", :width => 400, :height => 400
@@ -1,63 +0,0 @@
1
- require 'ruby-processing'
2
-
3
- class DropsOneAtATime < Processing::App
4
-
5
- def setup
6
- @max_drops = 1000 # The most drops we're going to have at once.
7
- @drops = [] # An array to hold the drops
8
- no_stroke
9
- smooth
10
- end
11
-
12
- def draw
13
- background 255
14
- @drops << Drop.new # Create one drop
15
- # Start over when we have too many.
16
- @drops = [] if @drops.size > @max_drops
17
-
18
- # Move and display all the drops.
19
- # New! We no longer move and display all the drops, but rather,
20
- # only the ones that are still present in the @drops array.
21
- @drops.each do |drop|
22
- drop.move
23
- drop.display
24
- end
25
- end
26
-
27
- end
28
-
29
-
30
- class Drop
31
- def initialize
32
- @r = 8 # All raindrops are the same size
33
- @x = rand($app.width) # Start with a random x location
34
- @y = -@r * 4 # Start a little above the window
35
- @speed = rand * 4 + 1 # Pick a random speed
36
- @color = $app.color(50, 100, 150)
37
- end
38
-
39
- # Move the raindrop down
40
- def move
41
- @y += @speed # Increment y by speed
42
- end
43
-
44
- # Check to see if it hit the bottom
45
- def reached_bottom?
46
- @y > $app.height + @r*4 # If we go a little beyond the bottom
47
- end
48
-
49
- # Display the raindrop
50
- def display
51
- $app.fill @color
52
- # For each number between 2 and the radius, draw an ellipse.
53
- (2...@r).each { |i| $app.ellipse(@x, @y+i*4, i*2, i*2) }
54
- end
55
-
56
- # If the drop is caught
57
- def caught
58
- @speed = 0 # Stop it from moving by setting speed to 0
59
- @y = -1000 # Set the location way off the screen
60
- end
61
- end
62
-
63
- DropsOneAtATime.new :title => "Drops One At A Time", :width => 400, :height => 400
@@ -1,24 +0,0 @@
1
- require 'ruby-processing'
2
-
3
- class RandomNumberDistributionSketch < Processing::App
4
- def setup
5
- # An array to keep track of how often numbers are picked.
6
- @random_counts = Array.new(20, 0)
7
- end
8
-
9
- def draw
10
- size = @random_counts.size
11
- # Pick a random number and increase the count.
12
- @random_counts[rand(size)] += 1
13
- background 255
14
- stroke 0
15
- fill 175
16
- # Draw a rectangle to graph results
17
- @random_counts.each_with_index do |count, i|
18
- rect i * width/size, 0, (width/size)-1, count
19
- end
20
- end
21
-
22
- end
23
-
24
- RandomNumberDistributionSketch.new :title => "Random Number Distribution", :width => 200, :height => 200
@@ -1,33 +0,0 @@
1
- require 'ruby-processing'
2
-
3
- class ProbabilitiesSketch < Processing::App
4
- def setup
5
- background 255
6
- smooth
7
- no_stroke
8
- end
9
-
10
- def draw
11
- # Probabilities for 3 different cases
12
- # These need to add up to 100%!
13
- red_prob = 0.60 # 60% chance of red color
14
- green_prob = 0.70 # 10% chance of green color
15
- blue_prob = 1.00 # 30% chance of blue color
16
-
17
- # Pick a random number between 0 and 1
18
- num = rand
19
-
20
- case num
21
- when (0.0..red_prob): fill(255, 53, 2, 150)
22
- when (red_prob..green_prob): fill(156, 255, 28, 150)
23
- when (green_prob..blue_prob): fill(10, 52, 178, 150)
24
- end
25
-
26
- # Draw ellipse
27
- ellipse rand(width), rand(height), 64, 64
28
- end
29
-
30
- end
31
-
32
-
33
- ProbabilitiesSketch.new :title => "Probabilities", :width => 400, :height => 400
@@ -1,22 +0,0 @@
1
- require 'ruby-processing'
2
-
3
- class PerlinNoiseSketch < Processing::App
4
- def setup
5
- smooth
6
- @time = 0.0
7
- @increment = 0.01
8
- end
9
-
10
- def draw
11
- background 255
12
-
13
- n = noise(@time) * width
14
- @time += @increment
15
- fill 0
16
- ellipse width/2, height/2, n, n
17
- end
18
-
19
- end
20
-
21
-
22
- PerlinNoiseSketch.new :title => "Perlin Noise", :width => 400, :height => 400
@@ -1,29 +0,0 @@
1
- require 'ruby-processing'
2
-
3
- class OscillationSketch < Processing::App
4
-
5
- def setup
6
- @theta = 0.0
7
- smooth
8
- end
9
-
10
- def draw
11
- background 255
12
- # The output of the sin() function oscillates smoothly between 1 and 1.
13
- # By adding 1 we get values between 0 and 2.
14
- # By multiplying by 100, we get values between 0 and 200 which can be used as the ellipse's x location.
15
- x = (sin(@theta) + 1) * width/2
16
-
17
- # with each cycle, increment theta
18
- @theta += 0.05
19
- fill 0
20
- stroke 0
21
-
22
- # draw the ellipse at the value produce by the sin
23
- line width/2, 0, x, height/2
24
- ellipse x, height/2, 16, 16
25
- end
26
-
27
- end
28
-
29
- OscillationSketch.new :title => "Oscillation", :width => 200, :height => 200
@@ -1,31 +0,0 @@
1
- require 'ruby-processing'
2
-
3
- class WaveSketch < Processing::App
4
-
5
- def setup
6
- @theta = 0
7
- smooth
8
- end
9
-
10
- def draw
11
- background 255
12
- # Increment theta (try different values for " angular velocity " here)
13
- @theta += 0.02
14
- no_stroke
15
- fill 0
16
- x = @theta
17
-
18
- # times is used to draw all the points along a sine wave (scaled to the pixel dimension of the window).
19
- 20.times do |i|
20
- # Calculate y value based off of sine function
21
- y = sin(x) * height/2
22
- # Draw an ellipse
23
- ellipse i*10, y+height/2, 16, 16
24
- # Move along x-axis
25
- x += 0.2
26
- end
27
- end
28
-
29
- end
30
-
31
- WaveSketch.new :title => "Oscillation", :width => 200, :height => 200
@@ -1,30 +0,0 @@
1
- require 'ruby-processing'
2
-
3
- class RecursionSketch < Processing::App
4
-
5
- def setup
6
- smooth
7
- end
8
-
9
- def draw
10
- background 255
11
- stroke 0
12
- no_fill
13
-
14
- draw_circle width/2, height/2, width/2
15
- end
16
-
17
- def draw_circle(x, y, radius)
18
- ellipse x, y, radius, radius
19
- # It's important to establish an end-point to recursion, or else it
20
- # would go forever. Comment out the following line to break the sketch.
21
- return if radius < 2
22
- # draw_circle calls itself twice, creating a branching effect.
23
- # For every circle, a smaller circle is drawn to the left and right.
24
- draw_circle x+radius/2, y, radius/2
25
- draw_circle x-radius/2, y, radius/2
26
- end
27
-
28
- end
29
-
30
- RecursionSketch.new :title => "Recursion", :width => 200, :height => 200
@@ -1,21 +0,0 @@
1
- require 'ruby-processing'
2
-
3
- class TwoDimensionalArraySketch < Processing::App
4
-
5
- def setup
6
- smooth
7
- # initialize array with random values
8
- @my_array = Array.new(width) { Array.new(height) { rand 255 }}
9
-
10
- # draw the points
11
- width.times do |i|
12
- height.times do |j|
13
- stroke @my_array[i][j]
14
- point i, j
15
- end
16
- end
17
- end
18
-
19
- end
20
-
21
- TwoDimensionalArraySketch.new :title => "Two Dimensional Array", :width => 200, :height => 200
@@ -1,54 +0,0 @@
1
- require 'ruby-processing'
2
-
3
- # Let's start by defining the cell class.
4
- class Cell
5
-
6
- def initialize(x, y, w, h, angle)
7
- @x, @y = x, y
8
- @w, @h = w, h
9
- @angle = angle
10
- end
11
-
12
- # we oscillate by increasing the angle, here.
13
- def oscillate
14
- @angle += 0.02
15
- end
16
-
17
- def display
18
- $app.stroke 255
19
- # calculate color using sine wave
20
- $app.fill 127 + 127 * Math.sin(@angle)
21
- $app.rect @x, @y, @w, @h
22
- end
23
-
24
- def oscillate_and_display
25
- oscillate
26
- display
27
- end
28
-
29
- end
30
-
31
-
32
- # And then the sketch that holds many cells.
33
- class ArrayWithObjectsSketch < Processing::App
34
-
35
- def setup
36
- smooth
37
- @cols = @rows = 20
38
-
39
- # initialize array with random values
40
- @grid = Array.new(@cols) do |i|
41
- Array.new(@rows) do |j|
42
- Cell.new(i*20, j*20, 20, 20, i+j)
43
- end
44
- end
45
- end
46
-
47
- def draw
48
- background 0
49
- @grid.each { |array| array.each { |cell| cell.oscillate_and_display } }
50
- end
51
-
52
- end
53
-
54
- ArrayWithObjectsSketch.new :title => "Two Dimensional Array with Objects", :width => 200, :height => 200