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,106 @@
|
|
1
|
+
# TexturedCube
|
2
|
+
# by Dave Bollinger.
|
3
|
+
#
|
4
|
+
# Drag mouse to rotate cube. Demonstrates use of u/v coords in
|
5
|
+
# vertex ) and effect on texture(). The textures get distorted using
|
6
|
+
# the P3D renderer as you can see, but they look great using OPENGL.
|
7
|
+
|
8
|
+
class TextureCube < Processing::App
|
9
|
+
|
10
|
+
def setup
|
11
|
+
|
12
|
+
size 649, 360, P3D
|
13
|
+
|
14
|
+
@rotx = PI/4
|
15
|
+
@roty = PI/4
|
16
|
+
|
17
|
+
@tex = load_image "berlin-1.jpg"
|
18
|
+
texture_mode NORMALIZED
|
19
|
+
fill 255
|
20
|
+
stroke 44, 48, 32
|
21
|
+
|
22
|
+
end
|
23
|
+
|
24
|
+
def draw
|
25
|
+
|
26
|
+
background 0
|
27
|
+
|
28
|
+
no_stroke
|
29
|
+
|
30
|
+
translate width/2, height/2, -100
|
31
|
+
|
32
|
+
rotate_x @rotx
|
33
|
+
rotate_y @roty
|
34
|
+
|
35
|
+
scale 90
|
36
|
+
|
37
|
+
texture_cube
|
38
|
+
|
39
|
+
end
|
40
|
+
|
41
|
+
def texture_cube
|
42
|
+
|
43
|
+
# Given one texture and six faces, we can easily set up the uv coordinates
|
44
|
+
# such that four of the faces tile "perfectly" along either u or v, but the other
|
45
|
+
# two faces cannot be so aligned. This code tiles "along" u, "around" the X/Z faces
|
46
|
+
# and fudges the Y faces - the Y faces are arbitrarily aligned such that a
|
47
|
+
# rotation along the X axis will put the "top" of either texture at the "top"
|
48
|
+
# of the screen, but is not otherwised aligned with the X/Z faces. (This
|
49
|
+
# just affects what type of symmetry is required if you need seamless
|
50
|
+
# tiling all the way around the cube)
|
51
|
+
|
52
|
+
begin_shape QUADS
|
53
|
+
|
54
|
+
texture @tex
|
55
|
+
|
56
|
+
# +Z "front" face
|
57
|
+
vertex -1, -1, 1, 0, 0
|
58
|
+
vertex 1, -1, 1, 1, 0
|
59
|
+
vertex 1, 1, 1, 1, 1
|
60
|
+
vertex -1, 1, 1, 0, 1
|
61
|
+
|
62
|
+
# -Z "back" face
|
63
|
+
vertex 1, -1, -1, 0, 0
|
64
|
+
vertex -1, -1, -1, 1, 0
|
65
|
+
vertex -1, 1, -1, 1, 1
|
66
|
+
vertex 1, 1, -1, 0, 1
|
67
|
+
|
68
|
+
# +Y "bottom" face
|
69
|
+
vertex -1, 1, 1, 0, 0
|
70
|
+
vertex 1, 1, 1, 1, 0
|
71
|
+
vertex 1, 1, -1, 1, 1
|
72
|
+
vertex -1, 1, -1, 0, 1
|
73
|
+
|
74
|
+
# -Y "top" face
|
75
|
+
vertex -1, -1, -1, 0, 0
|
76
|
+
vertex 1, -1, -1, 1, 0
|
77
|
+
vertex 1, -1, 1, 1, 1
|
78
|
+
vertex -1, -1, 1, 0, 1
|
79
|
+
|
80
|
+
# +X "right" face
|
81
|
+
vertex 1, -1, 1, 0, 0
|
82
|
+
vertex 1, -1, -1, 1, 0
|
83
|
+
vertex 1, 1, -1, 1, 1
|
84
|
+
vertex 1, 1, 1, 0, 1
|
85
|
+
|
86
|
+
# -X "left" face
|
87
|
+
vertex -1, -1, -1, 0, 0
|
88
|
+
vertex -1, -1, 1, 1, 0
|
89
|
+
vertex -1, 1, 1, 1, 1
|
90
|
+
vertex -1, 1, -1, 0, 1
|
91
|
+
|
92
|
+
end_shape
|
93
|
+
|
94
|
+
end
|
95
|
+
|
96
|
+
def mouse_dragged
|
97
|
+
|
98
|
+
rate = 0.01
|
99
|
+
@rotx += ( pmouse_y - mouse_y ) * rate
|
100
|
+
@roty += ( mouse_x - pmouse_x ) * rate
|
101
|
+
|
102
|
+
end
|
103
|
+
|
104
|
+
end
|
105
|
+
|
106
|
+
TextureCube.new :title => "Texture Cube"
|
@@ -0,0 +1,61 @@
|
|
1
|
+
# Simple 3D Bird
|
2
|
+
# by Ira Greenberg.
|
3
|
+
#
|
4
|
+
# Using a box and 2 rects to simulate a flying bird.
|
5
|
+
# Trig functions handle the flapping and sinuous movement.
|
6
|
+
|
7
|
+
class Bird < Processing::App
|
8
|
+
|
9
|
+
def setup
|
10
|
+
|
11
|
+
size 640, 360, P3D
|
12
|
+
|
13
|
+
no_stroke
|
14
|
+
|
15
|
+
@ang, @ang2, @ang3, @ang4 = 0.0, 0.0, 0.0, 0.0
|
16
|
+
@flap_speed = 0.2
|
17
|
+
|
18
|
+
end
|
19
|
+
|
20
|
+
def draw
|
21
|
+
|
22
|
+
background 0
|
23
|
+
lights
|
24
|
+
|
25
|
+
px = sin( radians @ang3 ) * 170
|
26
|
+
py = cos( radians @ang3 ) * 300
|
27
|
+
pz = sin( radians @ang4 ) * 500
|
28
|
+
|
29
|
+
translate width/2 + px, height/2 + py, -700 + pz
|
30
|
+
|
31
|
+
rotate_x sin( radians @ang2 ) * 120
|
32
|
+
rotate_y sin( radians @ang2 ) * 50
|
33
|
+
rotate_z sin( radians @ang2 ) * 65
|
34
|
+
|
35
|
+
fill 153
|
36
|
+
box 20, 100, 20
|
37
|
+
|
38
|
+
fill 204
|
39
|
+
push_matrix
|
40
|
+
rotate_y sin( radians @ang ) * -20
|
41
|
+
rect -75, -50, 75, 100
|
42
|
+
pop_matrix
|
43
|
+
|
44
|
+
push_matrix
|
45
|
+
rotate_y sin( radians @ang ) * 20
|
46
|
+
rect 0, -50, 75, 100
|
47
|
+
pop_matrix
|
48
|
+
|
49
|
+
@ang += @flap_speed
|
50
|
+
|
51
|
+
@flap_speed *= -1 if @ang > PI || @ang < -PI
|
52
|
+
|
53
|
+
@ang2 += 0.01
|
54
|
+
@ang3 += 2.0
|
55
|
+
@ang4 += 0.75
|
56
|
+
|
57
|
+
end
|
58
|
+
|
59
|
+
end
|
60
|
+
|
61
|
+
Bird.new :title => "Bird"
|
@@ -0,0 +1,87 @@
|
|
1
|
+
class Bird
|
2
|
+
|
3
|
+
include Processing::Proxy # mixin Processing commands
|
4
|
+
|
5
|
+
attr_accessor :offset_x, :offset_y, :offset_z
|
6
|
+
attr_accessor :w, :h
|
7
|
+
attr_accessor :body_fill, :wing_fill
|
8
|
+
attr_accessor :ang, :ang2, :ang3, :ang4
|
9
|
+
attr_accessor :radius_x, :radius_y, :radius_z
|
10
|
+
attr_accessor :rot_x, :rot_y, :rot_z
|
11
|
+
attr_accessor :flap_speed
|
12
|
+
attr_accessor :rot_speed
|
13
|
+
|
14
|
+
def initialize ( offset_x, offset_y, offset_z, w, h )
|
15
|
+
|
16
|
+
defaults
|
17
|
+
@offset_x, @offset_y, @offset_z = offset_x, offset_y, offset_z
|
18
|
+
@w, @h = w, h
|
19
|
+
end
|
20
|
+
|
21
|
+
def defaults
|
22
|
+
|
23
|
+
@ang, @ang2, @ang3, @ang4 = 0.0, 0.0, 0.0, 0.0
|
24
|
+
@body_fill, @wing_fill = color(153), color(204)
|
25
|
+
@flap_speed = 0.4
|
26
|
+
@rot_speed = 0.1
|
27
|
+
@radius_x, @radius_y, @radius_z = 120.0, 200.0, 700.0
|
28
|
+
end
|
29
|
+
|
30
|
+
def set_flight ( radius_x, radius_y, radius_z, rot_x, rot_y, rot_z )
|
31
|
+
|
32
|
+
@radius_x, @radius_y, @radius_z = radius_x, radius_y, radius_z
|
33
|
+
@rot_x, @rot_y, @rot_z = rot_x, rot_y, rot_z
|
34
|
+
end
|
35
|
+
|
36
|
+
def set_wing_speed ( flap_speed )
|
37
|
+
|
38
|
+
@flap_speed = flap_speed
|
39
|
+
end
|
40
|
+
|
41
|
+
def set_rot_speed ( rot_speed )
|
42
|
+
|
43
|
+
@rot_speed = rot_speed
|
44
|
+
end
|
45
|
+
|
46
|
+
def fly
|
47
|
+
|
48
|
+
push_matrix
|
49
|
+
|
50
|
+
px = sin( radians @ang3 ) * @radius_x
|
51
|
+
py = cos( radians @ang3 ) * @radius_y
|
52
|
+
pz = sin( radians @ang4 ) * @radius_z
|
53
|
+
|
54
|
+
translate @offset_x + px,
|
55
|
+
@offset_y + py,
|
56
|
+
@offset_z + pz
|
57
|
+
|
58
|
+
rotate_x sin( radians @ang2 ) * @rot_x
|
59
|
+
rotate_y sin( radians @ang2 ) * @rot_y
|
60
|
+
rotate_z sin( radians @ang2 ) * @rot_z
|
61
|
+
|
62
|
+
fill @body_fill
|
63
|
+
box @w/5, @h, @w/5
|
64
|
+
|
65
|
+
fill @wing_fill
|
66
|
+
|
67
|
+
push_matrix
|
68
|
+
rotate_y sin( radians @ang ) * 20
|
69
|
+
rect 0, -@h/2, @w, @h
|
70
|
+
pop_matrix
|
71
|
+
|
72
|
+
push_matrix
|
73
|
+
rotate_y sin( radians @ang ) * -20
|
74
|
+
rect -@w, -@h/2, @w, @h
|
75
|
+
pop_matrix
|
76
|
+
|
77
|
+
@ang += @flap_speed
|
78
|
+
@flap_speed *= -1 if @ang > PI || @ang < -PI
|
79
|
+
|
80
|
+
@ang2 += @rot_speed
|
81
|
+
@ang3 += 1.25
|
82
|
+
@ang4 += 0.55
|
83
|
+
|
84
|
+
pop_matrix
|
85
|
+
end
|
86
|
+
|
87
|
+
end
|
@@ -0,0 +1,48 @@
|
|
1
|
+
# Crazy Flocking 3D Birds
|
2
|
+
# by Ira Greenberg.
|
3
|
+
#
|
4
|
+
# Simulates a flock of birds using a Bird class and nested
|
5
|
+
# pushMatrix() / popMatrix() functions.
|
6
|
+
# Trigonometry functions handle the flapping and sinuous movement.
|
7
|
+
|
8
|
+
require 'bird' # class Bird
|
9
|
+
|
10
|
+
class Birds < Processing::App
|
11
|
+
|
12
|
+
def setup
|
13
|
+
|
14
|
+
size 640, 360, P3D
|
15
|
+
no_stroke
|
16
|
+
lights
|
17
|
+
|
18
|
+
@bird_count = 200
|
19
|
+
@birds = []
|
20
|
+
|
21
|
+
0.upto( @bird_count ) { |i|
|
22
|
+
|
23
|
+
bird = Bird.new random(-300,300), random(-300,300), random(-500,-2500), random(5,30), random(5,30)
|
24
|
+
|
25
|
+
bird.set_flight random( 20, 340 ), random( 30, 350 ), random( 1000, 4800 ),
|
26
|
+
random( -160, 160 ), random( -55, 55 ), random( -20, 20 )
|
27
|
+
|
28
|
+
bird.set_wing_speed random( 0.1, 3.75 )
|
29
|
+
bird.set_rot_speed random( 0.025, 0.15 )
|
30
|
+
|
31
|
+
@birds.push bird
|
32
|
+
}
|
33
|
+
|
34
|
+
end
|
35
|
+
|
36
|
+
def draw
|
37
|
+
|
38
|
+
background 0
|
39
|
+
|
40
|
+
translate width/2, height/2, -700
|
41
|
+
|
42
|
+
@birds.each do |b| b.fly end
|
43
|
+
|
44
|
+
end
|
45
|
+
|
46
|
+
end
|
47
|
+
|
48
|
+
Birds.new :title => "Birds"
|
@@ -0,0 +1,57 @@
|
|
1
|
+
require 'ruby-processing/app' # require Processing::Proxi
|
2
|
+
|
3
|
+
class Cube
|
4
|
+
|
5
|
+
include Processing::Proxy # mixin Processing::Proxi
|
6
|
+
|
7
|
+
attr_accessor :vertices
|
8
|
+
attr_accessor :w, :h, :d
|
9
|
+
attr_accessor :position, :speed, :rotation # PVector
|
10
|
+
|
11
|
+
def initialize ( w, h, d )
|
12
|
+
|
13
|
+
@w, @h, @d = w, h, d
|
14
|
+
|
15
|
+
w2 = @w/2
|
16
|
+
h2 = @h/2
|
17
|
+
d2 = @d/2
|
18
|
+
|
19
|
+
tfl = PVector.new -w2, h2, d2 # four points making the top quad:
|
20
|
+
tfr = PVector.new w2, h2, d2 # "tfl" is "top front left", etc
|
21
|
+
tbr = PVector.new w2, h2,-d2
|
22
|
+
tbl = PVector.new -w2, h2,-d2
|
23
|
+
|
24
|
+
bfl = PVector.new -w2,-h2, d2 # bottom quad points
|
25
|
+
bfr = PVector.new w2,-h2, d2
|
26
|
+
bbr = PVector.new w2,-h2,-d2
|
27
|
+
bbl = PVector.new -w2,-h2,-d2
|
28
|
+
|
29
|
+
@vertices = [
|
30
|
+
[tfl, tfr, tbr, tbl], # top
|
31
|
+
[tfl, tfr, bfr, bfl], # front
|
32
|
+
[tfl, tbl, bbl, bfl], # left
|
33
|
+
[tbl, tbr, bbr, bbl], # back
|
34
|
+
[tbr, tfr, bfr, bbr], # right
|
35
|
+
[bfl, bfr, bbr, bbl]
|
36
|
+
]
|
37
|
+
end
|
38
|
+
|
39
|
+
def draw ( side_colors = nil )
|
40
|
+
|
41
|
+
@vertices.each_with_index { |quad, i| # each face
|
42
|
+
|
43
|
+
begin_shape QUADS
|
44
|
+
|
45
|
+
fill side_colors[i] if side_colors && i < side_colors.length
|
46
|
+
|
47
|
+
quad.each { |pvec|
|
48
|
+
|
49
|
+
vertex pvec.x, pvec.y, pvec.z
|
50
|
+
}
|
51
|
+
|
52
|
+
end_shape
|
53
|
+
|
54
|
+
}
|
55
|
+
end
|
56
|
+
|
57
|
+
end
|
@@ -0,0 +1,102 @@
|
|
1
|
+
# Cubes Contained Within a Cube
|
2
|
+
# by Ira Greenberg.
|
3
|
+
#
|
4
|
+
# Collision detection against all outer cube's surfaces.
|
5
|
+
# Uses the PVector and Cube classes.
|
6
|
+
|
7
|
+
# fjenett, 2010-03-12: did some cleanups and rubyfication here
|
8
|
+
|
9
|
+
require 'cube'
|
10
|
+
|
11
|
+
class CubesInCube < Processing::App
|
12
|
+
|
13
|
+
def setup
|
14
|
+
|
15
|
+
size 640, 360, P3D
|
16
|
+
|
17
|
+
lights
|
18
|
+
|
19
|
+
@cube_count = 20
|
20
|
+
@cubes = []
|
21
|
+
|
22
|
+
0.upto( @cube_count ) { |i|
|
23
|
+
|
24
|
+
cube_size = random( 5, 15 )
|
25
|
+
|
26
|
+
c = Cube.new cube_size, cube_size, cube_size
|
27
|
+
|
28
|
+
c.position = PVector.new 0.0, 0.0, 0.0
|
29
|
+
c.speed = PVector.new random(-1,1), random(-1,1), random(-1,1)
|
30
|
+
c.rotation = PVector.new random(40,100), random(40,100), random(40,100)
|
31
|
+
|
32
|
+
@cubes.push c
|
33
|
+
}
|
34
|
+
|
35
|
+
@cube_colors = [
|
36
|
+
color( 0 ), color( 51 ), color( 102 ), color( 153 ), color( 204 ), color( 255 )
|
37
|
+
]
|
38
|
+
@cube_colors.reverse
|
39
|
+
|
40
|
+
@stage_size = 300
|
41
|
+
@stage = Cube.new @stage_size, @stage_size, @stage_size
|
42
|
+
|
43
|
+
end
|
44
|
+
|
45
|
+
def draw
|
46
|
+
|
47
|
+
background 50
|
48
|
+
|
49
|
+
translate width/2, height/2, -130
|
50
|
+
|
51
|
+
rotate_x frame_count * 0.001
|
52
|
+
rotate_y frame_count * 0.002
|
53
|
+
rotate_z frame_count * 0.001
|
54
|
+
|
55
|
+
no_fill
|
56
|
+
stroke 255
|
57
|
+
|
58
|
+
@stage.draw
|
59
|
+
|
60
|
+
@cubes.each_with_index { |c, i|
|
61
|
+
|
62
|
+
# draw cube
|
63
|
+
push_matrix
|
64
|
+
|
65
|
+
translate c.position.x, c.position.y, c.position.z
|
66
|
+
|
67
|
+
fcpi = frame_count * PI
|
68
|
+
rotate_x fcpi / c.rotation.x
|
69
|
+
rotate_y fcpi / c.rotation.y
|
70
|
+
rotate_x fcpi / c.rotation.z
|
71
|
+
|
72
|
+
no_stroke
|
73
|
+
|
74
|
+
c.draw @cube_colors
|
75
|
+
|
76
|
+
pop_matrix
|
77
|
+
|
78
|
+
# move it
|
79
|
+
c.position.add c.speed
|
80
|
+
|
81
|
+
# draw lines
|
82
|
+
if i > 0
|
83
|
+
|
84
|
+
stroke 0
|
85
|
+
c2 = @cubes[i-1]
|
86
|
+
line c.position.x, c.position.y, c.position.z,
|
87
|
+
c2.position.x, c2.position.y, c2.position.z
|
88
|
+
|
89
|
+
end
|
90
|
+
|
91
|
+
# collision
|
92
|
+
s2 = @stage_size / 2
|
93
|
+
c.speed.x *= -1 if ( c.position.x / s2 ).abs > 1 # note that in Ruby abs(-12) is -12.abs
|
94
|
+
c.speed.y *= -1 if ( c.position.y / s2 ).abs > 1
|
95
|
+
c.speed.z *= -1 if ( c.position.z / s2 ).abs > 1
|
96
|
+
}
|
97
|
+
|
98
|
+
end
|
99
|
+
|
100
|
+
end
|
101
|
+
|
102
|
+
CubesInCube.new :title => "Cubes In Cube"
|