ruby-processing 2.6.2 → 2.6.3
Sign up to get free protection for your applications and to get access to all the features.
- 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
|