ruby-processing 1.0.9 → 1.0.10.1
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 +13 -1
- data/bin/rp5 +8 -2
- data/lib/core/core.jar +0 -0
- data/lib/core/jruby-complete.jar +0 -0
- data/lib/ruby-processing.rb +2 -2
- data/lib/ruby-processing/app.rb +108 -338
- data/lib/ruby-processing/config.rb +6 -0
- data/lib/ruby-processing/helper_methods.rb +120 -0
- data/lib/ruby-processing/library_loader.rb +140 -0
- data/lib/ruby-processing/runner.rb +34 -4
- data/lib/ruby-processing/runners/base.rb +10 -11
- data/lib/ruby-processing/runners/live.rb +1 -1
- data/lib/ruby-processing/runners/run.rb +1 -1
- data/lib/ruby-processing/runners/watch.rb +18 -76
- data/lib/templates/applet/index.html.erb +8 -9
- data/library/control_panel/control_panel.rb +1 -1
- data/library/dxf/library/dxf.jar +0 -0
- data/library/dxf/library/export.txt +1 -0
- data/library/javascript/library/export.txt +3 -1
- data/library/minim/library/export.txt +1 -0
- data/library/minim/library/jl1.0.jar +0 -0
- data/library/minim/library/jsminim.jar +0 -0
- data/library/minim/library/minim-spi.jar +0 -0
- data/library/minim/library/minim.jar +0 -0
- data/library/minim/library/mp3spi1.9.4.jar +0 -0
- data/library/minim/library/tritonus_aos.jar +0 -0
- data/library/minim/library/tritonus_share.jar +0 -0
- data/library/net/library/export.txt +1 -0
- data/library/net/library/net.jar +0 -0
- data/library/opengl/library/export.txt +7 -10
- data/library/opengl/library/gluegen-rt.jar +0 -0
- data/library/opengl/library/jogl.jar +0 -0
- data/library/opengl/library/{libgluegen-rt.so → linux32/libgluegen-rt.so} +0 -0
- data/library/opengl/library/{libjogl.so → linux32/libjogl.so} +0 -0
- data/library/opengl/library/{libjogl_awt.so → linux32/libjogl_awt.so} +0 -0
- data/library/opengl/library/{libjogl_cg.so → linux32/libjogl_cg.so} +0 -0
- data/library/opengl/library/linux64/libgluegen-rt.so +0 -0
- data/library/opengl/library/linux64/libjogl.so +0 -0
- data/library/opengl/library/linux64/libjogl_awt.so +0 -0
- data/library/opengl/library/linux64/libjogl_cg.so +0 -0
- data/library/opengl/library/{libgluegen-rt.jnilib → macosx/libgluegen-rt.jnilib} +0 -0
- data/library/opengl/library/{libjogl.jnilib → macosx/libjogl.jnilib} +0 -0
- data/library/opengl/library/{libjogl_awt.jnilib → macosx/libjogl_awt.jnilib} +0 -0
- data/library/opengl/library/{libjogl_cg.jnilib → macosx/libjogl_cg.jnilib} +0 -0
- data/library/opengl/library/opengl.jar +0 -0
- data/library/opengl/library/{gluegen-rt.dll → windows32/gluegen-rt.dll} +0 -0
- data/library/opengl/library/{jogl.dll → windows32/jogl.dll} +0 -0
- data/library/opengl/library/{jogl_awt.dll → windows32/jogl_awt.dll} +0 -0
- data/library/opengl/library/{jogl_cg.dll → windows32/jogl_cg.dll} +0 -0
- data/library/opengl/library/windows64/gluegen-rt.dll +0 -0
- data/library/opengl/library/windows64/jogl.dll +0 -0
- data/library/opengl/library/windows64/jogl_awt.dll +0 -0
- data/library/opengl/library/windows64/jogl_cg.dll +0 -0
- data/library/pdf/library/export.txt +1 -0
- data/library/pdf/library/itext.jar +0 -0
- data/library/pdf/library/pdf.jar +0 -0
- data/library/serial/library/RXTXcomm.jar +0 -0
- data/library/serial/library/export.txt +1 -3
- data/library/serial/library/linux32/librxtxSerial.so +0 -0
- data/library/serial/library/linux64/librxtxSerial.so +0 -0
- data/library/serial/library/macosx/librxtxSerial.jnilib +0 -0
- data/library/serial/library/serial.jar +0 -0
- data/library/serial/library/windows32/rxtxSerial.dll +0 -0
- data/library/serial/library/windows64/rxtxSerial.dll +0 -0
- data/library/video/library/export.txt +1 -0
- data/library/video/library/video.jar +0 -0
- data/samples/{animator.rb → contributed/animator.rb} +0 -0
- data/samples/{bezier_playground.rb → contributed/bezier_playground.rb} +0 -0
- data/samples/{circle_collision.rb → contributed/circle_collision.rb} +0 -0
- data/samples/contributed/drawolver.rb +182 -0
- data/samples/{empathy.rb → contributed/empathy.rb} +7 -7
- data/samples/{fern.rb → contributed/fern.rb} +0 -0
- data/samples/{flight_patterns.rb → contributed/flight_patterns.rb} +0 -0
- data/samples/{full_screen.rb → contributed/full_screen.rb} +0 -0
- data/samples/{getting_started.rb → contributed/getting_started.rb} +0 -0
- data/samples/{gravity.rb → contributed/gravity.rb} +0 -0
- data/samples/{jwishy.rb → contributed/jwishy.rb} +0 -0
- data/samples/{orbit.rb → contributed/orbit.rb} +0 -0
- data/samples/{pong.rb → contributed/pong.rb} +0 -0
- data/samples/{reflection.rb → contributed/reflection.rb} +0 -0
- data/samples/{simple_buffer.rb → contributed/simple_buffer.rb} +0 -0
- data/samples/{tree.rb → contributed/tree.rb} +0 -0
- data/samples/peasy_cam/library/hilbert/hilbert.rb +11 -10
- data/samples/processing_app/3D/camera/move_eye.rb +29 -0
- data/samples/processing_app/3D/form/brick_tower.rb +11 -11
- data/samples/processing_app/3D/form/cubic_grid.rb +51 -0
- data/samples/processing_app/3D/form/icosahedra/icosahedra.rb +76 -0
- data/samples/processing_app/3D/form/icosahedra/icosahedron.rb +116 -0
- data/samples/processing_app/3D/form/icosahedra/shape_3D.rb +25 -0
- data/samples/processing_app/3D/form/primitives.rb +42 -0
- data/samples/processing_app/3D/form/rgb_cube.rb +88 -0
- data/samples/processing_app/3D/form/shape_transform.rb +94 -0
- data/samples/processing_app/3D/form/toroid.rb +130 -0
- data/samples/processing_app/3D/form/vertices.rb +81 -0
- data/samples/processing_app/3D/image/data/eames.jpg +0 -0
- data/samples/processing_app/3D/image/data/ystone08.jpg +0 -0
- data/samples/processing_app/3D/image/explode.rb +56 -0
- data/samples/processing_app/3D/image/extrusion.rb +49 -0
- data/samples/processing_app/3D/image/zoom.rb +83 -0
- data/samples/processing_app/3D/lights/directional.rb +41 -0
- data/samples/processing_app/3D/lights/lights1.rb +39 -0
- data/samples/processing_app/3D/lights/lights2.rb +42 -0
- data/samples/processing_app/3D/lights/reflection.rb +38 -0
- data/samples/processing_app/3D/lights/spot.rb +39 -0
- data/samples/processing_app/3D/textures/data/berlin-1.jpg +0 -0
- data/samples/processing_app/3D/textures/texture1.rb +41 -0
- data/samples/processing_app/3D/textures/texture2.rb +38 -0
- data/samples/processing_app/3D/textures/texture3.rb +68 -0
- data/samples/processing_app/3D/textures/texture_cube.rb +106 -0
- data/samples/processing_app/3D/transform/bird.rb +61 -0
- data/samples/processing_app/3D/transform/birds/bird.rb +87 -0
- data/samples/processing_app/3D/transform/birds/birds.rb +48 -0
- data/samples/processing_app/3D/transform/cubes_in_cube/cube.rb +57 -0
- data/samples/processing_app/3D/transform/cubes_in_cube/cubes_in_cube.rb +102 -0
- data/samples/processing_app/3D/transform/push_pop_cubes.rb +152 -0
- data/samples/processing_app/3D/transform/rotate1.rb +43 -0
- data/samples/processing_app/3D/transform/rotate2.rb +45 -0
- data/samples/processing_app/3D/typography/data/Univers45.vlw +0 -0
- data/samples/processing_app/3D/typography/letter_k.rb +136 -0
- data/samples/processing_app/3D/typography/typing.rb +77 -0
- data/samples/processing_app/basics/form/triangle_strip.rb +19 -19
- data/samples/processing_app/basics/math/distance1.rb +59 -0
- data/samples/processing_app/basics/math/distance2.rb +38 -0
- data/samples/processing_app/basics/math/double_random.rb +38 -0
- data/samples/processing_app/basics/math/graphing_2_d_equation.rb +53 -0
- data/samples/processing_app/basics/math/increment_decrement.rb +59 -0
- data/samples/processing_app/basics/math/modulo.rb +43 -0
- data/samples/processing_app/basics/math/noise_1_d.rb +37 -0
- data/samples/processing_app/basics/math/noise_2_d.rb +47 -0
- data/samples/processing_app/basics/math/noise_3_d.rb +50 -0
- data/samples/processing_app/basics/math/noise_wave.rb +61 -0
- data/samples/processing_app/basics/math/operator_precedence.rb +70 -0
- data/samples/processing_app/basics/math/polar_to_cartesian.rb +44 -0
- data/samples/processing_app/basics/math/random.rb +35 -0
- data/samples/processing_app/basics/math/sine.rb +49 -0
- data/samples/processing_app/basics/math/sine_cosine.rb +60 -0
- data/samples/processing_app/basics/math/sine_wave.rb +62 -0
- data/samples/processing_app/basics/objects/composite_objects.rb +139 -0
- data/samples/processing_app/basics/objects/inheritance.rb +104 -0
- data/samples/processing_app/basics/objects/multiple_constructors.rb +66 -0
- data/samples/processing_app/basics/objects/objects.rb +72 -0
- data/samples/processing_app/basics/shape/data/bot1.svg +160 -0
- data/samples/processing_app/basics/shape/data/usa-wikipedia.svg +452 -0
- data/samples/processing_app/basics/shape/disable_style.rb +36 -0
- data/samples/processing_app/basics/shape/get_child.rb +43 -0
- data/samples/processing_app/basics/shape/load_display_shape.rb +33 -0
- data/samples/processing_app/basics/shape/scale_shape.rb +33 -0
- data/samples/processing_app/basics/structure/coordinates.rb +55 -0
- data/samples/processing_app/basics/structure/create_graphics.rb +39 -0
- data/samples/processing_app/basics/structure/functions.rb +41 -0
- data/samples/processing_app/basics/structure/loop.rb +39 -0
- data/samples/processing_app/basics/structure/noloop.rb +33 -0
- data/samples/processing_app/basics/structure/recursion1.rb +42 -0
- data/samples/processing_app/basics/structure/recursion2.rb +39 -0
- data/samples/processing_app/basics/structure/redraw.rb +36 -0
- data/samples/processing_app/basics/structure/setup_draw.rb +30 -0
- data/samples/processing_app/basics/structure/statements_comments.rb +32 -0
- data/samples/processing_app/basics/structure/width_height.rb +29 -0
- data/samples/processing_app/basics/transform/arm.rb +47 -0
- data/samples/processing_app/basics/transform/rotate.rb +43 -0
- data/samples/processing_app/basics/transform/scale.rb +45 -0
- data/samples/processing_app/basics/transform/translate.rb +41 -0
- data/samples/processing_app/basics/transform/triangle_flower.rb +69 -0
- data/samples/processing_app/basics/typography/data/CourierNew36.vlw +0 -0
- data/samples/processing_app/basics/typography/data/Ziggurat-HTF-Black-32.vlw +0 -0
- data/samples/processing_app/basics/typography/letters.rb +52 -0
- data/samples/processing_app/basics/typography/words.rb +37 -0
- data/samples/processing_app/basics/web/embedded_links.rb +58 -0
- data/samples/processing_app/basics/web/loading_images.rb +25 -0
- metadata +181 -86
- data/lib/patches/JRubyApplet.diff +0 -24
- data/lib/patches/PATCHES.txt +0 -3
- data/lib/patches/PApplet.diff +0 -27
- data/library/minim/license.txt +0 -339
- data/library/minim/version.txt +0 -1
- data/library/opengl/library/gluegen-rt-natives-linux-amd64.jar +0 -0
- data/library/opengl/library/gluegen-rt-natives-linux-i586.jar +0 -0
- data/library/opengl/library/gluegen-rt-natives-macosx-ppc.jar +0 -0
- data/library/opengl/library/gluegen-rt-natives-macosx-universal.jar +0 -0
- data/library/opengl/library/gluegen-rt-natives-windows-amd64.jar +0 -0
- data/library/opengl/library/gluegen-rt-natives-windows-i586.jar +0 -0
- data/library/opengl/library/gluegen-rt.jar.pack.gz +0 -0
- data/library/opengl/library/jogl-natives-linux-amd64.jar +0 -0
- data/library/opengl/library/jogl-natives-linux-i586.jar +0 -0
- data/library/opengl/library/jogl-natives-macosx-ppc.jar +0 -0
- data/library/opengl/library/jogl-natives-macosx-universal.jar +0 -0
- data/library/opengl/library/jogl-natives-windows-amd64.jar +0 -0
- data/library/opengl/library/jogl-natives-windows-i586.jar +0 -0
- data/library/opengl/library/jogl.jar.pack.gz +0 -0
- data/library/pdf/notes.txt +0 -8
- data/library/serial/library/librxtxSerial.jnilib +0 -0
- data/library/serial/library/librxtxSerial.so +0 -0
- data/library/serial/library/rxtxSerial.dll +0 -0
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
# Noise3D.
|
|
2
|
+
#
|
|
3
|
+
# Using 3D noise to create simple animated texture.
|
|
4
|
+
# Here, the third dimension ('z') is treated as time.
|
|
5
|
+
|
|
6
|
+
class Noise3D < Processing::App
|
|
7
|
+
|
|
8
|
+
def setup
|
|
9
|
+
|
|
10
|
+
size 200, 200
|
|
11
|
+
frame_rate 30
|
|
12
|
+
|
|
13
|
+
@increment = 0.01
|
|
14
|
+
@zoff = 0.0
|
|
15
|
+
@z_increment = 0.02
|
|
16
|
+
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
def draw
|
|
20
|
+
|
|
21
|
+
background 0
|
|
22
|
+
|
|
23
|
+
load_pixels
|
|
24
|
+
|
|
25
|
+
xoff = 0.0
|
|
26
|
+
|
|
27
|
+
(0...width).each { |x|
|
|
28
|
+
|
|
29
|
+
xoff += @increment
|
|
30
|
+
yoff = 0.0
|
|
31
|
+
|
|
32
|
+
(0...height).each { |y|
|
|
33
|
+
|
|
34
|
+
yoff += @increment
|
|
35
|
+
|
|
36
|
+
bright = noise( xoff, yoff, @zoff ) * 255
|
|
37
|
+
|
|
38
|
+
pixels[x+y*width] = color bright
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
update_pixels
|
|
43
|
+
|
|
44
|
+
@zoff += @z_increment
|
|
45
|
+
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
Noise3D.new :title => "Noise 3 D"
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
# Noise Wave
|
|
2
|
+
|
|
3
|
+
class NoiseWave < Processing::App
|
|
4
|
+
|
|
5
|
+
def setup
|
|
6
|
+
|
|
7
|
+
size 200, 200
|
|
8
|
+
frame_rate 30
|
|
9
|
+
|
|
10
|
+
color_mode RGB, 255, 255, 255, 100
|
|
11
|
+
smooth
|
|
12
|
+
@w = width + 16
|
|
13
|
+
@y_values = []
|
|
14
|
+
@x_spacing = 8
|
|
15
|
+
@yoff = 0.0
|
|
16
|
+
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
def draw
|
|
20
|
+
|
|
21
|
+
background 0
|
|
22
|
+
|
|
23
|
+
calc_wave
|
|
24
|
+
draw_wave
|
|
25
|
+
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
def calc_wave
|
|
29
|
+
|
|
30
|
+
dx = 0.05
|
|
31
|
+
dy = 0.01
|
|
32
|
+
amplitude = 100.0
|
|
33
|
+
|
|
34
|
+
@yoff += dy
|
|
35
|
+
|
|
36
|
+
xoff = @yoff
|
|
37
|
+
|
|
38
|
+
(0...(@w/@x_spacing)).each { |i|
|
|
39
|
+
|
|
40
|
+
@y_values[i] = (2 * noise(xoff) - 1) * amplitude
|
|
41
|
+
xoff += dx
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
def draw_wave
|
|
47
|
+
|
|
48
|
+
no_stroke
|
|
49
|
+
fill 255, 50
|
|
50
|
+
ellipse_mode CENTER
|
|
51
|
+
|
|
52
|
+
@y_values.each_with_index { |v, x|
|
|
53
|
+
|
|
54
|
+
ellipse x * @x_spacing, width/2 + v, 16, 16
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
end
|
|
58
|
+
|
|
59
|
+
end
|
|
60
|
+
|
|
61
|
+
NoiseWave.new :title => "Noise Wave"
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
# Operator Precedence
|
|
2
|
+
#
|
|
3
|
+
# If you don't explicitly state the order in which
|
|
4
|
+
# an expression is evaluated, they are evaluated based
|
|
5
|
+
# on the operator precedence. For example, in the statement
|
|
6
|
+
# "4+2*8", the 2 will first be multiplied by 8 and then the result will
|
|
7
|
+
# be added to 4. This is because the "*" has a higher precedence
|
|
8
|
+
# than the "+". To avoid ambiguity in reading the program,
|
|
9
|
+
# it is recommended that is statement is written as "4+(2*8)".
|
|
10
|
+
# The order of evaluation can be controlled through placement of
|
|
11
|
+
# parenthesis in the code. A table of operator precedence follows below.
|
|
12
|
+
|
|
13
|
+
# The highest precedence is at the top of the list and
|
|
14
|
+
# the lowest is at the bottom.
|
|
15
|
+
# Multiplicative: * / %
|
|
16
|
+
# Additive: + -
|
|
17
|
+
# Relational: < > <= >=
|
|
18
|
+
# Equality: == !=
|
|
19
|
+
# Logical AND: &&
|
|
20
|
+
# Logical OR: ||
|
|
21
|
+
# Assignment: = += -= *= /= %=
|
|
22
|
+
|
|
23
|
+
class OperatorPrecedence < Processing::App
|
|
24
|
+
|
|
25
|
+
def setup
|
|
26
|
+
|
|
27
|
+
size 200, 200
|
|
28
|
+
|
|
29
|
+
background 51
|
|
30
|
+
|
|
31
|
+
no_fill
|
|
32
|
+
stroke 204
|
|
33
|
+
|
|
34
|
+
(0...(width-20)).step( 4 ) { |i|
|
|
35
|
+
|
|
36
|
+
# The 30 is added to 70 and then evaluated
|
|
37
|
+
# if it is greater than the current value of "i"
|
|
38
|
+
# For clarity, write as "if i > (30 + 70))"
|
|
39
|
+
|
|
40
|
+
line i, 0, i, 50 if i > 30 + 70
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
stroke 255
|
|
44
|
+
|
|
45
|
+
# The 2 is multiplied by the 8 and the result is added to the 4
|
|
46
|
+
# For clarity, write as "rect 4 + (2 * 8), 52, 90, 48"
|
|
47
|
+
|
|
48
|
+
rect( 4 + 2 * 8, 52, 90, 48 )
|
|
49
|
+
rect( (4 + 2) * 8, 100, 90, 49 )
|
|
50
|
+
|
|
51
|
+
stroke 153
|
|
52
|
+
|
|
53
|
+
(0...width).step( 2 ) { |i|
|
|
54
|
+
|
|
55
|
+
# The relational statements are evaluated
|
|
56
|
+
# first, and then the logical AND statements and
|
|
57
|
+
# finally the logical OR. For clarity, write as:
|
|
58
|
+
# "if ((i > 20) && (i < 50)) || ((i > 100) && (i < 180))"
|
|
59
|
+
|
|
60
|
+
line i, 151, i, height-1 if i > 20 && i < 50 || i > 100 && i < width-20
|
|
61
|
+
}
|
|
62
|
+
end
|
|
63
|
+
|
|
64
|
+
def draw
|
|
65
|
+
|
|
66
|
+
end
|
|
67
|
+
|
|
68
|
+
end
|
|
69
|
+
|
|
70
|
+
OperatorPrecedence.new :title => "Operator Precedence"
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
# PolarToCartesian
|
|
2
|
+
# by Daniel Shiffman.
|
|
3
|
+
#
|
|
4
|
+
# Convert a polar coordinate (r,theta) to cartesian (x,y):
|
|
5
|
+
# x = r * cos(theta)
|
|
6
|
+
# y = r * sin(theta)
|
|
7
|
+
|
|
8
|
+
class PolarToCartesian < Processing::App
|
|
9
|
+
|
|
10
|
+
def setup
|
|
11
|
+
|
|
12
|
+
size 200, 200
|
|
13
|
+
|
|
14
|
+
frame_rate 30
|
|
15
|
+
smooth
|
|
16
|
+
|
|
17
|
+
@r = 50.0
|
|
18
|
+
@theta = 0.0
|
|
19
|
+
@theta_vel = 0.0
|
|
20
|
+
@theta_acc = 0.1e-3
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
def draw
|
|
24
|
+
|
|
25
|
+
background 0
|
|
26
|
+
|
|
27
|
+
translate width/2, height/2
|
|
28
|
+
|
|
29
|
+
x = @r * cos( @theta )
|
|
30
|
+
y = @r * sin( @theta )
|
|
31
|
+
|
|
32
|
+
ellipse_mode CENTER
|
|
33
|
+
no_stroke
|
|
34
|
+
fill 200
|
|
35
|
+
ellipse x, y, 16, 16
|
|
36
|
+
|
|
37
|
+
@theta_vel += @theta_acc
|
|
38
|
+
@theta += @theta_vel
|
|
39
|
+
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
PolarToCartesian.new :title => "Polar To Cartesian"
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
# Random.
|
|
2
|
+
#
|
|
3
|
+
# Random numbers create the basis of this image.
|
|
4
|
+
# Each time the program is loaded the result is different.
|
|
5
|
+
|
|
6
|
+
class Random < Processing::App
|
|
7
|
+
|
|
8
|
+
def setup
|
|
9
|
+
|
|
10
|
+
size 200, 200
|
|
11
|
+
|
|
12
|
+
smooth
|
|
13
|
+
stroke_weight 10
|
|
14
|
+
|
|
15
|
+
no_loop
|
|
16
|
+
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
def draw
|
|
20
|
+
|
|
21
|
+
background 0
|
|
22
|
+
|
|
23
|
+
(0...width).each { |i|
|
|
24
|
+
|
|
25
|
+
r = random 255
|
|
26
|
+
x = random 0, width
|
|
27
|
+
stroke r, 100
|
|
28
|
+
line i, 0, x, height
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
Random.new :title => "Random"
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
# Sine.
|
|
2
|
+
#
|
|
3
|
+
# Smoothly scaling size with the sin() function.
|
|
4
|
+
|
|
5
|
+
class Sine < Processing::App
|
|
6
|
+
|
|
7
|
+
def setup
|
|
8
|
+
|
|
9
|
+
size 200, 200
|
|
10
|
+
no_stroke
|
|
11
|
+
smooth
|
|
12
|
+
|
|
13
|
+
@diameter = 84.0
|
|
14
|
+
@sin = 0.0
|
|
15
|
+
@angle = 0.0
|
|
16
|
+
@rad_points = 90
|
|
17
|
+
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
def draw
|
|
21
|
+
|
|
22
|
+
background 153
|
|
23
|
+
|
|
24
|
+
translate 130, 65
|
|
25
|
+
|
|
26
|
+
fill 255
|
|
27
|
+
ellipse 0, 0, 16, 16
|
|
28
|
+
|
|
29
|
+
angle_rot = 0.0
|
|
30
|
+
fill 51
|
|
31
|
+
|
|
32
|
+
(0...5).each { |i|
|
|
33
|
+
|
|
34
|
+
push_matrix
|
|
35
|
+
rotate angle_rot - 45
|
|
36
|
+
ellipse -116, 0, @diameter, @diameter
|
|
37
|
+
pop_matrix
|
|
38
|
+
angle_rot += TWO_PI/5
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
@diameter = 34 * sin( @angle ) + 168
|
|
42
|
+
@angle += 0.02
|
|
43
|
+
#@angle = 0.0 if @angle > TWO_PI
|
|
44
|
+
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
Sine.new :title => "Sine"
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
# Sine Cosine.
|
|
2
|
+
#
|
|
3
|
+
# Linear movement with sin() and cos().
|
|
4
|
+
# Numbers between 0 and PI*2 (TWO_PI which is roughly 6.28)
|
|
5
|
+
# are put into these functions and numbers between -1 and 1 are
|
|
6
|
+
# returned. These values are then scaled to produce larger movements.
|
|
7
|
+
|
|
8
|
+
class SineCosine < Processing::App
|
|
9
|
+
|
|
10
|
+
def setup
|
|
11
|
+
|
|
12
|
+
size 200, 200
|
|
13
|
+
no_stroke
|
|
14
|
+
smooth
|
|
15
|
+
|
|
16
|
+
@i = 45
|
|
17
|
+
@j = 225
|
|
18
|
+
@pos1 = 0.0
|
|
19
|
+
@pos2 = 0.0
|
|
20
|
+
@pos3 = 0.0
|
|
21
|
+
@pos4 = 0.0
|
|
22
|
+
@sc = 40
|
|
23
|
+
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
def draw
|
|
27
|
+
|
|
28
|
+
background 0
|
|
29
|
+
|
|
30
|
+
fill 51
|
|
31
|
+
rect 60, 60, 80, 80
|
|
32
|
+
|
|
33
|
+
fill 255
|
|
34
|
+
ellipse @pos1, 36, 32, 32
|
|
35
|
+
|
|
36
|
+
fill 153
|
|
37
|
+
ellipse 36, @pos2, 32, 32
|
|
38
|
+
|
|
39
|
+
fill 255
|
|
40
|
+
ellipse @pos3, 164, 32, 32
|
|
41
|
+
|
|
42
|
+
fill 153
|
|
43
|
+
ellipse 164, @pos4, 32, 32
|
|
44
|
+
|
|
45
|
+
@i += 3
|
|
46
|
+
@j -= 3
|
|
47
|
+
|
|
48
|
+
ang1 = radians @i
|
|
49
|
+
ang2 = radians @j
|
|
50
|
+
|
|
51
|
+
@pos1 = width/2 + (@sc * cos( ang1 ))
|
|
52
|
+
@pos2 = width/2 + (@sc * sin( ang1 ))
|
|
53
|
+
@pos3 = width/2 + (@sc * cos( ang2 ))
|
|
54
|
+
@pos4 = width/2 + (@sc * sin( ang2 ))
|
|
55
|
+
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
end
|
|
59
|
+
|
|
60
|
+
SineCosine.new :title => "Sine Cosine"
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
# Sine Wave
|
|
2
|
+
# by Daniel Shiffman.
|
|
3
|
+
#
|
|
4
|
+
# Render a simple sine wave.
|
|
5
|
+
|
|
6
|
+
class SineWave < Processing::App
|
|
7
|
+
|
|
8
|
+
def setup
|
|
9
|
+
|
|
10
|
+
size 200, 200
|
|
11
|
+
|
|
12
|
+
frame_rate 30
|
|
13
|
+
color_mode RGB, 255, 255, 255, 100
|
|
14
|
+
smooth
|
|
15
|
+
|
|
16
|
+
@w = width + 16
|
|
17
|
+
@period = 500.0
|
|
18
|
+
@x_spacing = 8
|
|
19
|
+
@dx = (TWO_PI / @period) * @x_spacing
|
|
20
|
+
@y_values = []
|
|
21
|
+
@theta = 0.0
|
|
22
|
+
@amplitude = 75.0
|
|
23
|
+
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
def draw
|
|
27
|
+
|
|
28
|
+
background 0
|
|
29
|
+
calc_wave
|
|
30
|
+
draw_wave
|
|
31
|
+
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
def calc_wave
|
|
35
|
+
|
|
36
|
+
@theta += 0.02
|
|
37
|
+
|
|
38
|
+
x = @theta
|
|
39
|
+
(0...(@w/@x_spacing)).each { |i|
|
|
40
|
+
|
|
41
|
+
@y_values[i] = sin(x) * @amplitude
|
|
42
|
+
x += @dx
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
def draw_wave
|
|
48
|
+
|
|
49
|
+
no_stroke
|
|
50
|
+
fill 255, 50
|
|
51
|
+
ellipse_mode CENTER
|
|
52
|
+
|
|
53
|
+
@y_values.each_with_index { |v, x|
|
|
54
|
+
|
|
55
|
+
ellipse x*@x_spacing, width/2+v, 16, 16
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
end
|
|
59
|
+
|
|
60
|
+
end
|
|
61
|
+
|
|
62
|
+
SineWave.new :title => "Sine Wave"
|
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
# Composite Objects
|
|
2
|
+
#
|
|
3
|
+
# An object can include several other objects. Creating such composite objects
|
|
4
|
+
# is a good way to use the principles of modularity and build higher levels of
|
|
5
|
+
# abstraction within a program.
|
|
6
|
+
|
|
7
|
+
class CompositeObjects < Processing::App
|
|
8
|
+
|
|
9
|
+
def setup
|
|
10
|
+
|
|
11
|
+
size 200, 200
|
|
12
|
+
smooth
|
|
13
|
+
@er1 = EggRing.new 66, 132, 0.1, 66
|
|
14
|
+
@er2 = EggRing.new 132, 180, 0.05, 132
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
def draw
|
|
18
|
+
|
|
19
|
+
background 0
|
|
20
|
+
|
|
21
|
+
[@er1, @er2].each do |er| er.transmit end
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
# vvv CLASS EGG RING
|
|
25
|
+
|
|
26
|
+
class EggRing
|
|
27
|
+
|
|
28
|
+
def initialize ( x, y, t, sp )
|
|
29
|
+
|
|
30
|
+
@ovoid = Egg.new x, y, t, sp
|
|
31
|
+
@circle = Ring.new
|
|
32
|
+
@circle.start x, y - sp/2
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
def transmit
|
|
36
|
+
|
|
37
|
+
@ovoid.wobble
|
|
38
|
+
@ovoid.display
|
|
39
|
+
@circle.grow
|
|
40
|
+
@circle.display
|
|
41
|
+
@circle.on = true unless @circle.on
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
# ^^^ CLASS EGG RING
|
|
47
|
+
|
|
48
|
+
# vvv CLASS EGG
|
|
49
|
+
|
|
50
|
+
class Egg
|
|
51
|
+
|
|
52
|
+
attr_accessor :x, :y # these are (or better generate) getters/setters
|
|
53
|
+
# for these instance variables
|
|
54
|
+
attr_accessor :tilt
|
|
55
|
+
attr_accessor :angle
|
|
56
|
+
attr_accessor :scalar
|
|
57
|
+
|
|
58
|
+
def initialize ( x, y, t, s )
|
|
59
|
+
|
|
60
|
+
@x, @y = x, y # the @-sign means that these are instance variables
|
|
61
|
+
@tilt = t
|
|
62
|
+
@scalar = s / 100.0
|
|
63
|
+
@angle = 0.0
|
|
64
|
+
end
|
|
65
|
+
|
|
66
|
+
def wobble
|
|
67
|
+
|
|
68
|
+
@tilt = Math.cos( @angle ) / 8
|
|
69
|
+
@angle += 0.1
|
|
70
|
+
end
|
|
71
|
+
|
|
72
|
+
def display
|
|
73
|
+
|
|
74
|
+
no_stroke # in Ruby-Processing classes defined inside the main sketch
|
|
75
|
+
# class automatically inherit the Processing commands, just
|
|
76
|
+
# like "inner classes" in Java
|
|
77
|
+
fill 255
|
|
78
|
+
|
|
79
|
+
push_matrix
|
|
80
|
+
|
|
81
|
+
translate @x, @y
|
|
82
|
+
rotate @tilt
|
|
83
|
+
scale @scalar
|
|
84
|
+
|
|
85
|
+
begin_shape
|
|
86
|
+
|
|
87
|
+
vertex 0, -100
|
|
88
|
+
bezier_vertex 25, -100, 40, -65, 40, -40
|
|
89
|
+
bezier_vertex 40, -15, 25, 0, 0, 0
|
|
90
|
+
bezier_vertex -25, 0, -40, -15, -40, -40
|
|
91
|
+
bezier_vertex -40, -65, -25, -100, 0, -100
|
|
92
|
+
|
|
93
|
+
end_shape
|
|
94
|
+
|
|
95
|
+
pop_matrix
|
|
96
|
+
end
|
|
97
|
+
|
|
98
|
+
end
|
|
99
|
+
|
|
100
|
+
# ^^^ CLASS EGG
|
|
101
|
+
|
|
102
|
+
# vvv CLASS RING
|
|
103
|
+
|
|
104
|
+
class Ring
|
|
105
|
+
|
|
106
|
+
attr_accessor :x, :y
|
|
107
|
+
attr_accessor :diameter
|
|
108
|
+
attr_accessor :on
|
|
109
|
+
|
|
110
|
+
def start ( xpos, ypos )
|
|
111
|
+
|
|
112
|
+
@x, @y = xpos, ypos
|
|
113
|
+
@on = true
|
|
114
|
+
@diameter = 1.0
|
|
115
|
+
end
|
|
116
|
+
|
|
117
|
+
def grow
|
|
118
|
+
|
|
119
|
+
@diameter += 0.5 if @on
|
|
120
|
+
@diameter = 0.0 if @diameter > width*2
|
|
121
|
+
end
|
|
122
|
+
|
|
123
|
+
def display
|
|
124
|
+
|
|
125
|
+
if @on
|
|
126
|
+
no_fill
|
|
127
|
+
stroke_weight 4
|
|
128
|
+
stroke 155, 153
|
|
129
|
+
ellipse @x, @y, @diameter, @diameter
|
|
130
|
+
end
|
|
131
|
+
end
|
|
132
|
+
|
|
133
|
+
end
|
|
134
|
+
|
|
135
|
+
# ^^^ CLASS RING
|
|
136
|
+
|
|
137
|
+
end
|
|
138
|
+
|
|
139
|
+
CompositeObjects.new :title => "Composite Objects"
|