ruby-processing 1.0.4 → 1.0.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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
|
-
|