ruby-processing 2.4.4 → 2.5.0
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 +8 -6
- data/lib/ruby-processing/app.rb +54 -67
- data/lib/ruby-processing/config.rb +7 -7
- data/lib/ruby-processing/exporters/application_exporter.rb +37 -38
- data/lib/ruby-processing/exporters/base_exporter.rb +34 -37
- data/lib/ruby-processing/exporters/creator.rb +27 -25
- data/lib/ruby-processing/helper_methods.rb +18 -22
- data/lib/ruby-processing/helpers/numeric.rb +5 -6
- data/lib/ruby-processing/helpers/string.rb +11 -20
- data/lib/ruby-processing/library_loader.rb +33 -35
- data/lib/ruby-processing/runner.rb +118 -65
- data/lib/ruby-processing/runners/base.rb +21 -26
- data/lib/ruby-processing/runners/live.rb +3 -4
- data/lib/ruby-processing/runners/run.rb +1 -3
- data/lib/ruby-processing/runners/watch.rb +8 -8
- data/lib/ruby-processing/version.rb +1 -1
- data/lib/templates/application/lib/args.txt.erb +1 -1
- data/lib/templates/application/run.erb +3 -3
- data/library/control_panel/control_panel.rb +29 -29
- data/library/fastmath/fastmath.rb +3 -0
- data/library/file_chooser/file_chooser.rb +11 -13
- data/library/vecmath/vecmath.rb +6 -35
- data/samples/Rakefile +3 -1
- data/samples/configRP5/configRP5.pde +150 -0
- data/samples/contributed/Rakefile +6 -6
- data/samples/contributed/animator.rb +6 -6
- data/samples/contributed/bezier_playground.rb +29 -68
- data/samples/contributed/circle_collision.rb +6 -13
- data/samples/contributed/elegant_ball.rb +14 -17
- data/samples/contributed/empathy.rb +8 -5
- data/samples/contributed/fibonacci_sphere.rb +10 -49
- data/samples/contributed/full_screen.rb +1 -1
- data/samples/contributed/grapher.rb +10 -9
- data/samples/contributed/gravity.rb +11 -16
- data/samples/contributed/jwishy.rb +18 -20
- data/samples/contributed/quadraticvertex.rb +26 -26
- data/samples/external_library/java_processing/custom/landscape.rb +6 -4
- data/samples/external_library/java_processing/hemesh/twin_iso.rb +69 -71
- data/samples/external_library/java_processing/pbox2d/bumpy_surface_noise.rb +57 -0
- data/samples/external_library/java_processing/pbox2d/contact_test.rb +23 -0
- data/samples/external_library/java_processing/pbox2d/data/java_args.txt +2 -0
- data/samples/external_library/java_processing/pbox2d/library/custom_shape/custom_shape.rb +158 -0
- data/samples/external_library/java_processing/pbox2d/library/particle_system/particle_system.rb +212 -0
- data/samples/external_library/java_processing/pbox2d/library/surface/surface.rb +154 -0
- data/samples/external_library/java_processing/pbox2d/liquidy.rb +58 -0
- data/samples/external_library/java_processing/pbox2d/polygons.rb +58 -0
- data/samples/external_library/java_processing/toxiclibs/library/vbo/vbo.rb +52 -0
- data/samples/external_library/java_processing/toxiclibs/model_align.rb +9 -16
- data/samples/processing_app/basics/color/color_wheel.rb +1 -1
- data/samples/processing_app/basics/form/regular_polygon.rb +2 -2
- data/samples/processing_app/basics/form/rgb_cube.rb +2 -2
- data/samples/processing_app/basics/form/shape_primitives.rb +1 -1
- data/samples/processing_app/basics/form/star.rb +2 -2
- data/samples/processing_app/basics/input/clock.rb +21 -16
- data/samples/processing_app/basics/input/storing_input.rb +6 -6
- data/samples/processing_app/basics/math/additive_wave.rb +1 -1
- data/samples/processing_app/basics/math/sine.rb +2 -2
- data/samples/processing_app/basics/math/sine_cosine.rb +1 -1
- data/samples/processing_app/basics/math/sine_wave.rb +1 -1
- data/samples/processing_app/basics/objects/inheritance.rb +2 -0
- data/samples/processing_app/basics/objects/inheritance_two.rb +88 -0
- data/samples/processing_app/basics/objects/module.rb +89 -0
- data/samples/processing_app/{library/vecmath/drawolver.rb → basics/objects/module_two.rb} +1 -1
- data/samples/processing_app/basics/objects/multiple_constructors.rb +5 -0
- data/samples/processing_app/basics/objects/struct.rb +38 -0
- data/samples/processing_app/basics/structure/recursion2.rb +1 -1
- data/samples/processing_app/basics/transform/birds.rb +7 -10
- data/samples/processing_app/basics/transform/library/bird/bird.rb +3 -3
- data/samples/processing_app/basics/transform/rotate.rb +1 -1
- data/samples/processing_app/basics/transform/rotate1.rb +1 -1
- data/samples/processing_app/basics/transform/rotate_x_y.rb +1 -1
- data/samples/processing_app/demos/graphics/bezier_patch.rb +1 -38
- data/samples/processing_app/demos/graphics/trefoil.rb +50 -40
- data/samples/processing_app/demos/graphics/wiggling.rb +36 -38
- data/samples/processing_app/demos/performance/cubic_grid_retained.rb +14 -14
- data/samples/processing_app/demos/performance/esfera.rb +27 -39
- data/samples/processing_app/demos/performance/text_rendering.rb +1 -1
- data/samples/processing_app/library/fastmath/clock.rb +44 -0
- data/samples/processing_app/library/pdf/complex_3D.rb +26 -24
- data/samples/processing_app/library/vecmath/{Rakefile → arcball/Rakefile} +6 -6
- data/samples/processing_app/library/vecmath/arcball/arcball_box.rb +23 -0
- data/samples/processing_app/library/vecmath/arcball/arcball_radius.rb +23 -0
- data/samples/processing_app/library/vecmath/arcball/arcball_shape.rb +29 -0
- data/samples/processing_app/library/vecmath/{README.txt → vec2d/README.txt} +0 -0
- data/samples/processing_app/library/vecmath/vec2d/Rakefile +30 -0
- data/samples/processing_app/library/vecmath/{acceleration_with_vectors.rb → vec2d/acceleration_with_vectors.rb} +4 -5
- data/samples/processing_app/library/vecmath/{bouncing_ball.rb → vec2d/bouncing_ball.rb} +9 -15
- data/samples/processing_app/library/vecmath/{circle_collision.rb → vec2d/circle_collision.rb} +46 -51
- data/samples/processing_app/library/vecmath/{data → vec2d/data}/java_args.txt +0 -0
- data/samples/processing_app/library/vecmath/{data → vec2d/data}/sprite.png +0 -0
- data/samples/processing_app/library/vecmath/{data → vec2d/data}/texture.png +0 -0
- data/samples/processing_app/library/vecmath/{flocking.rb → vec2d/flocking.rb} +3 -6
- data/samples/processing_app/library/vecmath/{library → vec2d/library}/flock/flock.rb +47 -67
- data/samples/processing_app/library/vecmath/{library → vec2d/library}/particle/particle_system.rb +5 -5
- data/samples/processing_app/library/vecmath/vec2d/library/tile/tile.rb +85 -0
- data/samples/processing_app/library/vecmath/{morph.rb → vec2d/morph.rb} +17 -16
- data/samples/processing_app/library/vecmath/{multiple_particle_systems.rb → vec2d/multiple_particle_systems.rb} +11 -28
- data/samples/processing_app/library/vecmath/{particle_system_pshape.rb → vec2d/particle_system_pshape.rb} +4 -6
- data/samples/processing_app/library/vecmath/vec2d/penrose.rb +71 -0
- data/samples/processing_app/library/vecmath/{reflection1.rb → vec2d/reflection1.rb} +6 -6
- data/samples/processing_app/library/vecmath/{seeking_neural.rb → vec2d/seeking_neural.rb} +12 -16
- data/samples/processing_app/library/vecmath/{simple_particle_system.rb → vec2d/simple_particle_system.rb} +8 -12
- data/samples/processing_app/library/vecmath/{smoke_particle_system.rb → vec2d/smoke_particle_system.rb} +8 -13
- data/samples/processing_app/library/vecmath/{vector_math.rb → vec2d/vector_math.rb} +0 -0
- data/samples/processing_app/library/vecmath/{library/wiggler/wiggler.rb → vec2d/wiggle_pshape.rb} +28 -4
- data/samples/processing_app/library/vecmath/vec3d/Rakefile +30 -0
- data/samples/processing_app/library/vecmath/vec3d/drawolver.rb +86 -0
- data/samples/processing_app/library/vecmath/vec3d/frame_of_reference.rb +103 -0
- data/samples/processing_app/library/vecmath/{hilbert_fractal.rb → vec3d/hilbert_fractal.rb} +5 -33
- data/samples/processing_app/library/vecmath/vec3d/library/geometry/geometry.rb +3 -0
- data/samples/processing_app/library/vecmath/vec3d/library/geometry/lib/cylinder.rb +44 -0
- data/samples/processing_app/library/vecmath/vec3d/library/geometry/lib/mat4.rb +28 -0
- data/samples/processing_app/library/vecmath/vec3d/library/geometry/lib/plane.rb +60 -0
- data/samples/processing_app/library/vecmath/{library → vec3d/library}/hilbert/hilbert.rb +14 -17
- data/samples/processing_app/library/vecmath/{retained_menger.rb → vec3d/retained_menger.rb} +20 -55
- data/samples/processing_app/topics/advanced_data/Rakefile +6 -6
- data/samples/processing_app/topics/advanced_data/counting_words.rb +7 -7
- data/samples/processing_app/topics/advanced_data/data/data.xml +0 -15
- data/samples/processing_app/topics/advanced_data/data/struct_data.yml +5 -0
- data/samples/processing_app/topics/advanced_data/library/bubble/bubble.rb +8 -8
- data/samples/processing_app/topics/advanced_data/load_save_XML.rb +41 -42
- data/samples/processing_app/topics/advanced_data/load_save_json.rb +11 -11
- data/samples/processing_app/topics/advanced_data/load_save_struct_yaml.rb +22 -23
- data/samples/processing_app/topics/advanced_data/load_save_table.rb +12 -12
- data/samples/processing_app/topics/advanced_data/load_save_yaml.rb +10 -12
- data/samples/processing_app/topics/advanced_data/regex.rb +5 -6
- data/samples/processing_app/topics/advanced_data/threads.rb +27 -27
- data/samples/processing_app/topics/advanced_data/threads_two.rb +3 -2
- data/samples/processing_app/topics/advanced_data/word_frequency.rb +18 -16
- data/samples/processing_app/topics/advanced_data/yahoo_weather.rb +6 -5
- data/samples/processing_app/topics/animation/animated_sprite.rb +9 -7
- data/samples/processing_app/topics/animation/sequential.rb +19 -19
- data/samples/processing_app/topics/cellular_automata/library/ca/ca.rb +1 -1
- data/samples/processing_app/topics/cellular_automata/wolfram.rb +1 -1
- data/samples/processing_app/topics/create_shapes/begin_end_contour.rb +1 -1
- data/samples/processing_app/topics/create_shapes/library/wiggler/wiggler.rb +4 -4
- data/samples/processing_app/topics/create_shapes/particle_system_pshape.rb +2 -2
- data/samples/processing_app/topics/create_shapes/path_pshape.rb +1 -1
- data/samples/processing_app/topics/create_shapes/polygon_pshape_oo3.rb +1 -1
- data/samples/processing_app/topics/create_shapes/polygon_shape.rb +3 -3
- data/samples/processing_app/topics/file_io/load_file1.rb +1 -1
- data/samples/processing_app/topics/file_io/save_frames.rb +5 -5
- data/samples/processing_app/topics/file_io/save_one_image.rb +2 -2
- data/samples/processing_app/topics/file_io/tile_images.rb +1 -1
- data/samples/processing_app/topics/gui/scrollbar.rb +3 -3
- data/samples/processing_app/topics/image_processing/blending.rb +13 -13
- data/samples/processing_app/topics/image_processing/blur.rb +1 -1
- data/samples/processing_app/topics/image_processing/brightness.rb +1 -1
- data/samples/processing_app/topics/image_processing/convolution.rb +1 -1
- data/samples/processing_app/topics/image_processing/edge_detection.rb +4 -4
- data/samples/processing_app/topics/image_processing/explode.rb +1 -1
- data/samples/processing_app/topics/image_processing/extrusion.rb +1 -1
- data/samples/processing_app/topics/image_processing/histogram.rb +1 -1
- data/samples/processing_app/topics/image_processing/linear_image.rb +1 -1
- data/samples/processing_app/topics/image_processing/pixel_array.rb +1 -1
- data/samples/processing_app/topics/image_processing/zoom.rb +2 -2
- data/samples/processing_app/topics/lsystems/Rakefile +6 -6
- data/samples/processing_app/topics/lsystems/chequer.rb +4 -10
- data/samples/processing_app/topics/lsystems/csplant.rb +25 -25
- data/samples/processing_app/topics/lsystems/cstest.rb +9 -4
- data/samples/processing_app/topics/lsystems/david_tour.rb +14 -16
- data/samples/processing_app/topics/lsystems/koch.rb +8 -18
- data/samples/processing_app/topics/lsystems/library/cs_grammar/cs_grammar.rb +18 -24
- data/samples/processing_app/topics/lsystems/library/grammar/grammar.rb +7 -9
- data/samples/processing_app/topics/lsystems/library/koch/koch_fractal.rb +75 -94
- data/samples/processing_app/topics/lsystems/library/stochastic_grammar/stochastic_grammar.rb +11 -13
- data/samples/processing_app/topics/lsystems/mpeano.rb +29 -32
- data/samples/processing_app/topics/lsystems/peano.rb +19 -21
- data/samples/processing_app/topics/lsystems/penrose.rb +31 -37
- data/samples/processing_app/topics/lsystems/penrose_snowflake.rb +10 -15
- data/samples/processing_app/topics/lsystems/pentagonal.rb +20 -23
- data/samples/processing_app/topics/lsystems/snake_kolam.rb +13 -13
- data/samples/processing_app/topics/lsystems/stochastic_test.rb +25 -28
- data/samples/processing_app/topics/lsystems/three_d_tree.rb +25 -24
- data/samples/processing_app/topics/motion/bouncy_bubbles.rb +17 -17
- data/samples/processing_app/topics/motion/cubes_in_cube.rb +1 -3
- data/samples/processing_app/topics/motion/library/cube/cube.rb +2 -2
- data/samples/processing_app/topics/motion/reflection2.rb +1 -1
- data/samples/processing_app/topics/shaders/blur_filter.rb +3 -3
- data/samples/processing_app/topics/shaders/bw_shader.rb +3 -3
- data/samples/processing_app/topics/shaders/conway.rb +5 -5
- data/samples/processing_app/topics/shaders/deform.rb +5 -5
- data/samples/processing_app/topics/shaders/edge_detect.rb +3 -5
- data/samples/processing_app/topics/shaders/glossy_fish_eye.rb +15 -21
- data/samples/processing_app/topics/shaders/glsl_heightmap_noise.rb +21 -19
- data/samples/processing_app/topics/shaders/image_mask.rb +6 -6
- data/samples/processing_app/topics/shaders/landscape.rb +4 -4
- data/samples/processing_app/topics/shaders/monjori.rb +15 -15
- data/samples/processing_app/topics/shaders/nebula.rb +3 -3
- data/samples/processing_app/topics/shaders/sep_blur.rb +15 -15
- data/samples/processing_app/topics/shaders/toon_shading.rb +2 -2
- data/samples/processing_app/topics/simulate/chain.rb +16 -14
- data/samples/processing_app/topics/simulate/smoke_particle_system.rb +3 -3
- data/samples/processing_app/topics/vectors/acceleration_with_vectors.rb +3 -2
- data/samples/processing_app/topics/vectors/bouncing_ball.rb +1 -0
- data/samples/processing_app/topics/vectors/vector_math.rb +2 -1
- data/vendors/Rakefile +15 -3
- metadata +99 -86
- data/.gitignore +0 -13
- data/.travis.yml +0 -6
- data/.yardopts +0 -5
- data/CHANGELOG +0 -316
- data/CONTRIBUTING.md +0 -35
- data/Gemfile +0 -6
- data/LICENSE.md +0 -39
- data/README.md +0 -119
- data/Rakefile +0 -37
- data/bin/install_jruby_complete +0 -13
- data/lib/ruby-processing/exporters/exporters.rb +0 -7
- data/library/vecmath/lib/arcball.rb +0 -64
- data/library/vecmath/lib/quaternion.rb +0 -62
- data/library/vecmath/lib/vec.rb +0 -232
- data/ruby-processing.gemspec +0 -54
- data/samples/processing_app/library/pdf/.gitignore +0 -1
- data/samples/processing_app/library/vecmath/retained_test.rb +0 -65
- data/samples/processing_app/library/vecmath/retained_test2.rb +0 -65
- data/samples/processing_app/library/vecmath/wiggle_pshape.rb +0 -22
- data/test/README.md +0 -6
- data/test/basic.rb +0 -14
- data/test/draw_ex.rb +0 -12
- data/test/graphics.rb +0 -7
- data/test/p2d.rb +0 -14
- data/test/p3d.rb +0 -14
- data/test/rp5_test.rb +0 -86
- data/test/setup_ex.rb +0 -12
@@ -0,0 +1,44 @@
|
|
1
|
+
class Cylinder
|
2
|
+
include Processing::Proxy
|
3
|
+
attr_accessor :vecs
|
4
|
+
attr_reader :detail, :dim
|
5
|
+
|
6
|
+
def initialize(dim, detail)
|
7
|
+
@dim = dim
|
8
|
+
@detail = detail
|
9
|
+
init
|
10
|
+
end
|
11
|
+
|
12
|
+
def init
|
13
|
+
# created around x-axis
|
14
|
+
# y = Math.cos
|
15
|
+
# z = Math.sin
|
16
|
+
veca = []
|
17
|
+
vecb = []
|
18
|
+
(0 ... 360).step(360 / detail) do |theta|
|
19
|
+
cost = DegLut.cos(theta)
|
20
|
+
sint = DegLut.sin(theta)
|
21
|
+
veca << Vec3D.new(0, cost * dim.y, sint * dim.z)
|
22
|
+
vecb << Vec3D.new(dim.x, cost * dim.y, sint * dim.z)
|
23
|
+
end
|
24
|
+
@vecs = veca.concat(vecb)
|
25
|
+
end
|
26
|
+
|
27
|
+
def display(renderer)
|
28
|
+
begin_shape(QUADS)
|
29
|
+
detail.times do |i|
|
30
|
+
if i < (detail - 1)
|
31
|
+
vecs[i].to_vertex(renderer)
|
32
|
+
vecs[i + 1].to_vertex(renderer)
|
33
|
+
vecs[detail + i + 1].to_vertex(renderer)
|
34
|
+
vecs[detail + i].to_vertex(renderer)
|
35
|
+
else
|
36
|
+
vecs[i].to_vertex(renderer)
|
37
|
+
vecs[0].to_vertex(renderer)
|
38
|
+
vecs[detail].to_vertex(renderer)
|
39
|
+
vecs[detail + i].to_vertex(renderer)
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end_shape
|
43
|
+
end
|
44
|
+
end
|
@@ -0,0 +1,28 @@
|
|
1
|
+
# uber simple Homogeneous 4 x 4 matrix
|
2
|
+
|
3
|
+
class Mat4
|
4
|
+
attr_reader :mat
|
5
|
+
|
6
|
+
def initialize(axisX, axisY, axisZ, trans)
|
7
|
+
@mat = [
|
8
|
+
[axisX.x, axisY.x, axisZ.x, trans.x],
|
9
|
+
[axisX.y, axisY.y, axisZ.y, trans.y],
|
10
|
+
[axisX.z, axisY.z, axisZ.z, trans.z],
|
11
|
+
[0, 0, 0, 1]
|
12
|
+
]
|
13
|
+
end
|
14
|
+
|
15
|
+
# The processing version changes the input 'array', here we return
|
16
|
+
# a new array with transformed values (which we then assign to the input)
|
17
|
+
# see line 89 Frame_of_Reference.rb
|
18
|
+
|
19
|
+
def mult(array)
|
20
|
+
array.map { |arr|
|
21
|
+
xt = mat[0][0] * arr.x + mat[0][1] * arr.y + mat[0][2] * arr.z + mat[0][3] * 1
|
22
|
+
yt = mat[1][0] * arr.x + mat[1][1] * arr.y + mat[1][2] * arr.z + mat[1][3] * 1
|
23
|
+
zt = mat[2][0] * arr.x + mat[2][1] * arr.y + mat[2][2] * arr.z + mat[2][3] * 1
|
24
|
+
Vec3D.new(xt, yt, zt)
|
25
|
+
}
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
@@ -0,0 +1,60 @@
|
|
1
|
+
NORM_LEN = 225.0
|
2
|
+
|
3
|
+
class Plane
|
4
|
+
include Processing::Proxy
|
5
|
+
|
6
|
+
attr_reader :vecs, :c, :n
|
7
|
+
|
8
|
+
|
9
|
+
def initialize(vecs)
|
10
|
+
@vecs = vecs
|
11
|
+
init
|
12
|
+
end
|
13
|
+
|
14
|
+
def init
|
15
|
+
v1 = vecs[1] - vecs[0]
|
16
|
+
v2 = vecs[2] - vecs[0]
|
17
|
+
|
18
|
+
@c = Vec3D.new(
|
19
|
+
(vecs[0].x + vecs[1].x + vecs[2].x) / 3,
|
20
|
+
(vecs[0].y + vecs[1].y + vecs[2].y) / 3,
|
21
|
+
(vecs[0].z + vecs[1].z + vecs[2].z) / 3
|
22
|
+
)
|
23
|
+
|
24
|
+
@n = v1.cross(v2)
|
25
|
+
n.normalize!
|
26
|
+
end
|
27
|
+
|
28
|
+
def display(renderer)
|
29
|
+
begin_shape(TRIANGLES)
|
30
|
+
vecs.map { |vec| vec.to_vertex(renderer) }
|
31
|
+
end_shape
|
32
|
+
|
33
|
+
#normal
|
34
|
+
stroke(200, 160, 30)
|
35
|
+
begin_shape(LINES)
|
36
|
+
c.to_vertex(renderer)
|
37
|
+
(c + n * NORM_LEN).to_vertex(renderer)
|
38
|
+
end_shape
|
39
|
+
|
40
|
+
#binormal
|
41
|
+
stroke(160, 200, 30)
|
42
|
+
begin_shape(LINES)
|
43
|
+
c.to_vertex(renderer)
|
44
|
+
# tangent
|
45
|
+
v = vecs[1].copy
|
46
|
+
#v.set(vecs[1])
|
47
|
+
v -= vecs[0]
|
48
|
+
v.normalize!
|
49
|
+
(c + v * NORM_LEN).to_vertex(renderer)
|
50
|
+
end_shape
|
51
|
+
|
52
|
+
stroke(30, 200, 160)
|
53
|
+
begin_shape(LINES)
|
54
|
+
c.to_vertex(renderer)
|
55
|
+
b = v.cross(n)
|
56
|
+
(c + b * NORM_LEN).to_vertex(renderer)
|
57
|
+
end_shape
|
58
|
+
stroke(0, 75)
|
59
|
+
end
|
60
|
+
end
|
@@ -39,20 +39,18 @@ class Hilbert
|
|
39
39
|
:theta, :distance, :phi, :gen, :adj_array
|
40
40
|
|
41
41
|
def initialize(size: 1.0, gen: 1)
|
42
|
-
@axiom =
|
43
|
-
@rule = {
|
42
|
+
@axiom = 'X' # AXIOM
|
43
|
+
@rule = {'X' => '^<XF^<XFX-F^>>XFX&F+>>XFX-F>X->'} # RULE
|
44
44
|
@gen = gen
|
45
45
|
@grammar = Grammar.new(axiom, rule)
|
46
46
|
@production = grammar.generate gen
|
47
47
|
@distance = size / (gen**2 - 1)
|
48
48
|
@theta = radians 90
|
49
49
|
@phi = radians 90
|
50
|
-
@adj_array = [0,
|
51
|
-
|
50
|
+
@adj_array = [0, 0.5, 1.5, 3.5, 7.5, 15].map { |x| Vec3D.new(x * -1, x, x * -1) }
|
52
51
|
end
|
53
52
|
|
54
|
-
def
|
55
|
-
#translate( -distance * ADJUSTMENT[gen], distance * ADJUSTMENT[gen], -distance * ADJUSTMENT[gen])
|
53
|
+
def draw
|
56
54
|
adj = adj_array[gen] * distance
|
57
55
|
translate(adj.x, adj.y, adj.z)
|
58
56
|
fill(0, 75, 152)
|
@@ -61,27 +59,26 @@ class Hilbert
|
|
61
59
|
shininess(1.0)
|
62
60
|
production.each do |ch|
|
63
61
|
case(ch)
|
64
|
-
when
|
65
|
-
translate(0, distance
|
62
|
+
when 'F'
|
63
|
+
translate(0, distance / -2, 0)
|
66
64
|
box(distance/9 , distance, distance/9)
|
67
|
-
translate(0, distance
|
68
|
-
when
|
65
|
+
translate(0, distance / -2, 0)
|
66
|
+
when '+'
|
69
67
|
rotateX(-theta)
|
70
|
-
when
|
68
|
+
when '-'
|
71
69
|
rotateX(theta)
|
72
|
-
when
|
70
|
+
when '>'
|
73
71
|
rotateY(theta)
|
74
|
-
when
|
72
|
+
when '<'
|
75
73
|
rotateY(-theta)
|
76
|
-
when
|
74
|
+
when '&'
|
77
75
|
rotateZ(-phi)
|
78
|
-
when
|
76
|
+
when '^'
|
79
77
|
rotateZ(phi)
|
80
|
-
when
|
78
|
+
when 'X'
|
81
79
|
else
|
82
80
|
puts("character '#{ch}' not in grammar")
|
83
81
|
end
|
84
82
|
end
|
85
83
|
end
|
86
|
-
|
87
84
|
end
|
@@ -5,22 +5,16 @@
|
|
5
5
|
##########################
|
6
6
|
|
7
7
|
load_library 'vecmath'
|
8
|
-
import "vecmath"
|
9
8
|
|
10
9
|
PTS = [-1, 0, 1]
|
11
10
|
MIN_SIZE = 20
|
12
|
-
X = 0
|
13
|
-
Y = 1
|
14
|
-
Z = 2
|
15
11
|
|
16
|
-
attr_reader :
|
12
|
+
attr_reader :menger
|
17
13
|
|
18
14
|
def setup
|
19
15
|
size(640, 480, P3D)
|
20
16
|
smooth(8)
|
21
|
-
|
22
|
-
camera(width/2.0, height/2.0, (height/2.0) / tan(PI*30.0 / 180.0), 0, 0, 0, 0, 1, 0)
|
23
|
-
@arcball = ArcBall.new(0, 0, min(width - 20, height - 20) * 0.8)
|
17
|
+
ArcBall.init(self)
|
24
18
|
@menger = create_shape(GROUP)
|
25
19
|
create_menger(0, 0, 0, height * 0.8)
|
26
20
|
end
|
@@ -29,28 +23,27 @@ def draw
|
|
29
23
|
background(20, 20, 200)
|
30
24
|
no_stroke
|
31
25
|
lights
|
32
|
-
|
33
|
-
define_lights
|
26
|
+
define_light
|
34
27
|
render
|
35
|
-
end
|
28
|
+
end
|
36
29
|
|
37
30
|
def render
|
38
31
|
menger.set_fill(color(224, 223, 219))
|
39
|
-
menger.set_ambient(50)
|
40
|
-
menger.set_specular(150)
|
32
|
+
menger.set_ambient(50)
|
33
|
+
menger.set_specular(150)
|
41
34
|
shape(menger)
|
42
35
|
end
|
43
36
|
|
44
37
|
def create_menger(xx, yy, zz, sz)
|
45
38
|
u = sz / 3.0
|
46
|
-
if
|
39
|
+
if sz < MIN_SIZE # recursion limited by minimum cube size
|
47
40
|
no_stroke
|
48
|
-
menger.add_child(create_cube(xx, yy, zz, sz)) # create and add a cube
|
41
|
+
menger.add_child(create_cube(xx, yy, zz, sz)) # create and add a cube
|
49
42
|
else
|
50
43
|
PTS.each do |i|
|
51
44
|
PTS.each do |j|
|
52
45
|
PTS.each do |k|
|
53
|
-
if (
|
46
|
+
if (i.abs + j.abs + k.abs) > 1
|
54
47
|
create_menger(xx + (i * u), yy + (j * u), zz + (k * u), u)
|
55
48
|
end
|
56
49
|
end
|
@@ -70,41 +63,41 @@ def create_cube(xx, yy, zz, sz)
|
|
70
63
|
cube.vertex(+dim + xx, -dim + yy, -dim + zz)
|
71
64
|
cube.vertex(+dim + xx, +dim + yy, -dim + zz)
|
72
65
|
cube.vertex(-dim + xx, +dim + yy, -dim + zz)
|
73
|
-
|
66
|
+
|
74
67
|
# Back face
|
75
|
-
|
68
|
+
|
76
69
|
cube.normal(0, 0, -1)
|
77
70
|
cube.vertex(-dim + xx, -dim + yy, +dim + zz)
|
78
71
|
cube.vertex(+dim + xx, -dim + yy, +dim + zz)
|
79
72
|
cube.vertex(+dim + xx, +dim + yy, +dim + zz)
|
80
73
|
cube.vertex(-dim + xx, +dim + yy, +dim + zz)
|
81
|
-
|
74
|
+
|
82
75
|
# Left face
|
83
|
-
|
76
|
+
|
84
77
|
cube.normal(1, 0, 0)
|
85
78
|
cube.vertex(-dim + xx, -dim + yy, -dim + zz)
|
86
79
|
cube.vertex(-dim + xx, -dim + yy, +dim + zz)
|
87
80
|
cube.vertex(-dim + xx, +dim + yy, +dim + zz)
|
88
81
|
cube.vertex(-dim + xx, +dim + yy, -dim + zz)
|
89
|
-
|
82
|
+
|
90
83
|
# Right face
|
91
|
-
|
84
|
+
|
92
85
|
cube.normal(-1, 0, 0)
|
93
86
|
cube.vertex(+dim + xx, -dim + yy, -dim + zz)
|
94
87
|
cube.vertex(+dim + xx, -dim + yy, +dim + zz)
|
95
88
|
cube.vertex(+dim + xx, +dim + yy, +dim + zz)
|
96
89
|
cube.vertex(+dim + xx, +dim + yy, -dim + zz)
|
97
|
-
|
90
|
+
|
98
91
|
# Top face
|
99
|
-
|
92
|
+
|
100
93
|
cube.normal(0, 1, 0)
|
101
94
|
cube.vertex(-dim + xx, -dim + yy, -dim + zz)
|
102
95
|
cube.vertex(+dim + xx, -dim + yy, -dim + zz)
|
103
96
|
cube.vertex(+dim + xx, -dim + yy, +dim + zz)
|
104
97
|
cube.vertex(-dim + xx, -dim + yy, +dim + zz)
|
105
|
-
|
98
|
+
|
106
99
|
# Bottom face
|
107
|
-
|
100
|
+
|
108
101
|
cube.normal(0, -1, 0)
|
109
102
|
cube.vertex(-dim + xx, +dim + yy, -dim + zz)
|
110
103
|
cube.vertex(+dim + xx, +dim + yy, -dim + zz)
|
@@ -112,19 +105,6 @@ def create_cube(xx, yy, zz, sz)
|
|
112
105
|
cube.vertex(-dim + xx, +dim + yy, +dim + zz)
|
113
106
|
cube.end_shape
|
114
107
|
return cube
|
115
|
-
end
|
116
|
-
|
117
|
-
def update
|
118
|
-
theta, x, y, z = arcball.update
|
119
|
-
rotate(theta, x, y, z)
|
120
|
-
end
|
121
|
-
|
122
|
-
def mouse_pressed
|
123
|
-
arcball.mouse_pressed(mouse_x, mouse_y)
|
124
|
-
end
|
125
|
-
|
126
|
-
def mouse_dragged
|
127
|
-
arcball.mouse_dragged(mouse_x, mouse_y)
|
128
108
|
end
|
129
109
|
|
130
110
|
def define_lights
|
@@ -132,19 +112,4 @@ def define_lights
|
|
132
112
|
point_light(30, 30, 30, 200, 240, 0)
|
133
113
|
directional_light(50, 50, 50, 1, 0, 0)
|
134
114
|
spot_light(30, 30, 30, 0, 40, 200, 0, -0.5, -0.5, PI / 2, 2)
|
135
|
-
end
|
136
|
-
|
137
|
-
def key_pressed
|
138
|
-
case(key)
|
139
|
-
when 'x'
|
140
|
-
arcball.select_axis(X)
|
141
|
-
when 'y'
|
142
|
-
arcball.select_axis(Y)
|
143
|
-
when 'z'
|
144
|
-
arcball.select_axis(Z)
|
145
|
-
end
|
146
|
-
end
|
147
|
-
|
148
|
-
def key_released
|
149
|
-
arcball.select_axis(-1)
|
150
|
-
end
|
115
|
+
end
|
@@ -1,20 +1,20 @@
|
|
1
1
|
# Simple demo Rakefile to autorun samples in current directory
|
2
2
|
# adjust path to rp5 executable, and or opts as required
|
3
3
|
|
4
|
-
SAMPLES_DIR=
|
4
|
+
SAMPLES_DIR = './'
|
5
5
|
|
6
6
|
desc 'run demo'
|
7
|
-
task :
|
7
|
+
task default: [:demo]
|
8
8
|
|
9
9
|
desc 'demo'
|
10
10
|
task :demo do
|
11
|
-
samples_list.shuffle.each{|sample| run_sample sample}
|
11
|
+
samples_list.shuffle.each{ |sample| run_sample sample }
|
12
12
|
end
|
13
13
|
|
14
14
|
def samples_list
|
15
15
|
files = []
|
16
16
|
Dir.chdir(SAMPLES_DIR)
|
17
|
-
Dir.glob(
|
17
|
+
Dir.glob('*.rb').each do |file|
|
18
18
|
files << File.join(SAMPLES_DIR, file)
|
19
19
|
end
|
20
20
|
return files
|
@@ -22,9 +22,9 @@ end
|
|
22
22
|
|
23
23
|
def run_sample(sample_name)
|
24
24
|
puts "Running #{sample_name}...quit to run next sample"
|
25
|
-
open("|rp5 --nojruby run #{sample_name}",
|
25
|
+
open("|rp5 --nojruby run #{sample_name}", 'r') do |io|
|
26
26
|
while l = io.gets
|
27
|
-
puts(l.chop)
|
27
|
+
puts(l.chop)
|
28
28
|
end
|
29
29
|
end
|
30
30
|
end
|
@@ -15,8 +15,8 @@ end
|
|
15
15
|
################################
|
16
16
|
# This sketch is translated from a vanilla processing sketch by Daniel Schiffman
|
17
17
|
# that was designed to demonstrate the use IntHash class in vanilla processing.
|
18
|
-
# Similar results can easily be obtained using more idiomatic ruby. Here IntHash
|
19
|
-
# has been replaced by a String => Word hash (as used in a Schiffman prototype).
|
18
|
+
# Similar results can easily be obtained using more idiomatic ruby. Here IntHash
|
19
|
+
# has been replaced by a String => Word hash (as used in a Schiffman prototype).
|
20
20
|
# Read about concordance here:-
|
21
21
|
# http://en.wikipedia.org/wiki/Concordance_(publishing)
|
22
22
|
################################
|
@@ -28,15 +28,15 @@ def setup
|
|
28
28
|
@counter = 0
|
29
29
|
@concordance = {}
|
30
30
|
# Open a file, read its contents, and 'scan' for words using a regex.
|
31
|
-
# Include words with apostrophe eg Harker's
|
32
|
-
@tokens = File.read(data_path(
|
33
|
-
text_font(create_font(
|
31
|
+
# Include words with apostrophe eg Harker's
|
32
|
+
@tokens = File.read(data_path('dracula.txt')).scan(/[\w'-]+/)
|
33
|
+
text_font(create_font('Georgia', 24))
|
34
34
|
end
|
35
35
|
|
36
36
|
def draw
|
37
37
|
background 51
|
38
38
|
fill 255
|
39
|
-
s = (tokens[counter] ==
|
39
|
+
s = (tokens[counter] == 'I')? tokens[counter] : tokens[counter].downcase
|
40
40
|
@counter = (counter + 1) % tokens.length
|
41
41
|
if (concordance.has_key?(s))
|
42
42
|
# Get the word object and increase the count
|
@@ -44,7 +44,7 @@ def draw
|
|
44
44
|
w = concordance[s]
|
45
45
|
w.increment # increment word count
|
46
46
|
else
|
47
|
-
# Otherwise make a new Word instance and add it to
|
47
|
+
# Otherwise make a new Word instance and add it to
|
48
48
|
# the Hash using the word String as the key
|
49
49
|
concordance[s] = Word.new(s)
|
50
50
|
end
|
@@ -20,19 +20,4 @@
|
|
20
20
|
<diameter>44.758068</diameter>
|
21
21
|
<label>Melancholy</label>
|
22
22
|
</bubble>
|
23
|
-
<bubble>
|
24
|
-
<position x="556" y="224"/>
|
25
|
-
<diameter>46.89752406647077</diameter>
|
26
|
-
<label>New label</label>
|
27
|
-
</bubble>
|
28
|
-
<bubble>
|
29
|
-
<position x="433" y="239"/>
|
30
|
-
<diameter>47.570771727260535</diameter>
|
31
|
-
<label>New label</label>
|
32
|
-
</bubble>
|
33
|
-
<bubble>
|
34
|
-
<position x="479" y="91"/>
|
35
|
-
<diameter>65.08462326872998</diameter>
|
36
|
-
<label>New label</label>
|
37
|
-
</bubble>
|
38
23
|
</bubbles>
|