ruby-processing 2.6.2 → 2.6.3
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.
- checksums.yaml +4 -4
- data/lib/rpextras.jar +0 -0
- data/lib/ruby-processing.rb +5 -8
- data/lib/ruby-processing/app.rb +26 -27
- data/lib/ruby-processing/config.rb +0 -2
- data/lib/ruby-processing/exporters/application_exporter.rb +1 -1
- data/lib/ruby-processing/exporters/base_exporter.rb +1 -1
- data/lib/ruby-processing/exporters/creator.rb +11 -11
- data/lib/ruby-processing/helper_methods.rb +33 -31
- data/lib/ruby-processing/helpers/numeric.rb +1 -1
- data/lib/ruby-processing/helpers/range.rb +11 -0
- data/lib/ruby-processing/library_loader.rb +11 -16
- data/lib/ruby-processing/runner.rb +22 -24
- data/lib/ruby-processing/runners/watch.rb +1 -1
- data/lib/ruby-processing/version.rb +1 -1
- data/library/boids/boids.rb +39 -70
- data/library/control_panel/control_panel.rb +3 -3
- data/samples/contributed/circle_collision.rb +3 -3
- data/samples/contributed/fern.rb +7 -10
- data/samples/contributed/fibonacci_sphere.rb +2 -2
- data/samples/contributed/full_screen.rb +23 -22
- data/samples/contributed/grapher.rb +3 -3
- data/samples/contributed/gravity.rb +1 -1
- data/samples/contributed/mandelbrot.rb +10 -13
- data/samples/external_library/java_processing/box2d_processing/bumpy_surface_noise.rb +1 -1
- data/samples/external_library/java_processing/box2d_processing/library/custom_shape/custom_shape.rb +2 -2
- data/samples/external_library/java_processing/box2d_processing/library/particle_system/particle_system.rb +1 -1
- data/samples/external_library/java_processing/box2d_processing/library/surface/surface.rb +2 -2
- data/samples/external_library/java_processing/box2d_processing/liquidy.rb +1 -1
- data/samples/external_library/java_processing/fisica/bubbles.rb +2 -2
- data/samples/external_library/java_processing/fisica/joints.rb +4 -4
- data/samples/external_library/java_processing/generative_design/node_spring_attractor.rb +2 -2
- data/samples/external_library/java_processing/geomerative/hello_world_rotate_firstletter.rb +7 -7
- data/samples/external_library/java_processing/hemesh/twin_iso.rb +3 -3
- data/samples/external_library/java_processing/pbox2d/bumpy_surface_noise.rb +1 -1
- data/samples/external_library/java_processing/pbox2d/library/custom_shape/custom_shape.rb +2 -2
- data/samples/external_library/java_processing/pbox2d/library/particle_system/particle_system.rb +1 -1
- data/samples/external_library/java_processing/pbox2d/library/surface/surface.rb +2 -2
- data/samples/external_library/java_processing/pbox2d/liquidy.rb +1 -1
- data/samples/external_library/java_processing/peasy_cam/library/hilbert/hilbert.rb +4 -4
- data/samples/external_library/ruby_gem/draw_test.rb +2 -2
- data/samples/external_library/ruby_gem/game_of_life.rb +3 -3
- data/samples/processing_app/basics/arrays/array_objects.rb +2 -2
- data/samples/processing_app/basics/color/hue.rb +1 -1
- data/samples/processing_app/basics/control/conditionals1.rb +5 -24
- data/samples/processing_app/basics/control/conditionals2.rb +1 -1
- data/samples/processing_app/basics/form/bezier_ellipse.rb +1 -1
- data/samples/processing_app/basics/form/brick_tower.rb +4 -8
- data/samples/processing_app/basics/form/regular_polygon.rb +1 -1
- data/samples/processing_app/basics/form/star.rb +1 -1
- data/samples/processing_app/basics/form/triangle_strip.rb +1 -1
- data/samples/processing_app/basics/input/storing_input.rb +1 -1
- data/samples/processing_app/basics/lights/spot.rb +1 -1
- data/samples/processing_app/basics/math/additive_wave.rb +2 -2
- data/samples/processing_app/basics/math/double_random.rb +2 -2
- data/samples/processing_app/basics/math/noise_wave.rb +1 -1
- data/samples/processing_app/basics/math/random.rb +1 -1
- data/samples/processing_app/basics/objects/module.rb +1 -1
- data/samples/processing_app/basics/objects/struct.rb +1 -1
- data/samples/processing_app/basics/structure/loop.rb +19 -14
- data/samples/processing_app/basics/structure/recursion2.rb +2 -2
- data/samples/processing_app/basics/textures/texture3.rb +13 -33
- data/samples/processing_app/basics/transform/birds.rb +5 -5
- data/samples/processing_app/basics/transform/cubes_in_cube.rb +3 -3
- data/samples/processing_app/basics/transform/rotate.rb +1 -1
- data/samples/processing_app/basics/typography/kinetic_type.rb +1 -1
- data/samples/processing_app/demos/graphics/bezier_patch.rb +34 -34
- data/samples/processing_app/demos/graphics/trefoil.rb +1 -1
- data/samples/processing_app/demos/graphics/wiggling.rb +5 -5
- data/samples/processing_app/demos/performance/esfera.rb +4 -4
- data/samples/processing_app/demos/performance/text_rendering.rb +1 -1
- data/samples/processing_app/library/dxf/simple_export.rb +3 -3
- data/samples/processing_app/library/pdf/complex_3D.rb +11 -11
- data/samples/processing_app/library/vecmath/vec2d/bouncing_ball.rb +1 -1
- data/samples/processing_app/library/vecmath/vec2d/circle_collision.rb +3 -3
- data/samples/processing_app/library/vecmath/vec2d/library/flock/flock.rb +5 -5
- data/samples/processing_app/library/vecmath/vec2d/library/particle/{particle_system.rb → particle.rb} +28 -21
- data/samples/processing_app/library/vecmath/vec2d/morph.rb +3 -3
- data/samples/processing_app/library/vecmath/vec2d/particle_system_pshape.rb +3 -3
- data/samples/processing_app/library/vecmath/vec2d/reflection1.rb +2 -2
- data/samples/processing_app/library/vecmath/vec2d/seeking_neural.rb +3 -2
- data/samples/processing_app/library/vecmath/vec2d/simple_particle_system.rb +1 -1
- data/samples/processing_app/library/vecmath/vec3d/frame_of_reference.rb +4 -4
- data/samples/processing_app/topics/advanced_data/library/word/word.rb +1 -1
- data/samples/processing_app/topics/advanced_data/load_save_XML.rb +1 -1
- data/samples/processing_app/topics/advanced_data/load_save_json.rb +1 -1
- data/samples/processing_app/topics/advanced_data/load_save_struct_yaml.rb +1 -1
- data/samples/processing_app/topics/advanced_data/load_save_yaml.rb +1 -1
- data/samples/processing_app/topics/advanced_data/threads_two.rb +1 -2
- data/samples/processing_app/topics/cellular_automata/game_of_life.rb +3 -3
- data/samples/processing_app/topics/cellular_automata/library/ca/ca.rb +2 -2
- data/samples/processing_app/topics/cellular_automata/library/cell/cell.rb +4 -4
- data/samples/processing_app/topics/cellular_automata/library/simple_cell/simple_cell.rb +1 -1
- data/samples/processing_app/topics/cellular_automata/spore1.rb +1 -1
- data/samples/processing_app/topics/cellular_automata/spore2.rb +1 -1
- data/samples/processing_app/topics/create_shapes/group_pshape.rb +2 -2
- data/samples/processing_app/topics/create_shapes/library/particle/particle_system.rb +3 -3
- data/samples/processing_app/topics/create_shapes/library/polygon/polygon.rb +2 -2
- data/samples/processing_app/topics/create_shapes/library/star/star.rb +3 -3
- data/samples/processing_app/topics/create_shapes/particle_system_pshape.rb +1 -1
- data/samples/processing_app/topics/create_shapes/path_pshape.rb +1 -1
- data/samples/processing_app/topics/drawing/scribble_plotter.rb +2 -2
- data/samples/processing_app/topics/gui/button.rb +16 -16
- data/samples/processing_app/topics/gui/rollover.rb +13 -13
- data/samples/processing_app/topics/image_processing/blur.rb +2 -2
- data/samples/processing_app/topics/image_processing/edge_detection.rb +2 -2
- data/samples/processing_app/topics/lsystems/cstest.rb +1 -1
- data/samples/processing_app/topics/lsystems/library/stochastic_grammar/stochastic_grammar.rb +1 -1
- data/samples/processing_app/topics/motion/bouncy_bubbles.rb +1 -1
- data/samples/processing_app/topics/motion/brownian.rb +2 -2
- data/samples/processing_app/topics/motion/circle_collision.rb +1 -1
- data/samples/processing_app/topics/motion/cubes_in_cube.rb +1 -1
- data/samples/processing_app/topics/motion/library/cube/cube.rb +2 -2
- data/samples/processing_app/topics/motion/morph.rb +11 -11
- data/samples/processing_app/topics/motion/moving_on_curves.rb +4 -4
- data/samples/processing_app/topics/motion/puff.rb +4 -4
- data/samples/processing_app/topics/motion/reflection1.rb +3 -3
- data/samples/processing_app/topics/motion/reflection2.rb +1 -1
- data/samples/processing_app/topics/shaders/bw_shader.rb +1 -1
- data/samples/processing_app/topics/shaders/glsl_heightmap_noise.rb +2 -2
- data/samples/processing_app/topics/simulate/flocking.rb +6 -6
- data/samples/processing_app/topics/simulate/library/flock/flock.rb +33 -41
- data/samples/processing_app/topics/simulate/multiple_particle_systems.rb +34 -60
- data/samples/processing_app/topics/simulate/simple_particle_system.rb +20 -32
- data/samples/processing_app/topics/simulate/smoke_particle_system.rb +45 -57
- data/samples/processing_app/topics/simulate/springs.rb +40 -44
- metadata +4 -5
- data/samples/processing_app/library/vecmath/vec2d/multiple_particle_systems.rb +0 -141
- data/samples/processing_app/library/vecmath/vec2d/smoke_particle_system.rb +0 -133
@@ -21,7 +21,7 @@ def setup
|
|
21
21
|
@renderer = AppRender.new(self)
|
22
22
|
frame_rate(15)
|
23
23
|
# Create a circle using vectors pointing from center
|
24
|
-
(ALPHA
|
24
|
+
(ALPHA..OMEGA).step(THETA) do |angle|
|
25
25
|
# Note we are not starting from 0 in order to match the
|
26
26
|
# path of a circle.
|
27
27
|
circle << Vec2D.from_angle(angle) * 100
|
@@ -31,11 +31,11 @@ def setup
|
|
31
31
|
|
32
32
|
# A square is a bunch of vertices along straight line
|
33
33
|
# Top of square
|
34
|
-
(-50
|
34
|
+
(-50..50).step(10) do |x|
|
35
35
|
square << Vec2D.new(x, -50)
|
36
36
|
end
|
37
37
|
# Right side
|
38
|
-
(-50
|
38
|
+
(-50..50).step(10) do |y|
|
39
39
|
square << Vec2D.new(50, y)
|
40
40
|
end
|
41
41
|
# Bottom, NB: can't negative step ruby so use your loaf
|
@@ -12,14 +12,14 @@ attr_reader :ps
|
|
12
12
|
def setup
|
13
13
|
size(640, 360, P2D)
|
14
14
|
# Load the image
|
15
|
-
sprite =
|
15
|
+
sprite = load_image('sprite.png')
|
16
16
|
# A new particle system with 10,000 particles
|
17
17
|
@ps = ParticleSystem.new(width, height, sprite, 10_000)
|
18
18
|
# Writing to the depth buffer is disabled to avoid rendering
|
19
19
|
# artifacts due to the fact that the particles are semi-transparent
|
20
20
|
# but not z-sorted.
|
21
21
|
hint(DISABLE_DEPTH_MASK)
|
22
|
-
end
|
22
|
+
end
|
23
23
|
|
24
24
|
def draw
|
25
25
|
background(0)
|
@@ -31,6 +31,6 @@ def draw
|
|
31
31
|
# Display frame rate
|
32
32
|
fill(255, 0, 255)
|
33
33
|
text_size(16)
|
34
|
-
text("Frame rate: #{frame_rate
|
34
|
+
text("Frame rate: #{format('%0.1f', frame_rate)}", 10, 20)
|
35
35
|
end
|
36
36
|
|
@@ -87,8 +87,8 @@ def draw
|
|
87
87
|
@position.y = radius
|
88
88
|
@direction.y *= -1
|
89
89
|
# randomize base top
|
90
|
-
@base1.y = rand(height - 100
|
91
|
-
@base2.y = rand(height - 100
|
90
|
+
@base1.y = rand(height - 100..height)
|
91
|
+
@base2.y = rand(height - 100..height)
|
92
92
|
@coords = create_ground
|
93
93
|
end
|
94
94
|
end
|
@@ -9,7 +9,7 @@ module SeekingNeural
|
|
9
9
|
class Perceptron
|
10
10
|
# Perceptron is created with n weights and learning constant
|
11
11
|
def initialize(n, c)
|
12
|
-
@weights = Array.new(n) { rand(0
|
12
|
+
@weights = Array.new(n) { rand(0..1.0) }
|
13
13
|
@c = c
|
14
14
|
end
|
15
15
|
|
@@ -25,7 +25,8 @@ module SeekingNeural
|
|
25
25
|
# Give me a steering result
|
26
26
|
def feedforward(forces)
|
27
27
|
# Sum all values
|
28
|
-
forces.zip(@weights).map { |a, b| a * b }.
|
28
|
+
forces.zip(@weights).map { |a, b| a * b }.reduce(Vec2D.new, :+)
|
29
|
+
# forces.zip(@weights).map { |a, b| a * b }.reduce(:+)
|
29
30
|
end
|
30
31
|
end
|
31
32
|
|
@@ -58,7 +58,7 @@ class Particle
|
|
58
58
|
attr_reader :loc, :vel, :acc, :lifespan
|
59
59
|
def initialize(loc)
|
60
60
|
@acc = Vec2D.new(0, 0.05)
|
61
|
-
@vel = Vec2D.new(rand(-1.0
|
61
|
+
@vel = Vec2D.new(rand(-1.0..1), rand(-2.0..0))
|
62
62
|
@loc = loc # loc.clone is unecessary in ruby
|
63
63
|
@lifespan = 255.0
|
64
64
|
end
|
@@ -20,10 +20,10 @@ def setup
|
|
20
20
|
FACE_COUNT.times do |i|
|
21
21
|
|
22
22
|
# calc some random triangles in 3 space
|
23
|
-
val = Vec3D.new(rand(-width/2
|
24
|
-
v0 = Vec3D.new(rand(-val.x
|
25
|
-
v1 = Vec3D.new(rand(-val.x
|
26
|
-
v2 = Vec3D.new(rand(-val.x
|
23
|
+
val = Vec3D.new(rand(-width/2..width/2), rand(-width/2..width/2), rand(-width/2..width/2))
|
24
|
+
v0 = Vec3D.new(rand(-val.x..-val.x + 100), rand(-val.y..-val.y + 100), rand(-val.z..-val.z + 100))
|
25
|
+
v1 = Vec3D.new(rand(-val.x..-val.x + 100), rand(-val.y..-val.y + 100), rand(-val.z..-val.z + 100))
|
26
|
+
v2 = Vec3D.new(rand(-val.x..-val.x + 100), rand(-val.y..-val.y + 100), rand(-val.z..-val.z + 100))
|
27
27
|
p << Plane.new([v0, v1, v2])
|
28
28
|
|
29
29
|
# build some cute little cylinders
|
@@ -12,7 +12,7 @@ class Word
|
|
12
12
|
def initialize(s)
|
13
13
|
@width, @height = $app.width, $app.height
|
14
14
|
@count_dracula, @count_franken, @total_count = 0, 0, 0
|
15
|
-
@position = [rand(width), rand(-height
|
15
|
+
@position = [rand(width), rand(-height..height*2)]
|
16
16
|
@word = s
|
17
17
|
end
|
18
18
|
|
@@ -90,7 +90,7 @@ def mouse_pressed
|
|
90
90
|
# Set the diameter element
|
91
91
|
diameter = bubble.add_child('diameter')
|
92
92
|
# Here for a node's content, we have to convert to a String
|
93
|
-
diameter.set_content(rand(40.0
|
93
|
+
diameter.set_content(rand(40.0..80).to_s)
|
94
94
|
|
95
95
|
# Set a label
|
96
96
|
label = bubble.add_child('label')
|
@@ -16,8 +16,7 @@ def setup
|
|
16
16
|
@curr = 0
|
17
17
|
thread do # supply a block in ruby-processing rather than use reflection
|
18
18
|
FRAMES.times do |i|
|
19
|
-
frames << load_image("a#{i.to_s.rjust(3,
|
20
|
-
#frames << load_image("a#{nf(i, 3)} copy.jpg") # processing function nf
|
19
|
+
frames << load_image("a#{i.to_s.rjust(3, '0')} copy.jpg") # ruby syntax
|
21
20
|
@curr = i
|
22
21
|
delay(75) #just slows down this thread - the main draw cycle is unaffected...
|
23
22
|
end
|
@@ -82,8 +82,8 @@ def tick! # When the clock ticks
|
|
82
82
|
column.times do |y|
|
83
83
|
# And visit all the neighbours of each cell
|
84
84
|
neighbours = 0 # We'll count the neighbours
|
85
|
-
(x - 1
|
86
|
-
(y - 1
|
85
|
+
(x - 1..x + 1).each do |xx|
|
86
|
+
(y - 1..y + 1).each do |yy|
|
87
87
|
# Make sure you are not out of bounds
|
88
88
|
if [(xx>=0), (xx<row), (yy>=0), (yy<column)].all? {|in_bounds| in_bounds == true}
|
89
89
|
# Make sure to check against self
|
@@ -96,7 +96,7 @@ def tick! # When the clock ticks
|
|
96
96
|
end # End of yy loop
|
97
97
|
end #End of xx loop
|
98
98
|
# We've checked the neighbours: apply rules in one line (only in ruby)!
|
99
|
-
cells[x][y] = (cells_buffer[x][y])? ((2
|
99
|
+
cells[x][y] = (cells_buffer[x][y])? ((2..3) === neighbours) : (neighbours == 3)
|
100
100
|
end # End of y loop
|
101
101
|
end # End of x loop
|
102
102
|
end # End of function
|
@@ -23,7 +23,7 @@ class CA
|
|
23
23
|
|
24
24
|
# Return a random ruleset
|
25
25
|
def randomize
|
26
|
-
@rules = Array.new(8) {rand(0
|
26
|
+
@rules = Array.new(8) {rand(0..1)}
|
27
27
|
end
|
28
28
|
|
29
29
|
# Reset to generation 0
|
@@ -46,7 +46,7 @@ class CA
|
|
46
46
|
nextgen[i] = execute_rules(left, me, right) # Compute next generation state based on ruleset
|
47
47
|
end
|
48
48
|
# Copy the array into current value
|
49
|
-
(1
|
49
|
+
(1..cells.length - 1).each do |i|
|
50
50
|
cells[i] = nextgen[i]
|
51
51
|
end
|
52
52
|
@generation += 1
|
@@ -38,7 +38,7 @@ class Cell
|
|
38
38
|
elsif (outer.getpix(x + 1, y) == spore1 && outer.getpix(x + 1, y - 1) == black)
|
39
39
|
move(1, -1)
|
40
40
|
else
|
41
|
-
move(rand(1
|
41
|
+
move(rand(1..2), 0)
|
42
42
|
end
|
43
43
|
elsif (my_color == spore2)
|
44
44
|
if (outer.getpix(x - 1, y + 1) == black && outer.getpix(x + 1, y + 1) == black && outer.getpix(x, y + 1) == black)
|
@@ -52,7 +52,7 @@ class Cell
|
|
52
52
|
elsif (outer.getpix(x - 1, y) == spore2 && outer.getpix(x - 1, y - 1) == black)
|
53
53
|
move(-1, -1)
|
54
54
|
else
|
55
|
-
move(rand(1
|
55
|
+
move(rand(1..2), 0)
|
56
56
|
end
|
57
57
|
elsif (my_color == spore3)
|
58
58
|
if (outer.getpix(x - 1, y - 1) == black && outer.getpix(x + 1, y - 1) == black && outer.getpix(x, y - 1) == black)
|
@@ -66,7 +66,7 @@ class Cell
|
|
66
66
|
elsif (outer.getpix(x + 1, y) == spore3 && outer.getpix(x + 1, y + 1) == black)
|
67
67
|
move(1, 1)
|
68
68
|
else
|
69
|
-
move(rand(1
|
69
|
+
move(rand(1..2), 0)
|
70
70
|
end
|
71
71
|
elsif (my_color == spore4)
|
72
72
|
if (outer.getpix(x - 1, y - 1) == black && outer.getpix(x + 1, y - 1) == black && outer.getpix(x, y - 1) == black)
|
@@ -80,7 +80,7 @@ class Cell
|
|
80
80
|
elsif (outer.getpix(x - 1, y) == spore4 && outer.getpix(x - 1, y + 1) == black)
|
81
81
|
move(-1, 1)
|
82
82
|
else
|
83
|
-
move(rand(1
|
83
|
+
move(rand(1..2), 0)
|
84
84
|
end
|
85
85
|
end
|
86
86
|
end
|
@@ -50,7 +50,7 @@ class Particle
|
|
50
50
|
|
51
51
|
def initialize width, height, sprite
|
52
52
|
@width, @height, @sprite = width, height, sprite
|
53
|
-
part_size = rand(10
|
53
|
+
part_size = rand(10..60)
|
54
54
|
# The particle is a textured quad
|
55
55
|
@s_shape = create_shape
|
56
56
|
s_shape.begin_shape(QUAD)
|
@@ -71,8 +71,8 @@ class Particle
|
|
71
71
|
end
|
72
72
|
|
73
73
|
def rebirth(x, y)
|
74
|
-
theta = rand(-PI
|
75
|
-
speed = rand(0.5
|
74
|
+
theta = rand(-PI..PI)
|
75
|
+
speed = rand(0.5..4)
|
76
76
|
# A velocity with random angle and magnitude
|
77
77
|
@velocity = Vec2D.from_angle(theta)
|
78
78
|
@velocity *= speed
|
@@ -6,9 +6,9 @@ class Star
|
|
6
6
|
def initialize(width, height)
|
7
7
|
@width = width
|
8
8
|
@height = height
|
9
|
-
@x = rand(100
|
10
|
-
@y = rand(100
|
11
|
-
@speed = rand(0.5
|
9
|
+
@x = rand(100..width-100)
|
10
|
+
@y = rand(100..height-100)
|
11
|
+
@speed = rand(0.5..3)
|
12
12
|
# First create the shape
|
13
13
|
@s = createShape
|
14
14
|
s.beginShape
|
@@ -14,7 +14,7 @@ def setup
|
|
14
14
|
# Load the image
|
15
15
|
sprite = loadImage('sprite.png')
|
16
16
|
# A new particle system with 10,000 particles
|
17
|
-
@ps = ParticleSystem.new(width, height, sprite,
|
17
|
+
@ps = ParticleSystem.new(width, height, sprite, 10_000)
|
18
18
|
# Writing to the depth buffer is disabled to avoid rendering
|
19
19
|
# artifacts due to the fact that the particles are semi-transparent
|
20
20
|
# but not z-sorted.
|
@@ -64,13 +64,13 @@ def scribble(x1, y1, x2, y2, steps, scrib_val, style)
|
|
64
64
|
(0 ... steps).each do |i|
|
65
65
|
if(style == SCRIBBLE)
|
66
66
|
if (i < steps-1)
|
67
|
-
line(x1, y1, x1 += x_step+rand(-scrib_val
|
67
|
+
line(x1, y1, x1 += x_step+rand(-scrib_val..scrib_val), y1 += y_step + rand(-scrib_val..scrib_val))
|
68
68
|
else
|
69
69
|
# extra line needed to attach line back to point- not necessary in HATCHING style
|
70
70
|
line(x1, y1, x2, y2)
|
71
71
|
end
|
72
72
|
elsif (style == HATCHING)
|
73
|
-
line(x1, y1, (x1 += x_step)+rand(-scrib_val
|
73
|
+
line(x1, y1, (x1 += x_step)+rand(-scrib_val..scrib_val), (y1 += y_step) + rand(-scrib_val..scrib_val))
|
74
74
|
end
|
75
75
|
end
|
76
76
|
end
|
@@ -1,8 +1,8 @@
|
|
1
1
|
#
|
2
|
-
# Button.
|
3
|
-
#
|
4
|
-
# Hover on one of the colored objects in the
|
5
|
-
# center of the image to change their color
|
2
|
+
# Button.
|
3
|
+
#
|
4
|
+
# Hover on one of the colored objects in the
|
5
|
+
# center of the image to change their color
|
6
6
|
#
|
7
7
|
|
8
8
|
RECT_SIZE = 90 # Diameter of rect
|
@@ -21,16 +21,16 @@ def setup
|
|
21
21
|
@base_color = color(102)
|
22
22
|
@current_color = base_color
|
23
23
|
@circle_x = (width + CIRCLE_SIZE) / 2 + 10
|
24
|
-
@circle_y = height/2
|
25
|
-
@rect_x = width/2 - RECT_SIZE - 10
|
26
|
-
@rect_y = height/2 - RECT_SIZE / 2
|
24
|
+
@circle_y = height / 2
|
25
|
+
@rect_x = width / 2 - RECT_SIZE - 10
|
26
|
+
@rect_y = height / 2 - RECT_SIZE / 2
|
27
27
|
ellipse_mode(CENTER)
|
28
28
|
end
|
29
29
|
|
30
30
|
def draw
|
31
31
|
update(mouse_x, mouse_y)
|
32
32
|
background(current_color)
|
33
|
-
|
33
|
+
|
34
34
|
if (rect_over)
|
35
35
|
fill(rect_highlight)
|
36
36
|
else
|
@@ -38,7 +38,7 @@ def draw
|
|
38
38
|
end
|
39
39
|
stroke(255)
|
40
40
|
rect(rect_x, rect_y, RECT_SIZE, RECT_SIZE)
|
41
|
-
|
41
|
+
|
42
42
|
if (circle_over)
|
43
43
|
fill(circle_highlight)
|
44
44
|
else
|
@@ -49,26 +49,26 @@ def draw
|
|
49
49
|
end
|
50
50
|
|
51
51
|
def update(x, y)
|
52
|
-
if over_circle?(circle_x, circle_y, CIRCLE_SIZE)
|
52
|
+
if over_circle?(circle_x, circle_y, CIRCLE_SIZE)
|
53
53
|
@circle_over, @rect_over = true, false
|
54
|
-
elsif over_rect?(rect_x, rect_y, RECT_SIZE, RECT_SIZE)
|
54
|
+
elsif over_rect?(rect_x, rect_y, RECT_SIZE, RECT_SIZE)
|
55
55
|
@circle_over, @rect_over = false, true
|
56
56
|
else
|
57
57
|
@circle_over, @rect_over = false, false
|
58
58
|
end
|
59
59
|
end
|
60
60
|
|
61
|
-
def mouse_pressed
|
62
|
-
@current_color = (circle_over)? circle_color : (rect_over)?
|
63
|
-
rect_color : current_color
|
61
|
+
def mouse_pressed
|
62
|
+
@current_color = (circle_over)? circle_color : (rect_over)?
|
63
|
+
rect_color : current_color
|
64
64
|
end
|
65
65
|
|
66
66
|
def over_rect?(x, y, width, height)
|
67
|
-
(
|
67
|
+
(x..width + x).include?(mouse_x) && (y..height + y).include?(mouse_y)
|
68
68
|
end
|
69
69
|
|
70
70
|
def over_circle?(x, y, diameter)
|
71
71
|
dis_x = x - mouse_x
|
72
72
|
dis_y = y - mouse_y
|
73
|
-
(
|
73
|
+
hypot(dis_x, dis_y) < diameter / 2
|
74
74
|
end
|
@@ -1,9 +1,9 @@
|
|
1
1
|
#
|
2
|
-
# Button.
|
3
|
-
#
|
4
|
-
# Click on one of the colored squares in the
|
5
|
-
# center of the image to change the color of
|
6
|
-
# the background.
|
2
|
+
# Button.
|
3
|
+
#
|
4
|
+
# Click on one of the colored squares in the
|
5
|
+
# center of the image to change the color of
|
6
|
+
# the background.
|
7
7
|
#
|
8
8
|
|
9
9
|
RECT_SIZE = 90 # Diameter of rect
|
@@ -26,26 +26,26 @@ def setup
|
|
26
26
|
end
|
27
27
|
|
28
28
|
def draw
|
29
|
-
update(mouse_x, mouse_y)
|
30
|
-
if (rect_over)
|
29
|
+
update(mouse_x, mouse_y)
|
30
|
+
if (rect_over)
|
31
31
|
background(rect_color)
|
32
|
-
elsif (circle_over)
|
32
|
+
elsif (circle_over)
|
33
33
|
background(circle_color)
|
34
|
-
else
|
34
|
+
else
|
35
35
|
background(base_color)
|
36
36
|
end
|
37
37
|
stroke(255)
|
38
38
|
fill(rect_color)
|
39
|
-
rect(rect_x, rect_y, RECT_SIZE, RECT_SIZE)
|
39
|
+
rect(rect_x, rect_y, RECT_SIZE, RECT_SIZE)
|
40
40
|
stroke(0)
|
41
41
|
fill(circle_color)
|
42
42
|
ellipse(circle_x, circle_y, CIRCLE_SIZE, CIRCLE_SIZE)
|
43
43
|
end
|
44
44
|
|
45
45
|
def update(x, y)
|
46
|
-
if over_circle?(circle_x, circle_y, CIRCLE_SIZE)
|
46
|
+
if over_circle?(circle_x, circle_y, CIRCLE_SIZE)
|
47
47
|
@circle_over, @rect_over = true, false
|
48
|
-
elsif over_rect?(rect_x, rect_y, RECT_SIZE, RECT_SIZE)
|
48
|
+
elsif over_rect?(rect_x, rect_y, RECT_SIZE, RECT_SIZE)
|
49
49
|
@circle_over, @rect_over = false, true
|
50
50
|
else
|
51
51
|
@circle_over, @rect_over = false, false
|
@@ -59,5 +59,5 @@ end
|
|
59
59
|
def over_circle?(x, y, diameter)
|
60
60
|
dis_x = x - mouse_x
|
61
61
|
dis_y = y - mouse_y
|
62
|
-
(
|
62
|
+
(hypot(dis_x, dis_y) < diameter/2 )
|
63
63
|
end
|