ruby-processing 2.4.4 → 2.5.0

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.
Files changed (227) hide show
  1. checksums.yaml +4 -4
  2. data/lib/rpextras.jar +0 -0
  3. data/lib/ruby-processing.rb +8 -6
  4. data/lib/ruby-processing/app.rb +54 -67
  5. data/lib/ruby-processing/config.rb +7 -7
  6. data/lib/ruby-processing/exporters/application_exporter.rb +37 -38
  7. data/lib/ruby-processing/exporters/base_exporter.rb +34 -37
  8. data/lib/ruby-processing/exporters/creator.rb +27 -25
  9. data/lib/ruby-processing/helper_methods.rb +18 -22
  10. data/lib/ruby-processing/helpers/numeric.rb +5 -6
  11. data/lib/ruby-processing/helpers/string.rb +11 -20
  12. data/lib/ruby-processing/library_loader.rb +33 -35
  13. data/lib/ruby-processing/runner.rb +118 -65
  14. data/lib/ruby-processing/runners/base.rb +21 -26
  15. data/lib/ruby-processing/runners/live.rb +3 -4
  16. data/lib/ruby-processing/runners/run.rb +1 -3
  17. data/lib/ruby-processing/runners/watch.rb +8 -8
  18. data/lib/ruby-processing/version.rb +1 -1
  19. data/lib/templates/application/lib/args.txt.erb +1 -1
  20. data/lib/templates/application/run.erb +3 -3
  21. data/library/control_panel/control_panel.rb +29 -29
  22. data/library/fastmath/fastmath.rb +3 -0
  23. data/library/file_chooser/file_chooser.rb +11 -13
  24. data/library/vecmath/vecmath.rb +6 -35
  25. data/samples/Rakefile +3 -1
  26. data/samples/configRP5/configRP5.pde +150 -0
  27. data/samples/contributed/Rakefile +6 -6
  28. data/samples/contributed/animator.rb +6 -6
  29. data/samples/contributed/bezier_playground.rb +29 -68
  30. data/samples/contributed/circle_collision.rb +6 -13
  31. data/samples/contributed/elegant_ball.rb +14 -17
  32. data/samples/contributed/empathy.rb +8 -5
  33. data/samples/contributed/fibonacci_sphere.rb +10 -49
  34. data/samples/contributed/full_screen.rb +1 -1
  35. data/samples/contributed/grapher.rb +10 -9
  36. data/samples/contributed/gravity.rb +11 -16
  37. data/samples/contributed/jwishy.rb +18 -20
  38. data/samples/contributed/quadraticvertex.rb +26 -26
  39. data/samples/external_library/java_processing/custom/landscape.rb +6 -4
  40. data/samples/external_library/java_processing/hemesh/twin_iso.rb +69 -71
  41. data/samples/external_library/java_processing/pbox2d/bumpy_surface_noise.rb +57 -0
  42. data/samples/external_library/java_processing/pbox2d/contact_test.rb +23 -0
  43. data/samples/external_library/java_processing/pbox2d/data/java_args.txt +2 -0
  44. data/samples/external_library/java_processing/pbox2d/library/custom_shape/custom_shape.rb +158 -0
  45. data/samples/external_library/java_processing/pbox2d/library/particle_system/particle_system.rb +212 -0
  46. data/samples/external_library/java_processing/pbox2d/library/surface/surface.rb +154 -0
  47. data/samples/external_library/java_processing/pbox2d/liquidy.rb +58 -0
  48. data/samples/external_library/java_processing/pbox2d/polygons.rb +58 -0
  49. data/samples/external_library/java_processing/toxiclibs/library/vbo/vbo.rb +52 -0
  50. data/samples/external_library/java_processing/toxiclibs/model_align.rb +9 -16
  51. data/samples/processing_app/basics/color/color_wheel.rb +1 -1
  52. data/samples/processing_app/basics/form/regular_polygon.rb +2 -2
  53. data/samples/processing_app/basics/form/rgb_cube.rb +2 -2
  54. data/samples/processing_app/basics/form/shape_primitives.rb +1 -1
  55. data/samples/processing_app/basics/form/star.rb +2 -2
  56. data/samples/processing_app/basics/input/clock.rb +21 -16
  57. data/samples/processing_app/basics/input/storing_input.rb +6 -6
  58. data/samples/processing_app/basics/math/additive_wave.rb +1 -1
  59. data/samples/processing_app/basics/math/sine.rb +2 -2
  60. data/samples/processing_app/basics/math/sine_cosine.rb +1 -1
  61. data/samples/processing_app/basics/math/sine_wave.rb +1 -1
  62. data/samples/processing_app/basics/objects/inheritance.rb +2 -0
  63. data/samples/processing_app/basics/objects/inheritance_two.rb +88 -0
  64. data/samples/processing_app/basics/objects/module.rb +89 -0
  65. data/samples/processing_app/{library/vecmath/drawolver.rb → basics/objects/module_two.rb} +1 -1
  66. data/samples/processing_app/basics/objects/multiple_constructors.rb +5 -0
  67. data/samples/processing_app/basics/objects/struct.rb +38 -0
  68. data/samples/processing_app/basics/structure/recursion2.rb +1 -1
  69. data/samples/processing_app/basics/transform/birds.rb +7 -10
  70. data/samples/processing_app/basics/transform/library/bird/bird.rb +3 -3
  71. data/samples/processing_app/basics/transform/rotate.rb +1 -1
  72. data/samples/processing_app/basics/transform/rotate1.rb +1 -1
  73. data/samples/processing_app/basics/transform/rotate_x_y.rb +1 -1
  74. data/samples/processing_app/demos/graphics/bezier_patch.rb +1 -38
  75. data/samples/processing_app/demos/graphics/trefoil.rb +50 -40
  76. data/samples/processing_app/demos/graphics/wiggling.rb +36 -38
  77. data/samples/processing_app/demos/performance/cubic_grid_retained.rb +14 -14
  78. data/samples/processing_app/demos/performance/esfera.rb +27 -39
  79. data/samples/processing_app/demos/performance/text_rendering.rb +1 -1
  80. data/samples/processing_app/library/fastmath/clock.rb +44 -0
  81. data/samples/processing_app/library/pdf/complex_3D.rb +26 -24
  82. data/samples/processing_app/library/vecmath/{Rakefile → arcball/Rakefile} +6 -6
  83. data/samples/processing_app/library/vecmath/arcball/arcball_box.rb +23 -0
  84. data/samples/processing_app/library/vecmath/arcball/arcball_radius.rb +23 -0
  85. data/samples/processing_app/library/vecmath/arcball/arcball_shape.rb +29 -0
  86. data/samples/processing_app/library/vecmath/{README.txt → vec2d/README.txt} +0 -0
  87. data/samples/processing_app/library/vecmath/vec2d/Rakefile +30 -0
  88. data/samples/processing_app/library/vecmath/{acceleration_with_vectors.rb → vec2d/acceleration_with_vectors.rb} +4 -5
  89. data/samples/processing_app/library/vecmath/{bouncing_ball.rb → vec2d/bouncing_ball.rb} +9 -15
  90. data/samples/processing_app/library/vecmath/{circle_collision.rb → vec2d/circle_collision.rb} +46 -51
  91. data/samples/processing_app/library/vecmath/{data → vec2d/data}/java_args.txt +0 -0
  92. data/samples/processing_app/library/vecmath/{data → vec2d/data}/sprite.png +0 -0
  93. data/samples/processing_app/library/vecmath/{data → vec2d/data}/texture.png +0 -0
  94. data/samples/processing_app/library/vecmath/{flocking.rb → vec2d/flocking.rb} +3 -6
  95. data/samples/processing_app/library/vecmath/{library → vec2d/library}/flock/flock.rb +47 -67
  96. data/samples/processing_app/library/vecmath/{library → vec2d/library}/particle/particle_system.rb +5 -5
  97. data/samples/processing_app/library/vecmath/vec2d/library/tile/tile.rb +85 -0
  98. data/samples/processing_app/library/vecmath/{morph.rb → vec2d/morph.rb} +17 -16
  99. data/samples/processing_app/library/vecmath/{multiple_particle_systems.rb → vec2d/multiple_particle_systems.rb} +11 -28
  100. data/samples/processing_app/library/vecmath/{particle_system_pshape.rb → vec2d/particle_system_pshape.rb} +4 -6
  101. data/samples/processing_app/library/vecmath/vec2d/penrose.rb +71 -0
  102. data/samples/processing_app/library/vecmath/{reflection1.rb → vec2d/reflection1.rb} +6 -6
  103. data/samples/processing_app/library/vecmath/{seeking_neural.rb → vec2d/seeking_neural.rb} +12 -16
  104. data/samples/processing_app/library/vecmath/{simple_particle_system.rb → vec2d/simple_particle_system.rb} +8 -12
  105. data/samples/processing_app/library/vecmath/{smoke_particle_system.rb → vec2d/smoke_particle_system.rb} +8 -13
  106. data/samples/processing_app/library/vecmath/{vector_math.rb → vec2d/vector_math.rb} +0 -0
  107. data/samples/processing_app/library/vecmath/{library/wiggler/wiggler.rb → vec2d/wiggle_pshape.rb} +28 -4
  108. data/samples/processing_app/library/vecmath/vec3d/Rakefile +30 -0
  109. data/samples/processing_app/library/vecmath/vec3d/drawolver.rb +86 -0
  110. data/samples/processing_app/library/vecmath/vec3d/frame_of_reference.rb +103 -0
  111. data/samples/processing_app/library/vecmath/{hilbert_fractal.rb → vec3d/hilbert_fractal.rb} +5 -33
  112. data/samples/processing_app/library/vecmath/vec3d/library/geometry/geometry.rb +3 -0
  113. data/samples/processing_app/library/vecmath/vec3d/library/geometry/lib/cylinder.rb +44 -0
  114. data/samples/processing_app/library/vecmath/vec3d/library/geometry/lib/mat4.rb +28 -0
  115. data/samples/processing_app/library/vecmath/vec3d/library/geometry/lib/plane.rb +60 -0
  116. data/samples/processing_app/library/vecmath/{library → vec3d/library}/hilbert/hilbert.rb +14 -17
  117. data/samples/processing_app/library/vecmath/{retained_menger.rb → vec3d/retained_menger.rb} +20 -55
  118. data/samples/processing_app/topics/advanced_data/Rakefile +6 -6
  119. data/samples/processing_app/topics/advanced_data/counting_words.rb +7 -7
  120. data/samples/processing_app/topics/advanced_data/data/data.xml +0 -15
  121. data/samples/processing_app/topics/advanced_data/data/struct_data.yml +5 -0
  122. data/samples/processing_app/topics/advanced_data/library/bubble/bubble.rb +8 -8
  123. data/samples/processing_app/topics/advanced_data/load_save_XML.rb +41 -42
  124. data/samples/processing_app/topics/advanced_data/load_save_json.rb +11 -11
  125. data/samples/processing_app/topics/advanced_data/load_save_struct_yaml.rb +22 -23
  126. data/samples/processing_app/topics/advanced_data/load_save_table.rb +12 -12
  127. data/samples/processing_app/topics/advanced_data/load_save_yaml.rb +10 -12
  128. data/samples/processing_app/topics/advanced_data/regex.rb +5 -6
  129. data/samples/processing_app/topics/advanced_data/threads.rb +27 -27
  130. data/samples/processing_app/topics/advanced_data/threads_two.rb +3 -2
  131. data/samples/processing_app/topics/advanced_data/word_frequency.rb +18 -16
  132. data/samples/processing_app/topics/advanced_data/yahoo_weather.rb +6 -5
  133. data/samples/processing_app/topics/animation/animated_sprite.rb +9 -7
  134. data/samples/processing_app/topics/animation/sequential.rb +19 -19
  135. data/samples/processing_app/topics/cellular_automata/library/ca/ca.rb +1 -1
  136. data/samples/processing_app/topics/cellular_automata/wolfram.rb +1 -1
  137. data/samples/processing_app/topics/create_shapes/begin_end_contour.rb +1 -1
  138. data/samples/processing_app/topics/create_shapes/library/wiggler/wiggler.rb +4 -4
  139. data/samples/processing_app/topics/create_shapes/particle_system_pshape.rb +2 -2
  140. data/samples/processing_app/topics/create_shapes/path_pshape.rb +1 -1
  141. data/samples/processing_app/topics/create_shapes/polygon_pshape_oo3.rb +1 -1
  142. data/samples/processing_app/topics/create_shapes/polygon_shape.rb +3 -3
  143. data/samples/processing_app/topics/file_io/load_file1.rb +1 -1
  144. data/samples/processing_app/topics/file_io/save_frames.rb +5 -5
  145. data/samples/processing_app/topics/file_io/save_one_image.rb +2 -2
  146. data/samples/processing_app/topics/file_io/tile_images.rb +1 -1
  147. data/samples/processing_app/topics/gui/scrollbar.rb +3 -3
  148. data/samples/processing_app/topics/image_processing/blending.rb +13 -13
  149. data/samples/processing_app/topics/image_processing/blur.rb +1 -1
  150. data/samples/processing_app/topics/image_processing/brightness.rb +1 -1
  151. data/samples/processing_app/topics/image_processing/convolution.rb +1 -1
  152. data/samples/processing_app/topics/image_processing/edge_detection.rb +4 -4
  153. data/samples/processing_app/topics/image_processing/explode.rb +1 -1
  154. data/samples/processing_app/topics/image_processing/extrusion.rb +1 -1
  155. data/samples/processing_app/topics/image_processing/histogram.rb +1 -1
  156. data/samples/processing_app/topics/image_processing/linear_image.rb +1 -1
  157. data/samples/processing_app/topics/image_processing/pixel_array.rb +1 -1
  158. data/samples/processing_app/topics/image_processing/zoom.rb +2 -2
  159. data/samples/processing_app/topics/lsystems/Rakefile +6 -6
  160. data/samples/processing_app/topics/lsystems/chequer.rb +4 -10
  161. data/samples/processing_app/topics/lsystems/csplant.rb +25 -25
  162. data/samples/processing_app/topics/lsystems/cstest.rb +9 -4
  163. data/samples/processing_app/topics/lsystems/david_tour.rb +14 -16
  164. data/samples/processing_app/topics/lsystems/koch.rb +8 -18
  165. data/samples/processing_app/topics/lsystems/library/cs_grammar/cs_grammar.rb +18 -24
  166. data/samples/processing_app/topics/lsystems/library/grammar/grammar.rb +7 -9
  167. data/samples/processing_app/topics/lsystems/library/koch/koch_fractal.rb +75 -94
  168. data/samples/processing_app/topics/lsystems/library/stochastic_grammar/stochastic_grammar.rb +11 -13
  169. data/samples/processing_app/topics/lsystems/mpeano.rb +29 -32
  170. data/samples/processing_app/topics/lsystems/peano.rb +19 -21
  171. data/samples/processing_app/topics/lsystems/penrose.rb +31 -37
  172. data/samples/processing_app/topics/lsystems/penrose_snowflake.rb +10 -15
  173. data/samples/processing_app/topics/lsystems/pentagonal.rb +20 -23
  174. data/samples/processing_app/topics/lsystems/snake_kolam.rb +13 -13
  175. data/samples/processing_app/topics/lsystems/stochastic_test.rb +25 -28
  176. data/samples/processing_app/topics/lsystems/three_d_tree.rb +25 -24
  177. data/samples/processing_app/topics/motion/bouncy_bubbles.rb +17 -17
  178. data/samples/processing_app/topics/motion/cubes_in_cube.rb +1 -3
  179. data/samples/processing_app/topics/motion/library/cube/cube.rb +2 -2
  180. data/samples/processing_app/topics/motion/reflection2.rb +1 -1
  181. data/samples/processing_app/topics/shaders/blur_filter.rb +3 -3
  182. data/samples/processing_app/topics/shaders/bw_shader.rb +3 -3
  183. data/samples/processing_app/topics/shaders/conway.rb +5 -5
  184. data/samples/processing_app/topics/shaders/deform.rb +5 -5
  185. data/samples/processing_app/topics/shaders/edge_detect.rb +3 -5
  186. data/samples/processing_app/topics/shaders/glossy_fish_eye.rb +15 -21
  187. data/samples/processing_app/topics/shaders/glsl_heightmap_noise.rb +21 -19
  188. data/samples/processing_app/topics/shaders/image_mask.rb +6 -6
  189. data/samples/processing_app/topics/shaders/landscape.rb +4 -4
  190. data/samples/processing_app/topics/shaders/monjori.rb +15 -15
  191. data/samples/processing_app/topics/shaders/nebula.rb +3 -3
  192. data/samples/processing_app/topics/shaders/sep_blur.rb +15 -15
  193. data/samples/processing_app/topics/shaders/toon_shading.rb +2 -2
  194. data/samples/processing_app/topics/simulate/chain.rb +16 -14
  195. data/samples/processing_app/topics/simulate/smoke_particle_system.rb +3 -3
  196. data/samples/processing_app/topics/vectors/acceleration_with_vectors.rb +3 -2
  197. data/samples/processing_app/topics/vectors/bouncing_ball.rb +1 -0
  198. data/samples/processing_app/topics/vectors/vector_math.rb +2 -1
  199. data/vendors/Rakefile +15 -3
  200. metadata +99 -86
  201. data/.gitignore +0 -13
  202. data/.travis.yml +0 -6
  203. data/.yardopts +0 -5
  204. data/CHANGELOG +0 -316
  205. data/CONTRIBUTING.md +0 -35
  206. data/Gemfile +0 -6
  207. data/LICENSE.md +0 -39
  208. data/README.md +0 -119
  209. data/Rakefile +0 -37
  210. data/bin/install_jruby_complete +0 -13
  211. data/lib/ruby-processing/exporters/exporters.rb +0 -7
  212. data/library/vecmath/lib/arcball.rb +0 -64
  213. data/library/vecmath/lib/quaternion.rb +0 -62
  214. data/library/vecmath/lib/vec.rb +0 -232
  215. data/ruby-processing.gemspec +0 -54
  216. data/samples/processing_app/library/pdf/.gitignore +0 -1
  217. data/samples/processing_app/library/vecmath/retained_test.rb +0 -65
  218. data/samples/processing_app/library/vecmath/retained_test2.rb +0 -65
  219. data/samples/processing_app/library/vecmath/wiggle_pshape.rb +0 -22
  220. data/test/README.md +0 -6
  221. data/test/basic.rb +0 -14
  222. data/test/draw_ex.rb +0 -12
  223. data/test/graphics.rb +0 -7
  224. data/test/p2d.rb +0 -14
  225. data/test/p3d.rb +0 -14
  226. data/test/rp5_test.rb +0 -86
  227. data/test/setup_ex.rb +0 -12
@@ -2,8 +2,8 @@
2
2
  # Part of a series of articles on Processing 2.
3
3
  # Blog post here:
4
4
  # http://vormplus.be/blog/article/drawing-shapes-with-quadratic-vertices
5
- # translated for ruby-processing by Martin Prout
6
- # Note how to specify fill and background using hexadecimal string for color,
5
+ # translated for ruby-processing by Martin Prout
6
+ # Note how to specify fill and background using hexadecimal string for color,
7
7
  # this is different from vanilla processing
8
8
  #
9
9
 
@@ -16,14 +16,14 @@ def setup
16
16
  @hide = false
17
17
  control_panel do |c|
18
18
  c.title = "controller"
19
- c.menu(:detail, ['4', '5', '6', '7', '8', '9', '10' ], '7')
19
+ c.menu(:detail, %w(4 5 6 7 8 9 10), '7')
20
20
  c.button :toggle_debug
21
21
  c.button :save_image
22
22
  @panel = c
23
23
  end
24
-
24
+
25
25
  @debug = false
26
- @save_one = false
26
+ @save_one = false
27
27
  smooth 8
28
28
  end
29
29
 
@@ -33,45 +33,45 @@ def draw
33
33
  @hide = true
34
34
  end
35
35
  background color('#BDF018')
36
- translate width / 2, height / 2
37
- @step_angle = TWO_PI / (detail.to_i - 1)
36
+ translate width / 2, height / 2
37
+ @step_angle = TAU / (detail.to_i - 1)
38
38
  fill color('#ffffff')
39
39
  no_stroke
40
40
  @cr = map(mouse_x, 0, width, 20, 200)
41
41
  begin_shape
42
- detail.to_i.times do |i|
43
- if (i == 0)
44
- vertex cos_x(i), sin_y(i)
45
- else
42
+ detail.to_i.times do |i|
43
+ if (i == 0)
44
+ vertex cos_x(i), sin_y(i)
45
+ else
46
46
  quadratic_vertex cos_cx(i), sin_cy(i), cos_x(i), sin_y(i)
47
47
  end
48
48
  end
49
49
  end_shape(CLOSE)
50
-
51
- if (debug)
50
+
51
+ if (debug)
52
52
  # draw lines between points
53
53
  stroke_weight(1)
54
54
  no_fill
55
55
  stroke(0)
56
-
56
+
57
57
  begin_shape
58
- detail.to_i.times do |i|
59
- vertex cos_cx(i), sin_cy(i) unless i == 0
60
- vertex cos_x(i), sin_y(i)
58
+ detail.to_i.times do |i|
59
+ vertex cos_cx(i), sin_cy(i) unless i == 0
60
+ vertex cos_x(i), sin_y(i)
61
61
  end
62
62
  end_shape CLOSE
63
-
63
+
64
64
  # draw points
65
- stroke_weight 8
66
- detail.to_i.times do |i|
67
- stroke 0
68
- point cos_x(i), sin_y(i)
69
- stroke 255, 0, 0
70
- point cos_cx(i), sin_cy(i)
65
+ stroke_weight 8
66
+ detail.to_i.times do |i|
67
+ stroke 0
68
+ point cos_x(i), sin_y(i)
69
+ stroke 255, 0, 0
70
+ point cos_cx(i), sin_cy(i)
71
71
  end
72
72
  end
73
-
74
- if (save_one)
73
+
74
+ if save_one
75
75
  save_frame("images/quadraticvertex-#####.png")
76
76
  @save_one = false
77
77
  end
@@ -23,7 +23,9 @@ class Landscape
23
23
  def calculate(nn)
24
24
  val = ->(curr, nn, x, y){curr * 0.95 + 0.05 * (nn.feed_forward([x, y]) * 280.0 - 140.0)}
25
25
  @z = (0 ... cols).map{|i|
26
- (0 ... rows).map{|j| val.call(z[i][j], nn, i * 1.0/ cols, j * 1.0/cols)}
26
+ (0 ... rows).map{|j|
27
+ val.call(z[i][j], nn, i * 1.0/ cols, j * 1.0/cols)
28
+ }
27
29
  }
28
30
  end
29
31
 
@@ -49,10 +51,10 @@ class Landscape
49
51
  vertex(scl, scl, z[x+1][y+1])
50
52
  fill(z[x][y+1]+127, 220)
51
53
  vertex(0, scl, z[x][y+1])
52
- end_shape
53
- pop_matrix
54
+ end_shape
55
+ pop_matrix
56
+ end
54
57
  end
55
58
  end
56
59
  end
57
- end
58
60
 
@@ -1,71 +1,69 @@
1
- load_libraries :hemesh, :vbo
2
-
3
- include MS # module MS imports necessary java classes and contains ruby MeshToVBO class
4
-
5
- RES = 20
6
-
7
- attr_reader :mesh_ret, :inv_mesh_ret, :render
8
-
9
- def setup
10
- size(800, 800, P3D)
11
- smooth(8)
12
- values = [] # build a multi-dimensional array in ruby
13
- (0 .. RES).each do |i| # the inclusive range is intentional here
14
- valu = []
15
- (0 .. RES).each do |j|
16
- val = []
17
- (0 .. RES).each do |k|
18
- val << 2.1 * noise(0.35 * i, 0.35 * j, 0.35 * k)
19
- end
20
- valu << val
21
- end
22
- values << valu
23
- end
24
-
25
- creator = HEC_IsoSurface.new
26
- creator.set_resolution(RES,RES, RES) # number of cells in x,y,z direction
27
- creator.set_size(400.0/RES, 400.0/RES, 400.0/RES) # cell size
28
-
29
- # JRuby requires a bit of help to determine correct 'java args', particulary with
30
- # overloaded arrays args as seen below. Note we are saying we have an 'array' of
31
- # 'float array' here, where the values can also be double[][][].
32
- java_values = values.to_java(Java::float[][]) # pre-coerce values to java
33
- creator.set_values(java_values) # the grid points
34
-
35
- creator.set_isolevel(1) # isolevel to mesh
36
- creator.set_invert(false) # invert mesh
37
- creator.set_boundary(100) # value of isoFunction outside grid
38
- # use creator.clear_boundary to set boundary values to "no value".
39
- # A boundary value of "no value" results in an open mesh
40
-
41
- mesh = HE_Mesh.new(creator)
42
- # mesh.modify(HEM_Smooth.new.set_iterations(10).setAutoRescale(true))
43
- creator.set_invert(true)
44
-
45
- inv_mesh = HE_Mesh.new(creator)
46
- inv_mesh.modify(HEM_Smooth.new.set_iterations(10).set_auto_rescale(true))
47
- @render = MeshToVBO.new(self)
48
- no_stroke
49
- # no color args produces a default light grey fill
50
- @mesh_ret = render.meshToVBO(mesh, color(200, 0, 0))
51
- @inv_mesh_ret = render.meshToVBO(inv_mesh, color(0, 0, 200))
52
- end
53
-
54
- def draw
55
- background(120)
56
- lights
57
- define_lights
58
- translate(400, 400)
59
- rotate_y(mouse_x.to_f / width * TWO_PI) # use TWO_PI until processing-2.0b9
60
- rotate_x(mouse_y.to_f / height * TWO_PI) # then we can use TAU
61
- shape(inv_mesh_ret)
62
- shape(mesh_ret)
63
- end
64
-
65
- def define_lights
66
- ambient(20, 20, 20)
67
- ambient_light(60, 60, 60)
68
- point_light(30, 30, 30, 0, 0, 0)
69
- directional_light(40, 40, 50, 1, 0, 0)
70
- spot_light(30, 30, 30, 0, 40, 200, 0, -0.5, 0.5, PI / 2, 2)
71
- end
1
+ load_libraries :hemesh, :vbo, :vecmath
2
+
3
+ include MS # module MS imports necessary java classes and contains ruby MeshToVBO class
4
+
5
+ RES = 20
6
+
7
+ attr_reader :mesh_ret, :inv_mesh_ret, :render
8
+
9
+ def setup
10
+ size(800, 800, P3D)
11
+ ArcBall.init(self)
12
+ smooth(8)
13
+ values = [] # build a multi-dimensional array in ruby
14
+ (0 .. RES).each do |i| # the inclusive range is intentional here
15
+ valu = []
16
+ (0 .. RES).each do |j|
17
+ val = []
18
+ (0 .. RES).each do |k|
19
+ val << 2.1 * noise(0.35 * i, 0.35 * j, 0.35 * k)
20
+ end
21
+ valu << val
22
+ end
23
+ values << valu
24
+ end
25
+
26
+ creator = HEC_IsoSurface.new
27
+ creator.set_resolution(RES,RES, RES) # number of cells in x,y,z direction
28
+ creator.set_size(400.0/RES, 400.0/RES, 400.0/RES) # cell size
29
+
30
+ # JRuby requires a bit of help to determine correct 'java args', particulary with
31
+ # overloaded arrays args as seen below. Note we are saying we have an 'array' of
32
+ # 'float array' here, where the values can also be double[][][].
33
+ java_values = values.to_java(Java::float[][]) # pre-coerce values to java
34
+ creator.set_values(java_values) # the grid points
35
+
36
+ creator.set_isolevel(1) # isolevel to mesh
37
+ creator.set_invert(false) # invert mesh
38
+ creator.set_boundary(100) # value of isoFunction outside grid
39
+ # use creator.clear_boundary to set boundary values to "no value".
40
+ # A boundary value of "no value" results in an open mesh
41
+
42
+ mesh = HE_Mesh.new(creator)
43
+ # mesh.modify(HEM_Smooth.new.set_iterations(10).setAutoRescale(true))
44
+ creator.set_invert(true)
45
+
46
+ inv_mesh = HE_Mesh.new(creator)
47
+ inv_mesh.modify(HEM_Smooth.new.set_iterations(10).set_auto_rescale(true))
48
+ @render = MeshToVBO.new(self)
49
+ no_stroke
50
+ # no color args produces a default light grey fill
51
+ @mesh_ret = render.meshToVBO(mesh, color(200, 0, 0))
52
+ @inv_mesh_ret = render.meshToVBO(inv_mesh, color(0, 0, 200))
53
+ end
54
+
55
+ def draw
56
+ background(120)
57
+ lights
58
+ define_lights
59
+ shape(inv_mesh_ret)
60
+ shape(mesh_ret)
61
+ end
62
+
63
+ def define_lights
64
+ ambient(80, 80, 80)
65
+ ambient_light(80, 80, 80)
66
+ point_light(30, 30, 30, 0, 0, 1)
67
+ directional_light(40, 40, 50, 0, 0, 1)
68
+ spot_light(30, 30, 30, 0, 40, 200, 0, -0.5, 0.5, PI / 2, 2)
69
+ end
@@ -0,0 +1,57 @@
1
+ # The Nature of Code
2
+ # <http:#www.shiffman.net/teaching/nature>
3
+ # Spring 2010
4
+ # PBox2D example
5
+
6
+ # An uneven surface
7
+
8
+ load_library :jbox2d
9
+ load_library :surface
10
+
11
+ include SB
12
+
13
+ attr_reader :surface, :box2d, :particles
14
+
15
+ def setup
16
+ size(500,300)
17
+ smooth
18
+
19
+ # Initialize box2d physics and create the world
20
+ @box2d = Processing::Box2d::Box2d.new(self)
21
+ box2d.create_world
22
+ # We are setting a custom gravity
23
+ box2d.set_gravity(0, -20)
24
+
25
+ # Create the empty list
26
+ @particles = []
27
+ # Create the surface
28
+ @surface = Surface.new(box2d)
29
+ end
30
+
31
+ def draw
32
+ # If the mouse is pressed, we make new particles
33
+
34
+
35
+ # We must always step through time!
36
+ box2d.step
37
+
38
+ background(138, 66, 54)
39
+ # Draw the surface
40
+ surface.display
41
+ # NB question mark is reqd to call mouse_pressed value, else method gets called.
42
+ particles << Particle.new(box2d, mouse_x, mouse_y, rand(2.0 .. 6)) if mouse_pressed?
43
+ # Draw all particles
44
+ particles.each do |p|
45
+ p.display
46
+ end
47
+ # Particles that leave the screen, we delete them
48
+ # (note they have to be deleted from both the box2d world and our list
49
+ particles.each_with_index do |p, i|
50
+ if (p.done)
51
+ particles.delete_at(i)
52
+ end
53
+ end
54
+ # Just drawing the framerate to see how many particles it can handle
55
+ fill(0)
56
+ text("framerate: #{frame_rate.to_i}", 12, 16)
57
+ end
@@ -0,0 +1,23 @@
1
+ load_library 'jbox2d'
2
+ require 'jruby/core_ext'
3
+ class JContactListener
4
+ include org.jbox2d.callbacks.ContactListener
5
+
6
+ def initialize()
7
+ end
8
+ java_signature "void beginContact(org.jbox2d.dynamics.contacts.Contact c)"
9
+ def begin_contact(c)
10
+ end
11
+ java_signature "void endContact(org.jbox2d.dynamics.contacts.Contact c)"
12
+ def end_contact(c)
13
+ end
14
+ java_signature "void beginContact(org.jbox2d.dynamics.contacts.Contact,org.jbox2d.callbacks.ContactImpulse )"
15
+ def pre_solve(c, ci)
16
+ end
17
+ java_signature "void beginContact(org.jbox2d.dynamics.contacts.Contact,org.jbox2d.callbacks.ContactImpulse )"
18
+ def post_solve(c, ci)
19
+ end
20
+ end
21
+
22
+
23
+
@@ -0,0 +1,2 @@
1
+ -XX:CompileCommand=dontinline,org.jruby.runtime.invokedynamic.InvokeDynamicSupport::invocationFallback
2
+
@@ -0,0 +1,158 @@
1
+ module B2D
2
+ include_package 'pbox2d'
3
+ include_package 'org.jbox2d.collision.shapes'
4
+ include_package 'org.jbox2d.common'
5
+ include_package 'org.jbox2d.dynamics'
6
+ java_import 'pbox2d.PBox2D'
7
+
8
+
9
+ # The Nature of Code
10
+ # <http://www.shiffman.net/teaching/nature>
11
+ # Spring 2011
12
+ # PBox2D example
13
+ # A rectangular box
14
+
15
+ class CustomShape
16
+
17
+ # We need to keep track of a Body and a width and height
18
+ attr_reader :body, :box2d
19
+
20
+ # Constructor
21
+ def initialize(b2d, x, y)
22
+ # Add the box to the box2d world
23
+ @box2d = b2d
24
+ make_body(B2D::Vec2.new(x, y))
25
+ end
26
+
27
+ # This function removes the particle from the box2d world
28
+ def kill_body!
29
+ box2d.destroy_body(body)
30
+ end
31
+
32
+ # Is the particle ready for deletion?
33
+ def done
34
+ # Let's find the screen position of the particle
35
+ pos = box2d.get_body_pixel_coord(body)
36
+ # Is it off the bottom of the screen?
37
+ if (pos.y > $app.height)
38
+ kill_body!
39
+ return true
40
+ end
41
+ return false
42
+ end
43
+
44
+ # Drawing the box
45
+ def display
46
+ # We look at each body and get its screen position
47
+ pos = box2d.get_body_pixel_coord(body)
48
+ # Get its angle of rotation
49
+ a = body.get_angle
50
+
51
+ f = body.get_fixture_list
52
+ ps = f.get_shape
53
+
54
+
55
+ rect_mode(CENTER)
56
+ push_matrix
57
+ translate(pos.x, pos.y)
58
+ rotate(-a)
59
+ fill(175)
60
+ stroke(0)
61
+ begin_shape
62
+ # For every vertex, convert to pixel vector
63
+ ps.get_vertex_count.times do |i|
64
+ v = box2d.vector_world_to_pixels(ps.get_vertex(i))
65
+ vertex(v.x, v.y)
66
+ end
67
+ end_shape(CLOSE)
68
+ pop_matrix
69
+ end
70
+
71
+ # This function adds the rectangle to the box2d world
72
+ def make_body(center)
73
+
74
+ # Define a polygon (this is what we use for a rectangle)
75
+ sd = B2D::PolygonShape.new
76
+
77
+ vertices = []
78
+ vertices << box2d.vector_pixels_to_world(B2D::Vec2.new(-15, 25))
79
+ vertices << box2d.vector_pixels_to_world(B2D::Vec2.new(15, 0))
80
+ vertices << box2d.vector_pixels_to_world(B2D::Vec2.new(20, -15))
81
+ vertices << box2d.vector_pixels_to_world(B2D::Vec2.new(-10, -10))
82
+ sd.set(vertices.to_java(Java::OrgJbox2dCommon::Vec2), vertices.length)
83
+
84
+ # Define the body and make it from the shape
85
+ bd = B2D::BodyDef.new
86
+ bd.type = B2D::BodyType::DYNAMIC
87
+ bd.position.set(box2d.coord_pixels_to_world(center))
88
+ @body = box2d.create_body(bd)
89
+
90
+ body.create_fixture(sd, 1.0)
91
+
92
+
93
+ # Give it some initial random velocity
94
+ body.set_linear_velocity(Vec2.new(rand(-5 .. 5), rand(2 .. 5)))
95
+ body.set_angular_velocity(rand(-5 .. 5))
96
+ end
97
+ end
98
+
99
+ # The Nature of Code
100
+ # <http://www.shiffman.net/teaching/nature>
101
+ # Spring 2012
102
+ # PBox2D example
103
+
104
+ # A fixed boundary class (now incorporates angle)
105
+
106
+
107
+
108
+ class Boundary
109
+
110
+ attr_reader :box2d, :b, :x, :y, :w, :h #, :a
111
+
112
+ def initialize(b2d, x, y, w, h, a)
113
+ @box2d = b2d
114
+ @x = x
115
+ @y = y
116
+ @w = w
117
+ @h = h
118
+
119
+ # Define the polygon
120
+ sd = B2D::PolygonShape.new
121
+
122
+ # Figure out the box2d coordinates
123
+ box2dW = box2d.scalar_pixels_to_world(w/2)
124
+ box2dH = box2d.scalar_pixels_to_world(h/2)
125
+ # We're just a box
126
+ sd.set_as_box(box2dW, box2dH)
127
+
128
+
129
+ # Create the body
130
+ bd = B2D::BodyDef.new
131
+ bd.type = B2D::BodyType::STATIC
132
+ bd.angle = a
133
+ bd.position.set(box2d.coord_pixels_to_world(x,y))
134
+ @b = box2d.create_body(bd)
135
+
136
+ # Attached the shape to the body using a Fixture
137
+ b.create_fixture(sd,1)
138
+ end
139
+
140
+ # Draw the boundary, it doesn't move so we don't have to ask the Body for location
141
+ def display
142
+ fill(0)
143
+ stroke(0)
144
+ stroke_weight(1)
145
+ rect_mode(CENTER)
146
+ a = b.get_angle
147
+ push_matrix
148
+ translate(x,y)
149
+ rotate(-a)
150
+ rect(0,0,w,h)
151
+ pop_matrix
152
+ end
153
+
154
+ end
155
+ end
156
+
157
+
158
+