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.
- data/CHANGELOG +8 -0
- data/lib/patches/JRubyApplet.diff +0 -0
- data/lib/patches/PATCHES.txt +0 -0
- data/lib/patches/PApplet.diff +0 -0
- data/lib/ruby-processing.rb +1 -1
- data/lib/ruby-processing/app.rb +20 -1
- data/lib/ruby-processing/exporters/base_exporter.rb +1 -1
- data/lib/ruby-processing/exporters/creator.rb +1 -2
- data/lib/ruby-processing/runner.rb +4 -3
- data/lib/ruby-processing/runners/watch.rb +2 -2
- data/lib/templates/applet/index.html.erb +1 -1
- metadata +2 -145
- data/samples/learning_processing/ABOUT +0 -11
- data/samples/learning_processing/chapter_01/1_stroke_and_fill.rb +0 -18
- data/samples/learning_processing/chapter_01/2_nofill.rb +0 -20
- data/samples/learning_processing/chapter_01/3_rgb_color.rb +0 -19
- data/samples/learning_processing/chapter_01/4_alpha_transparency.rb +0 -42
- data/samples/learning_processing/chapter_01/5_zoog.rb +0 -24
- data/samples/learning_processing/chapter_02/1_zoog_again.rb +0 -41
- data/samples/learning_processing/chapter_03/1_zoog_as_dynamic_sketch.rb +0 -44
- data/samples/learning_processing/chapter_03/2_mouse_x_and_mouse_y.rb +0 -26
- data/samples/learning_processing/chapter_03/3_zoog_as_dynamic_sketch_with_variation.rb +0 -41
- data/samples/learning_processing/chapter_03/4_drawing_a_continuous_line.rb +0 -18
- data/samples/learning_processing/chapter_03/5_mouse_pressed_and_key_pressed.rb +0 -29
- data/samples/learning_processing/chapter_03/6_interactive_zoog.rb +0 -42
- data/samples/learning_processing/chapter_04/1_variable_declaration.rb +0 -24
- data/samples/learning_processing/chapter_04/2_using_variables.rb +0 -27
- data/samples/learning_processing/chapter_04/3_varying_variables.rb +0 -27
- data/samples/learning_processing/chapter_04/4_many_variables.rb +0 -38
- data/samples/learning_processing/chapter_04/5_using_system_variables.rb +0 -28
- data/samples/learning_processing/chapter_04/6_ellipse_with_variables.rb +0 -24
- data/samples/learning_processing/chapter_04/7_filling_variables_with_random_values.rb +0 -27
- data/samples/learning_processing/chapter_04/8_variable_zoog.rb +0 -50
- data/samples/learning_processing/chapter_05/01_conditionals.rb +0 -31
- data/samples/learning_processing/chapter_05/02_more_conditionals.rb +0 -38
- data/samples/learning_processing/chapter_05/03_rollovers.rb +0 -34
- data/samples/learning_processing/chapter_05/04_hold_down_the_button.rb +0 -33
- data/samples/learning_processing/chapter_05/05_button_as_switch.rb +0 -39
- data/samples/learning_processing/chapter_05/06_bouncing_ball.rb +0 -33
- data/samples/learning_processing/chapter_05/07_bouncing_color.rb +0 -37
- data/samples/learning_processing/chapter_05/08_square_following_edge.rb +0 -59
- data/samples/learning_processing/chapter_05/09_simple_gravity.rb +0 -43
- data/samples/learning_processing/chapter_05/10_zoog_and_conditionals.rb +0 -53
- data/samples/learning_processing/chapter_06/01_many_lines.rb +0 -29
- data/samples/learning_processing/chapter_06/02_many_lines_with_variables.rb +0 -53
- data/samples/learning_processing/chapter_06/03_while_loop.rb +0 -30
- data/samples/learning_processing/chapter_06/04_infinite_loop.rb +0 -25
- data/samples/learning_processing/chapter_06/05_another_infinite_loop.rb +0 -33
- data/samples/learning_processing/chapter_06/06_legs_with_a_for_loop.rb +0 -41
- data/samples/learning_processing/chapter_06/07_local_variables.rb +0 -39
- data/samples/learning_processing/chapter_06/08_lines_one_at_a_time.rb +0 -30
- data/samples/learning_processing/chapter_06/09_simple_while_loop_with_interactivity.rb +0 -41
- data/samples/learning_processing/chapter_06/10_zoog_with_arms.rb +0 -56
- data/samples/learning_processing/chapter_06/11_multiple_zoogs.rb +0 -46
- data/samples/learning_processing/chapter_07/01_defining_a_function.rb +0 -22
- data/samples/learning_processing/chapter_07/02_calling_a_function.rb +0 -22
- data/samples/learning_processing/chapter_07/03_bouncing_ball_with_functions.rb +0 -49
- data/samples/learning_processing/chapter_07/04_function_returns_distance.rb +0 -48
- data/samples/learning_processing/chapter_07/05_zoog_with_functions.rb +0 -71
- data/samples/learning_processing/chapter_08/01_car_class_and_car_variable.rb +0 -45
- data/samples/learning_processing/chapter_08/02_two_car_objects.rb +0 -60
- data/samples/learning_processing/chapter_08/03_object_oriented_zoog.rb +0 -81
- data/samples/learning_processing/chapter_10/01_catcher.rb +0 -35
- data/samples/learning_processing/chapter_10/02_bouncing_ball.rb +0 -44
- data/samples/learning_processing/chapter_10/03_bouncing_balls_with_intersection.rb +0 -69
- data/samples/learning_processing/chapter_10/04_a_timer.rb +0 -24
- data/samples/learning_processing/chapter_10/05_object_oriented_timer.rb +0 -42
- data/samples/learning_processing/chapter_10/06_simple_raindrop.rb +0 -23
- data/samples/learning_processing/chapter_10/07_drops_one_at_a_time.rb +0 -63
- data/samples/learning_processing/chapter_13/02_random_number_distribution.rb +0 -24
- data/samples/learning_processing/chapter_13/03_probabilities.rb +0 -33
- data/samples/learning_processing/chapter_13/04_perlin_noise.rb +0 -22
- data/samples/learning_processing/chapter_13/06_oscillation.rb +0 -29
- data/samples/learning_processing/chapter_13/07_wave.rb +0 -31
- data/samples/learning_processing/chapter_13/08_recursion.rb +0 -30
- data/samples/learning_processing/chapter_13/09_two_dimensional_array.rb +0 -21
- data/samples/learning_processing/chapter_13/10_two_dimensional_array_with_objects.rb +0 -54
- data/samples/learning_processing/chapter_14/01_growing_rectangle.rb +0 -26
- data/samples/learning_processing/chapter_14/02_multiple_translations.rb +0 -37
- data/samples/learning_processing/chapter_14/03_depth_rectangle.rb +0 -29
- data/samples/learning_processing/chapter_14/04_pyramid_using_beingshape.rb +0 -55
- data/samples/learning_processing/chapter_14/05_rotate_rectangle_around_center.rb +0 -28
- data/samples/learning_processing/chapter_14/06_rotate_z.rb +0 -24
- data/samples/learning_processing/chapter_14/07_rotate_x.rb +0 -24
- data/samples/learning_processing/chapter_14/08_rotate_y.rb +0 -24
- data/samples/learning_processing/chapter_14/09_rotate_all.rb +0 -24
- data/samples/learning_processing/chapter_14/10_draw_pyramid.rb +0 -59
- data/samples/learning_processing/chapter_14/12_rotating_one_square.rb +0 -25
- data/samples/learning_processing/chapter_14/13_rotating_another_square.rb +0 -25
- data/samples/learning_processing/chapter_14/14_rotating_both_squares.rb +0 -43
- data/samples/learning_processing/chapter_14/15_rotating_many_things.rb +0 -56
- data/samples/learning_processing/chapter_14/16_simple_solar_system.rb +0 -53
- data/samples/learning_processing/chapter_14/17_nested_push_and_pop.rb +0 -50
- data/samples/learning_processing/chapter_14/18_object_oriented_solar_system.rb +0 -69
- data/samples/learning_processing/chapter_15/01_hello_world_image.rb +0 -20
- data/samples/learning_processing/chapter_15/02_image_sprite.rb +0 -29
- data/samples/learning_processing/chapter_15/03_swapping_images.rb +0 -25
- data/samples/learning_processing/chapter_15/04_image_sequence.rb +0 -22
- data/samples/learning_processing/chapter_15/05_setting_pixels.rb +0 -19
- data/samples/learning_processing/chapter_15/06_pixels_2d.rb +0 -29
- data/samples/learning_processing/chapter_15/07_image_pixels.rb +0 -40
- data/samples/learning_processing/chapter_15/08_image_brightness.rb +0 -29
- data/samples/learning_processing/chapter_15/09_flashlight_effect.rb +0 -42
- data/samples/learning_processing/chapter_15/10_brightness_threshold.rb +0 -33
- data/samples/learning_processing/chapter_15/11_brightness_threshold_with_filter.rb +0 -20
- data/samples/learning_processing/chapter_15/12_pixel_neighbour_differences.rb +0 -43
- data/samples/learning_processing/chapter_15/14_pointillism.rb +0 -34
- data/samples/learning_processing/chapter_15/15_2d_image_mapped_to_3d.rb +0 -43
- data/samples/learning_processing/chapter_15/data/animal0.jpg +0 -0
- data/samples/learning_processing/chapter_15/data/animal1.jpg +0 -0
- data/samples/learning_processing/chapter_15/data/animal2.jpg +0 -0
- data/samples/learning_processing/chapter_15/data/animal3.jpg +0 -0
- data/samples/learning_processing/chapter_15/data/animal4.jpg +0 -0
- data/samples/learning_processing/chapter_15/data/animal5.jpg +0 -0
- data/samples/learning_processing/chapter_15/data/animal6.jpg +0 -0
- data/samples/learning_processing/chapter_15/data/face.jpg +0 -0
- data/samples/learning_processing/chapter_15/data/mysummervacation.jpg +0 -0
- data/samples/learning_processing/chapter_15/data/sunflower.jpg +0 -0
- data/samples/learning_processing/chapter_16/01_display_video.rb +0 -25
- data/samples/learning_processing/chapter_16/02_manipulate_video_image.rb +0 -24
- data/samples/learning_processing/chapter_16/03_adjust_video_brightness.rb +0 -49
- data/samples/learning_processing/chapter_17/01_simple_displaying_text.rb +0 -14
- data/samples/learning_processing/chapter_17/02_text_align.rb +0 -21
- data/samples/learning_processing/chapter_17/03_scrolling_headlines.rb +0 -35
- data/samples/learning_processing/chapter_17/04_text_mirror.rb +0 -68
- data/samples/learning_processing/chapter_17/05_rotating_text.rb +0 -22
- data/samples/learning_processing/chapter_17/06_text_breaking_up.rb +0 -73
- data/samples/learning_processing/chapter_17/07_boxes_along_a_curve.rb +0 -49
- data/samples/learning_processing/chapter_17/08_characters_along_a_curve.rb +0 -51
- data/samples/learning_processing/chapter_17/data/ArialMT-16.vlw +0 -0
- data/samples/learning_processing/chapter_17/data/Courier-Bold-20.vlw +0 -0
- data/samples/learning_processing/chapter_18/01_user_input.rb +0 -39
- data/samples/learning_processing/chapter_18/02_graphing_comma_separated_numbers_from_a_text_file.rb +0 -28
- data/samples/learning_processing/chapter_18/03_creating_object_from_a_text_file.rb +0 -64
- data/samples/learning_processing/chapter_18/data/data-1.txt +0 -1
- data/samples/learning_processing/chapter_18/data/data-2.txt +0 -10
@@ -1,56 +0,0 @@
|
|
1
|
-
require 'ruby-processing'
|
2
|
-
|
3
|
-
# A Rotater class
|
4
|
-
class Rotater
|
5
|
-
|
6
|
-
def initialize(x, y, speed, width)
|
7
|
-
@x, @y = x, y
|
8
|
-
# Angle is always initialized to 0
|
9
|
-
@theta = 0
|
10
|
-
@speed = speed
|
11
|
-
@w = width
|
12
|
-
end
|
13
|
-
|
14
|
-
# Increment angle
|
15
|
-
def spin
|
16
|
-
@theta += @speed
|
17
|
-
end
|
18
|
-
|
19
|
-
# Display rectangle
|
20
|
-
def display
|
21
|
-
# push_matrix and pop_matrix are called inside the class' display method.
|
22
|
-
# This way, every Rotater object is rendered with its own independent translation and rotation!
|
23
|
-
$app.push_matrix
|
24
|
-
$app.translate @x, @y
|
25
|
-
$app.rotate @theta
|
26
|
-
$app.rect 0, 0, @w, @w
|
27
|
-
$app.pop_matrix
|
28
|
-
end
|
29
|
-
|
30
|
-
end
|
31
|
-
|
32
|
-
class RotatingManyThingsSketch < Processing::App
|
33
|
-
|
34
|
-
def setup
|
35
|
-
rect_mode CENTER
|
36
|
-
stroke 0
|
37
|
-
fill 0, 100
|
38
|
-
@rotaters = Array.new(20) do
|
39
|
-
Rotater.new(rand(width), rand(height), random(-0.1, 0.1), rand(48))
|
40
|
-
end
|
41
|
-
end
|
42
|
-
|
43
|
-
def draw
|
44
|
-
background 255
|
45
|
-
|
46
|
-
# All Rotaters spin and are displayed
|
47
|
-
@rotaters.each do |r|
|
48
|
-
r.spin
|
49
|
-
r.display
|
50
|
-
end
|
51
|
-
end
|
52
|
-
|
53
|
-
end
|
54
|
-
|
55
|
-
RotatingManyThingsSketch.new :title => "Rotating Many Things", :width => 200, :height => 200
|
56
|
-
|
@@ -1,53 +0,0 @@
|
|
1
|
-
require 'ruby-processing'
|
2
|
-
|
3
|
-
class SimpleSolarSystemSketch < Processing::App
|
4
|
-
|
5
|
-
def setup
|
6
|
-
smooth
|
7
|
-
@theta = 0 # Angle of rotation around sun and planets
|
8
|
-
end
|
9
|
-
|
10
|
-
def draw
|
11
|
-
background 255
|
12
|
-
stroke 0
|
13
|
-
|
14
|
-
# Translate to center of window to draw the sun.
|
15
|
-
translate width/2, height/2
|
16
|
-
fill 255, 200, 50
|
17
|
-
ellipse 0, 0, 20, 20
|
18
|
-
|
19
|
-
# The earth rotates around the sun
|
20
|
-
push_matrix
|
21
|
-
rotate @theta
|
22
|
-
translate 50, 0
|
23
|
-
fill 50, 200, 255
|
24
|
-
ellipse 0, 0, 10, 10
|
25
|
-
|
26
|
-
# Moon #1 rotates around the earth
|
27
|
-
# push_matrix is called to save the transformation state before drawing moon #1.
|
28
|
-
# This way we can pop and return to earth before drawing moon #2.
|
29
|
-
# Both moons rotate around the earth which itself is rotating around the sun).
|
30
|
-
push_matrix
|
31
|
-
rotate -@theta*4
|
32
|
-
translate 15, 0
|
33
|
-
fill 50, 255, 200
|
34
|
-
ellipse 0, 0, 6, 6
|
35
|
-
pop_matrix
|
36
|
-
|
37
|
-
# Moon #2 also rotates around the earth
|
38
|
-
push_matrix
|
39
|
-
rotate @theta*2
|
40
|
-
translate 25, 0
|
41
|
-
fill 50, 255, 200
|
42
|
-
ellipse 0, 0, 6, 6
|
43
|
-
pop_matrix
|
44
|
-
|
45
|
-
pop_matrix
|
46
|
-
|
47
|
-
@theta += 0.01;
|
48
|
-
end
|
49
|
-
|
50
|
-
end
|
51
|
-
|
52
|
-
SimpleSolarSystemSketch.new :title => "Simple Solar System", :width => 200, :height => 200
|
53
|
-
|
@@ -1,50 +0,0 @@
|
|
1
|
-
require 'ruby-processing'
|
2
|
-
|
3
|
-
class NestedPushAndPopSketch < Processing::App
|
4
|
-
|
5
|
-
def setup
|
6
|
-
smooth
|
7
|
-
@theta = 0 # angle for rotation
|
8
|
-
end
|
9
|
-
|
10
|
-
def draw
|
11
|
-
background 255
|
12
|
-
stroke 0
|
13
|
-
|
14
|
-
# Translate to center of window
|
15
|
-
translate width/2, height/2
|
16
|
-
|
17
|
-
# Loop from 0 to 360 degrees (2*PI radians)
|
18
|
-
0.step(TWO_PI, 0.2) do |i|
|
19
|
-
|
20
|
-
# Push, rotate and draw a line!
|
21
|
-
# The transformation state is saved at the beginning of each cycle through the for loop and restored at the end.
|
22
|
-
# Try commenting out these lines to see the difference!
|
23
|
-
push_matrix
|
24
|
-
rotate @theta + i
|
25
|
-
line 0, 0, 100, 0
|
26
|
-
|
27
|
-
# Loop from 0 to 360 degrees (2*PI radians)
|
28
|
-
0.step(TWO_PI, 0.5) do |j|
|
29
|
-
# Push, translate, rotate and draw a line!
|
30
|
-
push_matrix
|
31
|
-
translate 100, 0
|
32
|
-
rotate -@theta - j
|
33
|
-
line 0, 0, 50, 0
|
34
|
-
# We're done with the inside loop,pop!
|
35
|
-
pop_matrix
|
36
|
-
end
|
37
|
-
|
38
|
-
# We're done with the outside loop, pop!
|
39
|
-
pop_matrix
|
40
|
-
end
|
41
|
-
end_shape
|
42
|
-
|
43
|
-
# Increment @theta
|
44
|
-
@theta += 0.01
|
45
|
-
end
|
46
|
-
|
47
|
-
end
|
48
|
-
|
49
|
-
NestedPushAndPopSketch.new :title => "Nested Push and Pop", :width => 200, :height => 200
|
50
|
-
|
@@ -1,69 +0,0 @@
|
|
1
|
-
require 'ruby-processing'
|
2
|
-
|
3
|
-
class Planet
|
4
|
-
|
5
|
-
# Each planet object keeps track of its own angle of rotation.
|
6
|
-
# @theta Rotation around sun
|
7
|
-
# @diameter Size of planet
|
8
|
-
# @distance Distance from sun
|
9
|
-
# @orbit_speed Orbit speed
|
10
|
-
def initialize(distance, diameter)
|
11
|
-
@distance = distance
|
12
|
-
@diameter = diameter
|
13
|
-
@theta = 0
|
14
|
-
@orbit_speed = rand * 0.02 + 0.01
|
15
|
-
end
|
16
|
-
|
17
|
-
def update
|
18
|
-
# Increment the angle to rotate
|
19
|
-
@theta += @orbit_speed
|
20
|
-
end
|
21
|
-
|
22
|
-
def display
|
23
|
-
# Before rotation and translation, the state of the matrix is saved with push_matrix.
|
24
|
-
$app.push_matrix
|
25
|
-
# Rotate orbit
|
26
|
-
$app.rotate @theta
|
27
|
-
# translate out @distance
|
28
|
-
$app.translate @distance, 0
|
29
|
-
$app.stroke 0
|
30
|
-
$app.fill 175
|
31
|
-
$app.ellipse 0, 0, @diameter, @diameter
|
32
|
-
# Once the planet is drawn, the matrix is restored with pop_matrix so that the next planet is not affected.
|
33
|
-
$app.pop_matrix
|
34
|
-
end
|
35
|
-
|
36
|
-
end
|
37
|
-
|
38
|
-
|
39
|
-
class ObjectOrientedSolarSystemSketch < Processing::App
|
40
|
-
|
41
|
-
def setup
|
42
|
-
smooth
|
43
|
-
@planets = Array.new(8) { |i| Planet.new(20+i*10, i+8) }
|
44
|
-
end
|
45
|
-
|
46
|
-
def draw
|
47
|
-
background 255
|
48
|
-
|
49
|
-
# Drawing the Sun
|
50
|
-
push_matrix
|
51
|
-
# Translate to center of window
|
52
|
-
translate width/2, height/2
|
53
|
-
stroke 0
|
54
|
-
fill 255
|
55
|
-
ellipse 0, 0, 20, 20
|
56
|
-
|
57
|
-
# Drawing all Planets
|
58
|
-
@planets.each do |p|
|
59
|
-
p.update
|
60
|
-
p.display
|
61
|
-
end
|
62
|
-
|
63
|
-
pop_matrix
|
64
|
-
end
|
65
|
-
|
66
|
-
end
|
67
|
-
|
68
|
-
ObjectOrientedSolarSystemSketch.new :title => "Object Oriented Solar System", :width => 200, :height => 200
|
69
|
-
|
@@ -1,20 +0,0 @@
|
|
1
|
-
require 'ruby-processing'
|
2
|
-
|
3
|
-
class HelloWorldImageSketch < Processing::App
|
4
|
-
|
5
|
-
def setup
|
6
|
-
# the image file must be in the data directory
|
7
|
-
@img = load_image("mysummervacation.jpg")
|
8
|
-
end
|
9
|
-
|
10
|
-
def draw
|
11
|
-
background 0
|
12
|
-
|
13
|
-
#The image function displays the image at a location-in this case the point (0,0).
|
14
|
-
image @img, 0, 0
|
15
|
-
end
|
16
|
-
|
17
|
-
end
|
18
|
-
|
19
|
-
HelloWorldImageSketch.new :title => "Hello World Image", :width => 320, :height => 240
|
20
|
-
|
@@ -1,29 +0,0 @@
|
|
1
|
-
require 'ruby-processing'
|
2
|
-
|
3
|
-
class ImageSpriteSketch < Processing::App
|
4
|
-
|
5
|
-
def setup
|
6
|
-
@head = load_image("face.jpg") # variable for the image file
|
7
|
-
@x, @y = 0, width/2 # variables for image location
|
8
|
-
@rot = 0.0 # variable for image rotation
|
9
|
-
end
|
10
|
-
|
11
|
-
def draw
|
12
|
-
background 255
|
13
|
-
|
14
|
-
translate @x, @y
|
15
|
-
rotate @rot
|
16
|
-
|
17
|
-
# Images can be animated just like regular shapes using variables, translate, rotate, and so on.
|
18
|
-
image @head, 0, 0
|
19
|
-
# Adjust variables for animation
|
20
|
-
@x += 1.0
|
21
|
-
@rot += 0.02
|
22
|
-
@x = -@head.width if @x > width + @head.width
|
23
|
-
end
|
24
|
-
|
25
|
-
end
|
26
|
-
|
27
|
-
ImageSpriteSketch.new :title => "Image Sprite", :width => 200, :height => 200
|
28
|
-
|
29
|
-
|
@@ -1,25 +0,0 @@
|
|
1
|
-
require 'ruby-processing'
|
2
|
-
|
3
|
-
class SwappingImagesSketch < Processing::App
|
4
|
-
|
5
|
-
def setup
|
6
|
-
@index = 0
|
7
|
-
@count = 7
|
8
|
-
# loading the images into the array
|
9
|
-
@images = (0...@count).map { |i| load_image("animal#{i}.jpg") }
|
10
|
-
end
|
11
|
-
|
12
|
-
def draw
|
13
|
-
# displaying one images
|
14
|
-
image @images[@index], 0, 0
|
15
|
-
end
|
16
|
-
|
17
|
-
def mouse_pressed
|
18
|
-
# A new image is picked randomly when the mouse is clicked
|
19
|
-
@index = rand(@images.size)
|
20
|
-
end
|
21
|
-
|
22
|
-
end
|
23
|
-
|
24
|
-
SwappingImagesSketch.new :title => "Swapping Images", :width => 200, :height => 200
|
25
|
-
|
@@ -1,22 +0,0 @@
|
|
1
|
-
require 'ruby-processing'
|
2
|
-
|
3
|
-
class ImageSequence < Processing::App
|
4
|
-
|
5
|
-
def setup
|
6
|
-
@index = 0
|
7
|
-
@count = 7
|
8
|
-
# loading the images into the array
|
9
|
-
@images = (0...@count).map { |i| load_image("animal#{i}.jpg") }
|
10
|
-
frame_rate 5
|
11
|
-
end
|
12
|
-
|
13
|
-
def draw
|
14
|
-
# displaying one images
|
15
|
-
image @images[@index], 0, 0
|
16
|
-
@index = (@index + 1) % @images.size
|
17
|
-
end
|
18
|
-
|
19
|
-
end
|
20
|
-
|
21
|
-
ImageSequence.new :title => "Image Sequence", :width => 200, :height => 200
|
22
|
-
|
@@ -1,19 +0,0 @@
|
|
1
|
-
require 'ruby-processing'
|
2
|
-
|
3
|
-
class SettingPixelsSketch < Processing::App
|
4
|
-
|
5
|
-
def setup
|
6
|
-
# load the pixels array
|
7
|
-
load_pixels
|
8
|
-
background 0
|
9
|
-
# loop through the pixels and set each one to a random greyscale color
|
10
|
-
pixels.size.times { |i| pixels[i] = color(rand 255) }
|
11
|
-
# update the pixels on screen
|
12
|
-
update_pixels
|
13
|
-
end
|
14
|
-
|
15
|
-
|
16
|
-
end
|
17
|
-
|
18
|
-
SettingPixelsSketch.new :title => "Setting Pixels", :width => 200, :height => 200
|
19
|
-
|
@@ -1,29 +0,0 @@
|
|
1
|
-
require 'ruby-processing'
|
2
|
-
|
3
|
-
class Pixels2dSketch < Processing::App
|
4
|
-
|
5
|
-
def setup
|
6
|
-
# load the pixels array
|
7
|
-
load_pixels
|
8
|
-
# Two loops allow us to visit every column (x) and every row (y).
|
9
|
-
# Loop through every pixel column
|
10
|
-
width.times do |x|
|
11
|
-
# Loop through every pixel row
|
12
|
-
height.times do |y|
|
13
|
-
# Use the formula to find the 1D location
|
14
|
-
# The location in the pixel array is calculated via our formula: 1D pixel location = x + y * width
|
15
|
-
loc = x + y * width
|
16
|
-
# We use the even-or-odd-ness of the column number (x) to determine whether the color should be black or white.
|
17
|
-
pixels[loc] = (x % 2 == 0) ? color(255) : color(0)
|
18
|
-
end
|
19
|
-
end
|
20
|
-
# update the pixels on screen
|
21
|
-
update_pixels
|
22
|
-
end
|
23
|
-
|
24
|
-
|
25
|
-
end
|
26
|
-
|
27
|
-
Pixels2dSketch.new :title => "Pixels 2d", :width => 200, :height => 200
|
28
|
-
|
29
|
-
|
@@ -1,40 +0,0 @@
|
|
1
|
-
require 'ruby-processing'
|
2
|
-
|
3
|
-
class ImagePixelsSketch < Processing::App
|
4
|
-
|
5
|
-
def setup
|
6
|
-
@image = load_image 'sunflower.jpg'
|
7
|
-
end
|
8
|
-
|
9
|
-
def draw
|
10
|
-
# load the pixels array
|
11
|
-
load_pixels
|
12
|
-
# Two loops allow us to visit every column (x) and every row (y).
|
13
|
-
# Loop through every pixel column
|
14
|
-
width.times do |x|
|
15
|
-
# Loop through every pixel row
|
16
|
-
height.times do |y|
|
17
|
-
# Use the formula to find the 1D location
|
18
|
-
loc = x + y * width # The location in the pixel array is calculated via our formula: 1D pixel location = x + y * width
|
19
|
-
|
20
|
-
# The functions red, green, and blue pull out the three color components from a pixel.
|
21
|
-
r = red(@image.pixels[loc])
|
22
|
-
g = green(@image.pixels[loc])
|
23
|
-
b = blue(@image.pixels[loc])
|
24
|
-
|
25
|
-
# Image Processing would go here
|
26
|
-
# If we were to change the RGB values, we would do it here, before setting the pixel in the display window.
|
27
|
-
|
28
|
-
# Set the display pixel to the image pixel
|
29
|
-
pixels[loc] = color(r,g,b)
|
30
|
-
end
|
31
|
-
end
|
32
|
-
# update the pixels on screen
|
33
|
-
update_pixels
|
34
|
-
end
|
35
|
-
|
36
|
-
end
|
37
|
-
|
38
|
-
ImagePixelsSketch.new :title => "Image Pixels", :width => 200, :height => 200
|
39
|
-
|
40
|
-
|
@@ -1,29 +0,0 @@
|
|
1
|
-
require 'ruby-processing'
|
2
|
-
|
3
|
-
class ImageBrightnessSketch < Processing::App
|
4
|
-
|
5
|
-
def setup
|
6
|
-
@image = load_image 'sunflower.jpg'
|
7
|
-
# Let's grab the red, green and blue component of each pixel of the image to start with.
|
8
|
-
@image_pixels = @image.pixels.map {|p| [red(p), green(p), blue(p)]}
|
9
|
-
end
|
10
|
-
|
11
|
-
def draw
|
12
|
-
# We calculate a multiplier ranging from 0.0 to 8.0 based on mouseX position.
|
13
|
-
# That multiplier changes the RGB value of each pixel.
|
14
|
-
adjustment = (mouse_x.to_f / width) * 8.0
|
15
|
-
load_pixels # load the pixels array
|
16
|
-
|
17
|
-
# And here's a modified Ruby way to do the Java equivalent
|
18
|
-
pixels.size.times do |i|
|
19
|
-
pixels[i] = color(*@image_pixels[i].map {|rgb| rgb * adjustment })
|
20
|
-
end
|
21
|
-
|
22
|
-
update_pixels
|
23
|
-
end
|
24
|
-
|
25
|
-
end
|
26
|
-
|
27
|
-
ImageBrightnessSketch.new :title => "Image Brightness", :width => 200, :height => 200
|
28
|
-
|
29
|
-
|