ruby-processing 1.0.11 → 2.4.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.
Files changed (818) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +11 -0
  3. data/.travis.yml +6 -0
  4. data/.yardopts +5 -0
  5. data/CHANGELOG +81 -0
  6. data/CONTRIBUTING.md +33 -0
  7. data/Gemfile +6 -0
  8. data/{LICENSE → LICENSE.md} +6 -4
  9. data/README.md +114 -0
  10. data/Rakefile +37 -0
  11. data/bin/install_jruby_complete +13 -0
  12. data/lib/ruby-processing.rb +3 -10
  13. data/lib/ruby-processing/app.rb +92 -137
  14. data/lib/ruby-processing/config.rb +14 -3
  15. data/lib/ruby-processing/exporters/application_exporter.rb +9 -5
  16. data/lib/ruby-processing/exporters/base_exporter.rb +3 -3
  17. data/lib/ruby-processing/exporters/creator.rb +4 -4
  18. data/lib/ruby-processing/exporters/exporters.rb +7 -0
  19. data/lib/ruby-processing/helper_methods.rb +18 -7
  20. data/lib/ruby-processing/library_loader.rb +17 -16
  21. data/lib/ruby-processing/runner.rb +38 -34
  22. data/lib/ruby-processing/runners/base.rb +1 -13
  23. data/lib/ruby-processing/runners/run.rb +2 -1
  24. data/lib/ruby-processing/runners/watch.rb +1 -1
  25. data/lib/ruby-processing/version.rb +3 -0
  26. data/lib/templates/application/Contents/Info.plist.erb +2 -2
  27. data/lib/templates/application/lib/args.txt.erb +1 -1
  28. data/lib/templates/application/run.erb +2 -1
  29. data/lib/templates/create/blank_sketch.rb.erb +4 -12
  30. data/lib/templates/create/p3d_sketch.rb.erb +7 -0
  31. data/library/boids/boids.rb +76 -58
  32. data/library/control_panel/control_panel.rb +21 -18
  33. data/library/file_chooser/file_chooser.rb +90 -0
  34. data/library/vecmath/vecmath.rb +323 -0
  35. data/ruby-processing.gemspec +54 -0
  36. data/samples/contributed/animator.rb +9 -4
  37. data/samples/contributed/bezier_playground.rb +178 -184
  38. data/samples/contributed/circle_collision.rb +164 -171
  39. data/samples/contributed/drawolver.rb +111 -162
  40. data/samples/contributed/empathy.rb +14 -12
  41. data/samples/contributed/fern.rb +1 -1
  42. data/samples/contributed/fibonacci_sphere.rb +125 -0
  43. data/samples/contributed/flight_patterns.rb +7 -14
  44. data/samples/contributed/full_screen.rb +4 -6
  45. data/samples/contributed/grapher.rb +35 -0
  46. data/samples/contributed/gravity.rb +22 -24
  47. data/samples/contributed/jwishy.rb +75 -63
  48. data/samples/contributed/mandelbrot.rb +82 -0
  49. data/samples/contributed/orbit.rb +5 -4
  50. data/samples/contributed/pong.rb +152 -150
  51. data/samples/contributed/quadraticvertex.rb +98 -0
  52. data/samples/contributed/re_sample.rb +27 -0
  53. data/samples/contributed/simple_buffer.rb +38 -43
  54. data/samples/contributed/tree.rb +63 -70
  55. data/samples/external_library/java_processing/README +3 -0
  56. data/samples/external_library/java_processing/fisica/README +1 -0
  57. data/samples/external_library/java_processing/fisica/bubbles.rb +80 -0
  58. data/samples/external_library/java_processing/fisica/joints.rb +112 -0
  59. data/samples/external_library/java_processing/fisica/polygons.rb +79 -0
  60. data/samples/external_library/java_processing/fisica/raycast.rb +61 -0
  61. data/samples/external_library/java_processing/generative_design/mesh_example.rb +25 -0
  62. data/samples/external_library/java_processing/generative_design/node_spring_attractor.rb +83 -0
  63. data/samples/external_library/java_processing/generative_design/sub_class_example.rb +44 -0
  64. data/samples/external_library/java_processing/geomerative/data/FreeSans.ttf +0 -0
  65. data/samples/external_library/java_processing/geomerative/data/Toucan.svg +43 -0
  66. data/samples/external_library/java_processing/geomerative/hello_bot_ignore_styles.rb +38 -0
  67. data/samples/external_library/java_processing/geomerative/hello_world_rotate_firstletter.rb +43 -0
  68. data/samples/external_library/java_processing/geomerative/hola_mundo.rb +37 -0
  69. data/samples/external_library/java_processing/grafica/data/OktoberfestVSGermanElections.csv +118 -0
  70. data/samples/external_library/java_processing/grafica/default_plot.rb +30 -0
  71. data/samples/external_library/java_processing/grafica/multiple_panels.rb +117 -0
  72. data/samples/external_library/java_processing/grafica/oktoberfest_example.rb +83 -0
  73. data/samples/external_library/java_processing/hemesh/data/java_args.txt +2 -0
  74. data/samples/external_library/java_processing/hemesh/library/vbo/mesh_to_vbo.rb +43 -0
  75. data/samples/external_library/java_processing/hemesh/twin_iso.rb +71 -0
  76. data/samples/external_library/java_processing/pbox2d/bumpy_surface_noise.rb +57 -0
  77. data/samples/external_library/java_processing/pbox2d/contact_test.rb +23 -0
  78. data/samples/external_library/java_processing/pbox2d/data/java_args.txt +2 -0
  79. data/samples/external_library/java_processing/pbox2d/library/custom_shape/custom_shape.rb +158 -0
  80. data/samples/external_library/java_processing/pbox2d/library/particle_system/particle_system.rb +212 -0
  81. data/samples/external_library/java_processing/pbox2d/library/surface/surface.rb +154 -0
  82. data/samples/external_library/java_processing/pbox2d/liquidy.rb +58 -0
  83. data/samples/external_library/java_processing/pbox2d/polygons.rb +58 -0
  84. data/samples/{peasy_cam → external_library/java_processing/peasy_cam}/hello_peasy.rb +4 -4
  85. data/samples/external_library/java_processing/peasy_cam/hilbert_fractal.rb +34 -0
  86. data/samples/{peasy_cam → external_library/java_processing/peasy_cam}/library/hilbert/hilbert.rb +1 -1
  87. data/samples/external_library/java_processing/proscene/cad_camera.rb +57 -0
  88. data/samples/external_library/java_processing/proscene/camera_customization.rb +114 -0
  89. data/samples/external_library/java_processing/proscene/data/ti_yong.png +0 -0
  90. data/samples/external_library/java_processing/toxiclibs/data/ti_yong.png +0 -0
  91. data/samples/external_library/java_processing/toxiclibs/gray_scott_image.rb +79 -0
  92. data/samples/external_library/java_processing/toxiclibs/gray_scott_tone_map.rb +78 -0
  93. data/samples/external_library/java_processing/toxiclibs/implicit.rb +143 -0
  94. data/samples/external_library/java_processing/toxiclibs/library/vbo/mesh_to_vbo.rb +52 -0
  95. data/samples/external_library/java_processing/toxiclibs/model_align.rb +55 -0
  96. data/samples/external_library/ruby_gem/README +12 -0
  97. data/samples/external_library/ruby_gem/data/README.txt +1 -0
  98. data/samples/external_library/ruby_gem/data/java_args.txt +2 -0
  99. data/samples/external_library/ruby_gem/game_of_life.rb +127 -0
  100. data/samples/external_library/ruby_gem/mdarray_test.rb +28 -0
  101. data/samples/processing_app/basics/arrays/array.rb +23 -29
  102. data/samples/processing_app/basics/arrays/array_2d.rb +22 -28
  103. data/samples/processing_app/basics/arrays/array_objects.rb +50 -55
  104. data/samples/processing_app/basics/camera/move_eye.rb +24 -0
  105. data/samples/processing_app/{3D → basics}/camera/perspective.rb +0 -0
  106. data/samples/processing_app/basics/color/brightness.rb +15 -21
  107. data/samples/processing_app/basics/color/color_wheel.rb +72 -79
  108. data/samples/processing_app/basics/color/creating.rb +35 -24
  109. data/samples/processing_app/basics/color/hue.rb +16 -22
  110. data/samples/processing_app/basics/color/linear_gradient.rb +35 -40
  111. data/samples/processing_app/basics/color/radial_gradient.rb +26 -34
  112. data/samples/processing_app/basics/color/reading/reading.rb +2 -7
  113. data/samples/processing_app/basics/color/relativity.rb +19 -32
  114. data/samples/processing_app/basics/color/saturation.rb +15 -26
  115. data/samples/processing_app/basics/color/wave_gradient.rb +25 -36
  116. data/samples/processing_app/basics/control/conditionals1.rb +20 -25
  117. data/samples/processing_app/basics/control/conditionals2.rb +27 -32
  118. data/samples/processing_app/basics/control/embedded_iteration.rb +25 -33
  119. data/samples/processing_app/basics/control/iteration.rb +43 -54
  120. data/samples/processing_app/basics/control/logical_operators.rb +45 -48
  121. data/samples/processing_app/basics/data/characters_strings.rb +50 -0
  122. data/samples/processing_app/basics/data/datatype_conversion.rb +28 -32
  123. data/samples/processing_app/basics/data/integers_floats.rb +18 -24
  124. data/samples/processing_app/basics/data/true_false.rb +19 -25
  125. data/samples/processing_app/basics/data/variable_scope.rb +51 -57
  126. data/samples/processing_app/basics/data/variables.rb +27 -32
  127. data/samples/processing_app/basics/form/bezier.rb +11 -14
  128. data/samples/processing_app/basics/form/bezier_ellipse.rb +79 -90
  129. data/samples/processing_app/basics/form/brick_tower.rb +92 -0
  130. data/samples/processing_app/basics/form/cubic_grid.rb +39 -0
  131. data/samples/processing_app/{3D → basics}/form/icosahedra/icosahedra.rb +32 -36
  132. data/samples/processing_app/{3D → basics}/form/icosahedra/icosahedron.rb +1 -1
  133. data/samples/processing_app/{3D → basics}/form/icosahedra/shape_3D.rb +0 -0
  134. data/samples/processing_app/basics/form/pie_chart.rb +17 -21
  135. data/samples/processing_app/basics/form/points_lines.rb +11 -16
  136. data/samples/processing_app/{3D → basics}/form/primitives.rb +11 -25
  137. data/samples/processing_app/basics/form/regular_polygon.rb +46 -0
  138. data/samples/processing_app/basics/form/rgb_cube.rb +68 -0
  139. data/samples/processing_app/basics/form/shape_primitives.rb +15 -17
  140. data/samples/processing_app/basics/form/shape_transform.rb +88 -0
  141. data/samples/processing_app/basics/form/star.rb +48 -0
  142. data/samples/processing_app/basics/form/toroid.rb +127 -0
  143. data/samples/processing_app/basics/form/triangle_strip.rb +29 -33
  144. data/samples/processing_app/basics/form/vertices.rb +36 -40
  145. data/samples/processing_app/basics/image/alphamask.rb +10 -16
  146. data/samples/processing_app/basics/image/background_image.rb +16 -22
  147. data/samples/processing_app/basics/image/create_image.rb +10 -16
  148. data/samples/processing_app/{3D → basics}/image/data/ystone08.jpg +0 -0
  149. data/samples/processing_app/basics/image/extrusion.rb +46 -0
  150. data/samples/processing_app/basics/image/load_display_image.rb +12 -19
  151. data/samples/processing_app/basics/image/pointillism.rb +13 -19
  152. data/samples/processing_app/basics/image/request_image.rb +41 -50
  153. data/samples/processing_app/basics/image/sprite.rb +19 -25
  154. data/samples/processing_app/basics/image/transparency.rb +14 -20
  155. data/samples/processing_app/basics/image/zoom.rb +59 -0
  156. data/samples/processing_app/basics/input/clock.rb +32 -38
  157. data/samples/processing_app/basics/input/constrain.rb +25 -31
  158. data/samples/processing_app/basics/input/easing.rb +18 -20
  159. data/samples/processing_app/basics/input/keyboard.rb +16 -22
  160. data/samples/processing_app/basics/input/keyboard_functions.rb +49 -68
  161. data/samples/processing_app/basics/input/milliseconds.rb +11 -16
  162. data/samples/processing_app/basics/input/mouse_1d.rb +19 -26
  163. data/samples/processing_app/basics/input/mouse_2d.rb +14 -20
  164. data/samples/processing_app/basics/input/mouse_functions.rb +56 -61
  165. data/samples/processing_app/basics/input/mouse_press.rb +9 -15
  166. data/samples/processing_app/basics/input/mouse_signals.rb +29 -34
  167. data/samples/processing_app/basics/input/storing_input.rb +28 -29
  168. data/samples/processing_app/basics/lights/directional.rb +37 -0
  169. data/samples/processing_app/basics/lights/lights1.rb +35 -0
  170. data/samples/processing_app/basics/lights/lights2.rb +38 -0
  171. data/samples/processing_app/basics/lights/reflection.rb +35 -0
  172. data/samples/processing_app/basics/lights/spot.rb +36 -0
  173. data/samples/processing_app/basics/math/additive_wave.rb +51 -53
  174. data/samples/processing_app/basics/math/arctangent.rb +34 -44
  175. data/samples/processing_app/basics/math/distance1.rb +44 -50
  176. data/samples/processing_app/basics/math/distance2.rb +14 -30
  177. data/samples/processing_app/basics/math/double_random.rb +23 -30
  178. data/samples/processing_app/basics/math/graphing_2_d_equation.rb +30 -44
  179. data/samples/processing_app/basics/math/increment_decrement.rb +37 -42
  180. data/samples/processing_app/basics/math/interpolate.rb +34 -0
  181. data/samples/processing_app/basics/math/modulo.rb +25 -29
  182. data/samples/processing_app/basics/math/noise_1_d.rb +14 -30
  183. data/samples/processing_app/basics/math/noise_2_d.rb +22 -39
  184. data/samples/processing_app/basics/math/noise_3_d.rb +24 -44
  185. data/samples/processing_app/basics/math/noise_wave.rb +35 -55
  186. data/samples/processing_app/basics/math/operator_precedence.rb +24 -45
  187. data/samples/processing_app/basics/math/polar_to_cartesian.rb +22 -35
  188. data/samples/processing_app/basics/math/random.rb +13 -27
  189. data/samples/processing_app/basics/math/random_gaussian.rb +23 -0
  190. data/samples/processing_app/basics/math/sine.rb +27 -41
  191. data/samples/processing_app/basics/math/sine_cosine.rb +37 -49
  192. data/samples/processing_app/basics/math/sine_wave.rb +33 -52
  193. data/samples/processing_app/basics/objects/composite_objects.rb +94 -120
  194. data/samples/processing_app/basics/objects/inheritance.rb +64 -86
  195. data/samples/processing_app/basics/objects/multiple_constructors.rb +25 -38
  196. data/samples/processing_app/basics/objects/objects.rb +42 -57
  197. data/samples/processing_app/basics/shape/data/rocket.mtl +8 -0
  198. data/samples/processing_app/basics/shape/data/rocket.obj +1688 -0
  199. data/samples/processing_app/basics/shape/data/rocket.png +0 -0
  200. data/samples/processing_app/basics/shape/disable_style.rb +21 -25
  201. data/samples/processing_app/basics/shape/get_child.rb +27 -30
  202. data/samples/processing_app/basics/shape/load_display_obj.rb +25 -0
  203. data/samples/processing_app/basics/shape/load_display_shape.rb +10 -23
  204. data/samples/processing_app/basics/shape/load_display_svg.rb +22 -0
  205. data/samples/processing_app/basics/shape/scale_shape.rb +13 -23
  206. data/samples/processing_app/basics/structure/coordinates.rb +12 -25
  207. data/samples/processing_app/basics/structure/create_graphics.rb +18 -28
  208. data/samples/processing_app/basics/structure/functions.rb +19 -31
  209. data/samples/processing_app/basics/structure/loop.rb +21 -35
  210. data/samples/processing_app/basics/structure/noloop.rb +13 -25
  211. data/samples/processing_app/basics/structure/recursion1.rb +18 -33
  212. data/samples/processing_app/basics/structure/recursion2.rb +18 -34
  213. data/samples/processing_app/basics/structure/redraw.rb +16 -27
  214. data/samples/processing_app/basics/structure/setup_draw.rb +11 -22
  215. data/samples/processing_app/basics/structure/statements_comments.rb +7 -13
  216. data/samples/processing_app/basics/structure/width_height.rb +7 -14
  217. data/samples/processing_app/{3D → basics}/textures/data/berlin-1.jpg +0 -0
  218. data/samples/processing_app/basics/textures/texture1.rb +28 -0
  219. data/samples/processing_app/basics/textures/texture2.rb +33 -0
  220. data/samples/processing_app/basics/textures/texture3.rb +64 -0
  221. data/samples/processing_app/basics/textures/texture_cube.rb +86 -0
  222. data/samples/processing_app/basics/transform/arm.rb +22 -37
  223. data/samples/processing_app/basics/transform/bird.rb +57 -0
  224. data/samples/processing_app/basics/transform/birds.rb +38 -0
  225. data/samples/processing_app/basics/transform/cubes_in_cube.rb +99 -0
  226. data/samples/processing_app/{3D/transform/birds → basics/transform/library/bird}/bird.rb +0 -0
  227. data/samples/processing_app/{3D/transform/cubes_in_cube → basics/transform/library/cube}/cube.rb +10 -12
  228. data/samples/processing_app/basics/transform/rotate.rb +17 -31
  229. data/samples/processing_app/basics/transform/rotate1.rb +27 -0
  230. data/samples/processing_app/basics/transform/rotate_push_pop.rb +35 -0
  231. data/samples/processing_app/basics/transform/rotate_x_y.rb +36 -0
  232. data/samples/processing_app/basics/transform/scale.rb +19 -35
  233. data/samples/processing_app/basics/transform/translate.rb +18 -32
  234. data/samples/processing_app/basics/transform/triangle_flower.rb +38 -55
  235. data/samples/processing_app/{3D → basics}/typography/data/Univers45.vlw +0 -0
  236. data/samples/processing_app/{3D → basics}/typography/kinetic_type.rb +1 -5
  237. data/samples/processing_app/basics/typography/letters.rb +26 -44
  238. data/samples/processing_app/basics/typography/words.rb +29 -30
  239. data/samples/processing_app/basics/web/embedded_links.rb +39 -45
  240. data/samples/processing_app/basics/web/loading_images.rb +6 -16
  241. data/samples/processing_app/demos/graphics/bezier_patch.rb +227 -0
  242. data/samples/processing_app/demos/graphics/data/frag.glsl +30 -0
  243. data/samples/processing_app/demos/graphics/data/java_args.txt +2 -0
  244. data/samples/processing_app/demos/graphics/data/mercury.jpg +0 -0
  245. data/samples/processing_app/demos/graphics/data/planet.jpg +0 -0
  246. data/samples/processing_app/demos/graphics/data/starfield.jpg +0 -0
  247. data/samples/processing_app/demos/graphics/data/sun.jpg +0 -0
  248. data/samples/processing_app/demos/graphics/data/vert.glsl +31 -0
  249. data/samples/processing_app/demos/graphics/low_level_gl.rb +72 -0
  250. data/samples/processing_app/demos/graphics/planets.rb +51 -0
  251. data/samples/processing_app/demos/graphics/trefoil.rb +142 -0
  252. data/samples/processing_app/demos/graphics/wiggling.rb +289 -0
  253. data/samples/processing_app/demos/performance/cubic_grid_retained.rb +58 -0
  254. data/samples/processing_app/demos/performance/data/java_args.txt +1 -0
  255. data/samples/processing_app/demos/performance/esfera.rb +105 -0
  256. data/samples/processing_app/demos/performance/text_rendering.rb +14 -0
  257. data/samples/processing_app/demos/tests/no_background_test.rb +10 -0
  258. data/samples/processing_app/demos/tests/offscreen_test.rb +34 -0
  259. data/samples/processing_app/demos/tests/redraw_test.rb +14 -0
  260. data/samples/processing_app/demos/tests/resize_test.rb +10 -0
  261. data/samples/processing_app/demos/tests/restart_test.rb +22 -0
  262. data/samples/processing_app/demos/tests/smooth_test.rb +27 -0
  263. data/samples/processing_app/demos/tests/specs_test.rb +11 -0
  264. data/samples/processing_app/library/dxf/simple_export.rb +48 -0
  265. data/samples/processing_app/library/file_chooser/image_viewer.rb +24 -0
  266. data/samples/processing_app/library/minim/filter_example.rb +65 -0
  267. data/samples/processing_app/library/minim/frequency_modulation.rb +64 -0
  268. data/samples/processing_app/library/minim/sequence_sound.rb +59 -0
  269. data/samples/processing_app/library/minim/synthesize_sound.rb +35 -0
  270. data/samples/processing_app/library/movie/README +1 -0
  271. data/samples/processing_app/library/movie/data/transit.mkv +0 -0
  272. data/samples/processing_app/library/movie/data/transit.mov +0 -0
  273. data/samples/processing_app/library/movie/loop.rb +24 -0
  274. data/samples/processing_app/library/movie/pixelate.rb +50 -0
  275. data/samples/processing_app/library/movie/reverse.rb +47 -0
  276. data/samples/processing_app/library/movie/scratch.rb +36 -0
  277. data/samples/processing_app/library/movie/speed.rb +33 -0
  278. data/samples/processing_app/library/net/HTTPClient.rb +31 -0
  279. data/samples/processing_app/library/pdf/.gitignore +1 -0
  280. data/samples/processing_app/library/pdf/complex_3D.rb +160 -0
  281. data/samples/processing_app/library/pdf/large_page.rb +25 -0
  282. data/samples/processing_app/library/pdf/many_frames.rb +33 -0
  283. data/samples/processing_app/library/pdf/many_pages.rb +31 -0
  284. data/samples/processing_app/library/pdf/many_pdfs.rb +37 -0
  285. data/samples/processing_app/library/pdf/one_frame.rb +19 -0
  286. data/samples/processing_app/library/vecmath/README.txt +2 -0
  287. data/samples/processing_app/library/vecmath/acceleration_with_vectors.rb +75 -0
  288. data/samples/processing_app/library/vecmath/bouncing_ball.rb +51 -0
  289. data/samples/processing_app/library/vecmath/circle_collision.rb +174 -0
  290. data/samples/processing_app/library/vecmath/data/java_args.txt +2 -0
  291. data/samples/processing_app/library/vecmath/data/sprite.png +0 -0
  292. data/samples/processing_app/library/vecmath/data/texture.png +0 -0
  293. data/samples/processing_app/library/vecmath/drawolver.rb +111 -0
  294. data/samples/processing_app/library/vecmath/flocking.rb +33 -0
  295. data/samples/processing_app/library/vecmath/hilbert_fractal.rb +65 -0
  296. data/samples/processing_app/library/vecmath/library/flock/flock.rb +214 -0
  297. data/samples/processing_app/library/vecmath/library/hilbert/hilbert.rb +84 -0
  298. data/samples/processing_app/library/vecmath/library/particle/particle_system.rb +106 -0
  299. data/samples/processing_app/library/vecmath/library/wiggler/wiggler.rb +58 -0
  300. data/samples/processing_app/library/vecmath/morph.rb +86 -0
  301. data/samples/processing_app/library/vecmath/multiple_particle_systems.rb +158 -0
  302. data/samples/processing_app/library/vecmath/particle_system_pshape.rb +38 -0
  303. data/samples/processing_app/library/vecmath/reflection1.rb +108 -0
  304. data/samples/processing_app/library/vecmath/retained_menger.rb +150 -0
  305. data/samples/processing_app/library/vecmath/retained_test.rb +65 -0
  306. data/samples/processing_app/library/vecmath/retained_test2.rb +65 -0
  307. data/samples/processing_app/library/vecmath/simple_particle_system.rb +89 -0
  308. data/samples/processing_app/library/vecmath/smoke_particle_system.rb +138 -0
  309. data/samples/processing_app/library/vecmath/vector_math.rb +39 -0
  310. data/samples/processing_app/library/vecmath/wiggle_pshape.rb +22 -0
  311. data/samples/processing_app/topics/advanced_data/README +1 -0
  312. data/samples/processing_app/topics/advanced_data/counting_words.rb +79 -0
  313. data/samples/processing_app/topics/advanced_data/data/Georgia.ttf +0 -0
  314. data/samples/processing_app/topics/advanced_data/data/Merriweather-Light.ttf +0 -0
  315. data/samples/processing_app/topics/advanced_data/data/a000 copy.jpg +0 -0
  316. data/samples/processing_app/topics/advanced_data/data/a001 copy.jpg +0 -0
  317. data/samples/processing_app/topics/advanced_data/data/a002 copy.jpg +0 -0
  318. data/samples/processing_app/topics/advanced_data/data/a003 copy.jpg +0 -0
  319. data/samples/processing_app/topics/advanced_data/data/a004 copy.jpg +0 -0
  320. data/samples/processing_app/topics/advanced_data/data/a005 copy.jpg +0 -0
  321. data/samples/processing_app/topics/advanced_data/data/a006 copy.jpg +0 -0
  322. data/samples/processing_app/topics/advanced_data/data/a007 copy.jpg +0 -0
  323. data/samples/processing_app/topics/advanced_data/data/a008 copy.jpg +0 -0
  324. data/samples/processing_app/topics/advanced_data/data/a009 copy.jpg +0 -0
  325. data/samples/processing_app/topics/advanced_data/data/a010 copy.jpg +0 -0
  326. data/samples/processing_app/topics/advanced_data/data/a011 copy.jpg +0 -0
  327. data/samples/processing_app/topics/advanced_data/data/a012 copy.jpg +0 -0
  328. data/samples/processing_app/topics/advanced_data/data/a013 copy.jpg +0 -0
  329. data/samples/processing_app/topics/advanced_data/data/a014 copy.jpg +0 -0
  330. data/samples/processing_app/topics/advanced_data/data/a015 copy.jpg +0 -0
  331. data/samples/processing_app/topics/advanced_data/data/a016 copy.jpg +0 -0
  332. data/samples/processing_app/topics/advanced_data/data/a017 copy.jpg +0 -0
  333. data/samples/processing_app/topics/advanced_data/data/a018 copy.jpg +0 -0
  334. data/samples/processing_app/topics/advanced_data/data/a019 copy.jpg +0 -0
  335. data/samples/processing_app/topics/advanced_data/data/a020 copy.jpg +0 -0
  336. data/samples/processing_app/topics/advanced_data/data/a021 copy.jpg +0 -0
  337. data/samples/processing_app/topics/advanced_data/data/a022 copy.jpg +0 -0
  338. data/samples/processing_app/topics/advanced_data/data/a023 copy.jpg +0 -0
  339. data/samples/processing_app/topics/advanced_data/data/a024 copy.jpg +0 -0
  340. data/samples/processing_app/topics/advanced_data/data/a025 copy.jpg +0 -0
  341. data/samples/processing_app/topics/advanced_data/data/a026 copy.jpg +0 -0
  342. data/samples/processing_app/topics/advanced_data/data/a027 copy.jpg +0 -0
  343. data/samples/processing_app/topics/advanced_data/data/a028 copy.jpg +0 -0
  344. data/samples/processing_app/topics/advanced_data/data/a029 copy.jpg +0 -0
  345. data/samples/processing_app/topics/advanced_data/data/a030 copy.jpg +0 -0
  346. data/samples/processing_app/topics/advanced_data/data/a031 copy.jpg +0 -0
  347. data/samples/processing_app/topics/advanced_data/data/a032 copy.jpg +0 -0
  348. data/samples/processing_app/topics/advanced_data/data/a033 copy.jpg +0 -0
  349. data/samples/processing_app/topics/advanced_data/data/a034 copy.jpg +0 -0
  350. data/samples/processing_app/topics/advanced_data/data/a035 copy.jpg +0 -0
  351. data/samples/processing_app/topics/advanced_data/data/a036 copy.jpg +0 -0
  352. data/samples/processing_app/topics/advanced_data/data/a037 copy.jpg +0 -0
  353. data/samples/processing_app/topics/advanced_data/data/a038 copy.jpg +0 -0
  354. data/samples/processing_app/topics/advanced_data/data/a039 copy.jpg +0 -0
  355. data/samples/processing_app/topics/advanced_data/data/a040 copy.jpg +0 -0
  356. data/samples/processing_app/topics/advanced_data/data/a041 copy.jpg +0 -0
  357. data/samples/processing_app/topics/advanced_data/data/a042 copy.jpg +0 -0
  358. data/samples/processing_app/topics/advanced_data/data/a043 copy.jpg +0 -0
  359. data/samples/processing_app/topics/advanced_data/data/a044 copy.jpg +0 -0
  360. data/samples/processing_app/topics/advanced_data/data/a045 copy.jpg +0 -0
  361. data/samples/processing_app/topics/advanced_data/data/a046 copy.jpg +0 -0
  362. data/samples/processing_app/topics/advanced_data/data/a047 copy.jpg +0 -0
  363. data/samples/processing_app/topics/advanced_data/data/a048 copy.jpg +0 -0
  364. data/samples/processing_app/topics/advanced_data/data/a049 copy.jpg +0 -0
  365. data/samples/processing_app/topics/advanced_data/data/a050 copy.jpg +0 -0
  366. data/samples/processing_app/topics/advanced_data/data/a051 copy.jpg +0 -0
  367. data/samples/processing_app/topics/advanced_data/data/a052 copy.jpg +0 -0
  368. data/samples/processing_app/topics/advanced_data/data/a053 copy.jpg +0 -0
  369. data/samples/processing_app/topics/advanced_data/data/a054 copy.jpg +0 -0
  370. data/samples/processing_app/topics/advanced_data/data/a055 copy.jpg +0 -0
  371. data/samples/processing_app/topics/advanced_data/data/a056 copy.jpg +0 -0
  372. data/samples/processing_app/topics/advanced_data/data/a057 copy.jpg +0 -0
  373. data/samples/processing_app/topics/advanced_data/data/a058 copy.jpg +0 -0
  374. data/samples/processing_app/topics/advanced_data/data/a059 copy.jpg +0 -0
  375. data/samples/processing_app/topics/advanced_data/data/a060 copy.jpg +0 -0
  376. data/samples/processing_app/topics/advanced_data/data/a061 copy.jpg +0 -0
  377. data/samples/processing_app/topics/advanced_data/data/a062 copy.jpg +0 -0
  378. data/samples/processing_app/topics/advanced_data/data/a063 copy.jpg +0 -0
  379. data/samples/processing_app/topics/advanced_data/data/a064 copy.jpg +0 -0
  380. data/samples/processing_app/topics/advanced_data/data/a065 copy.jpg +0 -0
  381. data/samples/processing_app/topics/advanced_data/data/a066 copy.jpg +0 -0
  382. data/samples/processing_app/topics/advanced_data/data/a067 copy.jpg +0 -0
  383. data/samples/processing_app/topics/advanced_data/data/a068 copy.jpg +0 -0
  384. data/samples/processing_app/topics/advanced_data/data/a069 copy.jpg +0 -0
  385. data/samples/processing_app/topics/advanced_data/data/a070 copy.jpg +0 -0
  386. data/samples/processing_app/topics/advanced_data/data/a071 copy.jpg +0 -0
  387. data/samples/processing_app/topics/advanced_data/data/a072 copy.jpg +0 -0
  388. data/samples/processing_app/topics/advanced_data/data/a073 copy.jpg +0 -0
  389. data/samples/processing_app/topics/advanced_data/data/a074 copy.jpg +0 -0
  390. data/samples/processing_app/topics/advanced_data/data/a075 copy.jpg +0 -0
  391. data/samples/processing_app/topics/advanced_data/data/a076 copy.jpg +0 -0
  392. data/samples/processing_app/topics/advanced_data/data/a077 copy.jpg +0 -0
  393. data/samples/processing_app/topics/advanced_data/data/a078 copy.jpg +0 -0
  394. data/samples/processing_app/topics/advanced_data/data/a079 copy.jpg +0 -0
  395. data/samples/processing_app/topics/advanced_data/data/a080 copy.jpg +0 -0
  396. data/samples/processing_app/topics/advanced_data/data/a081 copy.jpg +0 -0
  397. data/samples/processing_app/topics/advanced_data/data/a082 copy.jpg +0 -0
  398. data/samples/processing_app/topics/advanced_data/data/a083 copy.jpg +0 -0
  399. data/samples/processing_app/topics/advanced_data/data/a084 copy.jpg +0 -0
  400. data/samples/processing_app/topics/advanced_data/data/a085 copy.jpg +0 -0
  401. data/samples/processing_app/topics/advanced_data/data/a086 copy.jpg +0 -0
  402. data/samples/processing_app/topics/advanced_data/data/a087 copy.jpg +0 -0
  403. data/samples/processing_app/topics/advanced_data/data/a088 copy.jpg +0 -0
  404. data/samples/processing_app/topics/advanced_data/data/a089 copy.jpg +0 -0
  405. data/samples/processing_app/topics/advanced_data/data/a090 copy.jpg +0 -0
  406. data/samples/processing_app/topics/advanced_data/data/a091 copy.jpg +0 -0
  407. data/samples/processing_app/topics/advanced_data/data/a092 copy.jpg +0 -0
  408. data/samples/processing_app/topics/advanced_data/data/a093 copy.jpg +0 -0
  409. data/samples/processing_app/topics/advanced_data/data/a094 copy.jpg +0 -0
  410. data/samples/processing_app/topics/advanced_data/data/a095 copy.jpg +0 -0
  411. data/samples/processing_app/topics/advanced_data/data/a096 copy.jpg +0 -0
  412. data/samples/processing_app/topics/advanced_data/data/a097 copy.jpg +0 -0
  413. data/samples/processing_app/topics/advanced_data/data/a098 copy.jpg +0 -0
  414. data/samples/processing_app/topics/advanced_data/data/a099 copy.jpg +0 -0
  415. data/samples/processing_app/topics/advanced_data/data/a100 copy.jpg +0 -0
  416. data/samples/processing_app/topics/advanced_data/data/a101 copy.jpg +0 -0
  417. data/samples/processing_app/topics/advanced_data/data/a102 copy.jpg +0 -0
  418. data/samples/processing_app/topics/advanced_data/data/a103 copy.jpg +0 -0
  419. data/samples/processing_app/topics/advanced_data/data/a104 copy.jpg +0 -0
  420. data/samples/processing_app/topics/advanced_data/data/a105 copy.jpg +0 -0
  421. data/samples/processing_app/topics/advanced_data/data/a106 copy.jpg +0 -0
  422. data/samples/processing_app/topics/advanced_data/data/a107 copy.jpg +0 -0
  423. data/samples/processing_app/topics/advanced_data/data/a108 copy.jpg +0 -0
  424. data/samples/processing_app/topics/advanced_data/data/a109 copy.jpg +0 -0
  425. data/samples/processing_app/topics/advanced_data/data/a110 copy.jpg +0 -0
  426. data/samples/processing_app/topics/advanced_data/data/a111 copy.jpg +0 -0
  427. data/samples/processing_app/topics/advanced_data/data/a112 copy.jpg +0 -0
  428. data/samples/processing_app/topics/advanced_data/data/a113 copy.jpg +0 -0
  429. data/samples/processing_app/topics/advanced_data/data/a114 copy.jpg +0 -0
  430. data/samples/processing_app/topics/advanced_data/data/a115 copy.jpg +0 -0
  431. data/samples/processing_app/topics/advanced_data/data/data.csv +5 -0
  432. data/samples/processing_app/topics/advanced_data/data/data.json +36 -0
  433. data/samples/processing_app/topics/advanced_data/data/data.xml +38 -0
  434. data/samples/processing_app/topics/advanced_data/data/data.yml +22 -0
  435. data/samples/processing_app/topics/advanced_data/data/dracula.txt +16624 -0
  436. data/samples/processing_app/topics/advanced_data/data/frankenstein.txt +7652 -0
  437. data/samples/processing_app/topics/advanced_data/data/struct_data.yml +22 -0
  438. data/samples/processing_app/topics/advanced_data/library/bubble/bubble.rb +45 -0
  439. data/samples/processing_app/topics/advanced_data/library/word/word.rb +64 -0
  440. data/samples/processing_app/topics/advanced_data/load_save_XML.rb +114 -0
  441. data/samples/processing_app/topics/advanced_data/load_save_json.rb +93 -0
  442. data/samples/processing_app/topics/advanced_data/load_save_struct_yaml.rb +85 -0
  443. data/samples/processing_app/topics/advanced_data/load_save_table.rb +85 -0
  444. data/samples/processing_app/topics/advanced_data/load_save_yaml.rb +89 -0
  445. data/samples/processing_app/topics/advanced_data/regex.rb +47 -0
  446. data/samples/processing_app/topics/advanced_data/threads.rb +96 -0
  447. data/samples/processing_app/topics/advanced_data/threads_two.rb +52 -0
  448. data/samples/processing_app/topics/advanced_data/word_frequency.rb +78 -0
  449. data/samples/processing_app/topics/advanced_data/yahoo_weather.rb +38 -0
  450. data/samples/processing_app/topics/animation/README.txt +1 -0
  451. data/samples/processing_app/topics/animation/animated_sprite.rb +58 -0
  452. data/samples/processing_app/topics/animation/data/PT_Shifty_0000.gif +0 -0
  453. data/samples/processing_app/topics/animation/data/PT_Shifty_0001.gif +0 -0
  454. data/samples/processing_app/topics/animation/data/PT_Shifty_0002.gif +0 -0
  455. data/samples/processing_app/topics/animation/data/PT_Shifty_0003.gif +0 -0
  456. data/samples/processing_app/topics/animation/data/PT_Shifty_0004.gif +0 -0
  457. data/samples/processing_app/topics/animation/data/PT_Shifty_0005.gif +0 -0
  458. data/samples/processing_app/topics/animation/data/PT_Shifty_0006.gif +0 -0
  459. data/samples/processing_app/topics/animation/data/PT_Shifty_0007.gif +0 -0
  460. data/samples/processing_app/topics/animation/data/PT_Shifty_0008.gif +0 -0
  461. data/samples/processing_app/topics/animation/data/PT_Shifty_0009.gif +0 -0
  462. data/samples/processing_app/topics/animation/data/PT_Shifty_0010.gif +0 -0
  463. data/samples/processing_app/topics/animation/data/PT_Shifty_0011.gif +0 -0
  464. data/samples/processing_app/topics/animation/data/PT_Shifty_0012.gif +0 -0
  465. data/samples/processing_app/topics/animation/data/PT_Shifty_0013.gif +0 -0
  466. data/samples/processing_app/topics/animation/data/PT_Shifty_0014.gif +0 -0
  467. data/samples/processing_app/topics/animation/data/PT_Shifty_0015.gif +0 -0
  468. data/samples/processing_app/topics/animation/data/PT_Shifty_0016.gif +0 -0
  469. data/samples/processing_app/topics/animation/data/PT_Shifty_0017.gif +0 -0
  470. data/samples/processing_app/topics/animation/data/PT_Shifty_0018.gif +0 -0
  471. data/samples/processing_app/topics/animation/data/PT_Shifty_0019.gif +0 -0
  472. data/samples/processing_app/topics/animation/data/PT_Shifty_0020.gif +0 -0
  473. data/samples/processing_app/topics/animation/data/PT_Shifty_0021.gif +0 -0
  474. data/samples/processing_app/topics/animation/data/PT_Shifty_0022.gif +0 -0
  475. data/samples/processing_app/topics/animation/data/PT_Shifty_0023.gif +0 -0
  476. data/samples/processing_app/topics/animation/data/PT_Shifty_0024.gif +0 -0
  477. data/samples/processing_app/topics/animation/data/PT_Shifty_0025.gif +0 -0
  478. data/samples/processing_app/topics/animation/data/PT_Shifty_0026.gif +0 -0
  479. data/samples/processing_app/topics/animation/data/PT_Shifty_0027.gif +0 -0
  480. data/samples/processing_app/topics/animation/data/PT_Shifty_0028.gif +0 -0
  481. data/samples/processing_app/topics/animation/data/PT_Shifty_0029.gif +0 -0
  482. data/samples/processing_app/topics/animation/data/PT_Shifty_0030.gif +0 -0
  483. data/samples/processing_app/topics/animation/data/PT_Shifty_0031.gif +0 -0
  484. data/samples/processing_app/topics/animation/data/PT_Shifty_0032.gif +0 -0
  485. data/samples/processing_app/topics/animation/data/PT_Shifty_0033.gif +0 -0
  486. data/samples/processing_app/topics/animation/data/PT_Shifty_0034.gif +0 -0
  487. data/samples/processing_app/topics/animation/data/PT_Shifty_0035.gif +0 -0
  488. data/samples/processing_app/topics/animation/data/PT_Shifty_0036.gif +0 -0
  489. data/samples/processing_app/topics/animation/data/PT_Shifty_0037.gif +0 -0
  490. data/samples/processing_app/topics/animation/data/PT_Teddy_0000.gif +0 -0
  491. data/samples/processing_app/topics/animation/data/PT_Teddy_0001.gif +0 -0
  492. data/samples/processing_app/topics/animation/data/PT_Teddy_0002.gif +0 -0
  493. data/samples/processing_app/topics/animation/data/PT_Teddy_0003.gif +0 -0
  494. data/samples/processing_app/topics/animation/data/PT_Teddy_0004.gif +0 -0
  495. data/samples/processing_app/topics/animation/data/PT_Teddy_0005.gif +0 -0
  496. data/samples/processing_app/topics/animation/data/PT_Teddy_0006.gif +0 -0
  497. data/samples/processing_app/topics/animation/data/PT_Teddy_0007.gif +0 -0
  498. data/samples/processing_app/topics/animation/data/PT_Teddy_0008.gif +0 -0
  499. data/samples/processing_app/topics/animation/data/PT_Teddy_0009.gif +0 -0
  500. data/samples/processing_app/topics/animation/data/PT_Teddy_0010.gif +0 -0
  501. data/samples/processing_app/topics/animation/data/PT_Teddy_0011.gif +0 -0
  502. data/samples/processing_app/topics/animation/data/PT_Teddy_0012.gif +0 -0
  503. data/samples/processing_app/topics/animation/data/PT_Teddy_0013.gif +0 -0
  504. data/samples/processing_app/topics/animation/data/PT_Teddy_0014.gif +0 -0
  505. data/samples/processing_app/topics/animation/data/PT_Teddy_0015.gif +0 -0
  506. data/samples/processing_app/topics/animation/data/PT_Teddy_0016.gif +0 -0
  507. data/samples/processing_app/topics/animation/data/PT_Teddy_0017.gif +0 -0
  508. data/samples/processing_app/topics/animation/data/PT_Teddy_0018.gif +0 -0
  509. data/samples/processing_app/topics/animation/data/PT_Teddy_0019.gif +0 -0
  510. data/samples/processing_app/topics/animation/data/PT_Teddy_0020.gif +0 -0
  511. data/samples/processing_app/topics/animation/data/PT_Teddy_0021.gif +0 -0
  512. data/samples/processing_app/topics/animation/data/PT_Teddy_0022.gif +0 -0
  513. data/samples/processing_app/topics/animation/data/PT_Teddy_0023.gif +0 -0
  514. data/samples/processing_app/topics/animation/data/PT_Teddy_0024.gif +0 -0
  515. data/samples/processing_app/topics/animation/data/PT_Teddy_0025.gif +0 -0
  516. data/samples/processing_app/topics/animation/data/PT_Teddy_0026.gif +0 -0
  517. data/samples/processing_app/topics/animation/data/PT_Teddy_0027.gif +0 -0
  518. data/samples/processing_app/topics/animation/data/PT_Teddy_0028.gif +0 -0
  519. data/samples/processing_app/topics/animation/data/PT_Teddy_0029.gif +0 -0
  520. data/samples/processing_app/topics/animation/data/PT_Teddy_0030.gif +0 -0
  521. data/samples/processing_app/topics/animation/data/PT_Teddy_0031.gif +0 -0
  522. data/samples/processing_app/topics/animation/data/PT_Teddy_0032.gif +0 -0
  523. data/samples/processing_app/topics/animation/data/PT_Teddy_0033.gif +0 -0
  524. data/samples/processing_app/topics/animation/data/PT_Teddy_0034.gif +0 -0
  525. data/samples/processing_app/topics/animation/data/PT_Teddy_0035.gif +0 -0
  526. data/samples/processing_app/topics/animation/data/PT_Teddy_0036.gif +0 -0
  527. data/samples/processing_app/topics/animation/data/PT_Teddy_0037.gif +0 -0
  528. data/samples/processing_app/topics/animation/data/PT_Teddy_0038.gif +0 -0
  529. data/samples/processing_app/topics/animation/data/PT_Teddy_0039.gif +0 -0
  530. data/samples/processing_app/topics/animation/data/PT_Teddy_0040.gif +0 -0
  531. data/samples/processing_app/topics/animation/data/PT_Teddy_0041.gif +0 -0
  532. data/samples/processing_app/topics/animation/data/PT_Teddy_0042.gif +0 -0
  533. data/samples/processing_app/topics/animation/data/PT_Teddy_0043.gif +0 -0
  534. data/samples/processing_app/topics/animation/data/PT_Teddy_0044.gif +0 -0
  535. data/samples/processing_app/topics/animation/data/PT_Teddy_0045.gif +0 -0
  536. data/samples/processing_app/topics/animation/data/PT_Teddy_0046.gif +0 -0
  537. data/samples/processing_app/topics/animation/data/PT_Teddy_0047.gif +0 -0
  538. data/samples/processing_app/topics/animation/data/PT_Teddy_0048.gif +0 -0
  539. data/samples/processing_app/topics/animation/data/PT_Teddy_0049.gif +0 -0
  540. data/samples/processing_app/topics/animation/data/PT_Teddy_0050.gif +0 -0
  541. data/samples/processing_app/topics/animation/data/PT_Teddy_0051.gif +0 -0
  542. data/samples/processing_app/topics/animation/data/PT_Teddy_0052.gif +0 -0
  543. data/samples/processing_app/topics/animation/data/PT_Teddy_0053.gif +0 -0
  544. data/samples/processing_app/topics/animation/data/PT_Teddy_0054.gif +0 -0
  545. data/samples/processing_app/topics/animation/data/PT_Teddy_0055.gif +0 -0
  546. data/samples/processing_app/topics/animation/data/PT_Teddy_0056.gif +0 -0
  547. data/samples/processing_app/topics/animation/data/PT_Teddy_0057.gif +0 -0
  548. data/samples/processing_app/topics/animation/data/PT_Teddy_0058.gif +0 -0
  549. data/samples/processing_app/topics/animation/data/PT_Teddy_0059.gif +0 -0
  550. data/samples/processing_app/topics/animation/data/PT_anim0000.gif +0 -0
  551. data/samples/processing_app/topics/animation/data/PT_anim0001.gif +0 -0
  552. data/samples/processing_app/topics/animation/data/PT_anim0002.gif +0 -0
  553. data/samples/processing_app/topics/animation/data/PT_anim0003.gif +0 -0
  554. data/samples/processing_app/topics/animation/data/PT_anim0004.gif +0 -0
  555. data/samples/processing_app/topics/animation/data/PT_anim0005.gif +0 -0
  556. data/samples/processing_app/topics/animation/data/PT_anim0006.gif +0 -0
  557. data/samples/processing_app/topics/animation/data/PT_anim0007.gif +0 -0
  558. data/samples/processing_app/topics/animation/data/PT_anim0008.gif +0 -0
  559. data/samples/processing_app/topics/animation/data/PT_anim0009.gif +0 -0
  560. data/samples/processing_app/topics/animation/data/PT_anim0010.gif +0 -0
  561. data/samples/processing_app/topics/animation/data/PT_anim0011.gif +0 -0
  562. data/samples/processing_app/topics/animation/sequential.rb +42 -0
  563. data/samples/processing_app/topics/cellular_automata/game_of_life.rb +125 -0
  564. data/samples/processing_app/topics/cellular_automata/library/ca/ca.rb +91 -0
  565. data/samples/processing_app/topics/cellular_automata/library/cell/cell.rb +99 -0
  566. data/samples/processing_app/topics/cellular_automata/library/simple_cell/simple_cell.rb +46 -0
  567. data/samples/processing_app/topics/cellular_automata/spore1.rb +94 -0
  568. data/samples/processing_app/topics/cellular_automata/spore2.rb +101 -0
  569. data/samples/processing_app/topics/cellular_automata/wolfram.rb +42 -0
  570. data/samples/processing_app/topics/create_shapes/begin_end_contour.rb +44 -0
  571. data/samples/processing_app/topics/create_shapes/data/sprite.png +0 -0
  572. data/samples/processing_app/topics/create_shapes/group_pshape.rb +69 -0
  573. data/samples/processing_app/topics/create_shapes/library/particle/particle_system.rb +107 -0
  574. data/samples/processing_app/topics/create_shapes/library/polygon/polygon.rb +35 -0
  575. data/samples/processing_app/topics/create_shapes/library/star/star.rb +47 -0
  576. data/samples/processing_app/topics/create_shapes/library/wiggler/wiggler.rb +57 -0
  577. data/samples/processing_app/topics/create_shapes/particle_system_pshape.rb +38 -0
  578. data/samples/processing_app/topics/create_shapes/path_pshape.rb +38 -0
  579. data/samples/processing_app/topics/create_shapes/polygon_pshape_oo3.rb +56 -0
  580. data/samples/processing_app/topics/create_shapes/polygon_pshape_oop.rb +29 -0
  581. data/samples/processing_app/topics/create_shapes/polygon_pshape_oop2.rb +52 -0
  582. data/samples/processing_app/topics/create_shapes/polygon_shape.rb +42 -0
  583. data/samples/processing_app/topics/create_shapes/primitive_pshape.rb +29 -0
  584. data/samples/processing_app/topics/create_shapes/wiggle_pshape.rb +22 -0
  585. data/samples/processing_app/topics/drawing/continuous_lines.rb +17 -0
  586. data/samples/processing_app/topics/drawing/pattern.rb +30 -0
  587. data/samples/processing_app/topics/drawing/pulses.rb +33 -0
  588. data/samples/processing_app/topics/drawing/scribble_plotter.rb +77 -0
  589. data/samples/processing_app/topics/effects/lens.rb +68 -70
  590. data/samples/processing_app/topics/file_io/data/positions.txt +206 -0
  591. data/samples/processing_app/topics/file_io/load_file1.rb +32 -0
  592. data/samples/processing_app/topics/file_io/save_frames.rb +70 -0
  593. data/samples/processing_app/topics/file_io/save_one_image.rb +22 -0
  594. data/samples/processing_app/topics/file_io/tile_images.rb +37 -0
  595. data/samples/processing_app/topics/gui/button.rb +74 -0
  596. data/samples/processing_app/topics/gui/data/seedBottom.jpg +0 -0
  597. data/samples/processing_app/topics/gui/data/seedTop.jpg +0 -0
  598. data/samples/processing_app/topics/gui/handles.rb +108 -0
  599. data/samples/processing_app/topics/gui/rollover.rb +63 -0
  600. data/samples/processing_app/topics/gui/scrollbar.rb +96 -0
  601. data/samples/processing_app/topics/image_processing/blending.rb +82 -0
  602. data/samples/processing_app/topics/image_processing/blur.rb +50 -0
  603. data/samples/processing_app/topics/image_processing/brightness.rb +39 -0
  604. data/samples/processing_app/topics/image_processing/convolution.rb +72 -0
  605. data/samples/processing_app/{3D/image → topics/image_processing}/data/eames.jpg +0 -0
  606. data/samples/processing_app/topics/image_processing/data/frontier.jpg +0 -0
  607. data/samples/processing_app/topics/image_processing/data/java_args.txt +3 -0
  608. data/samples/processing_app/topics/image_processing/data/layer1.jpg +0 -0
  609. data/samples/processing_app/topics/image_processing/data/layer2.jpg +0 -0
  610. data/samples/processing_app/topics/image_processing/data/moon-wide.jpg +0 -0
  611. data/samples/processing_app/topics/image_processing/data/moon.jpg +0 -0
  612. data/samples/processing_app/topics/image_processing/data/sea.jpg +0 -0
  613. data/samples/processing_app/topics/image_processing/data/ystone08.jpg +0 -0
  614. data/samples/processing_app/topics/image_processing/edge_detection.rb +47 -0
  615. data/samples/processing_app/topics/image_processing/explode.rb +35 -0
  616. data/samples/processing_app/topics/image_processing/extrusion.rb +49 -0
  617. data/samples/processing_app/topics/image_processing/histogram.rb +43 -0
  618. data/samples/processing_app/topics/image_processing/linear_image.rb +45 -0
  619. data/samples/processing_app/topics/image_processing/pixel_array.rb +48 -0
  620. data/samples/processing_app/topics/image_processing/zoom.rb +66 -0
  621. data/samples/processing_app/topics/lsystems/chequer.rb +72 -0
  622. data/samples/processing_app/topics/lsystems/csplant.rb +100 -0
  623. data/samples/processing_app/topics/lsystems/cstest.rb +20 -0
  624. data/samples/processing_app/topics/lsystems/data/java_args.txt +3 -0
  625. data/samples/processing_app/topics/lsystems/david_tour.rb +77 -0
  626. data/samples/processing_app/topics/lsystems/koch.rb +29 -0
  627. data/samples/processing_app/topics/lsystems/library/cs_grammar/cs_grammar.rb +88 -0
  628. data/samples/processing_app/topics/lsystems/library/grammar/grammar.rb +33 -0
  629. data/samples/processing_app/topics/lsystems/library/koch/koch_fractal.rb +117 -0
  630. data/samples/processing_app/topics/lsystems/library/stochastic_grammar/stochastic_grammar.rb +58 -0
  631. data/samples/processing_app/topics/lsystems/mpeano.rb +83 -0
  632. data/samples/processing_app/topics/lsystems/peano.rb +78 -0
  633. data/samples/processing_app/topics/lsystems/penrose.rb +123 -0
  634. data/samples/processing_app/topics/lsystems/penrose_snowflake.rb +93 -0
  635. data/samples/processing_app/topics/lsystems/pentagonal.rb +103 -0
  636. data/samples/processing_app/topics/lsystems/snake_kolam.rb +93 -0
  637. data/samples/processing_app/topics/lsystems/stochastic_test.rb +99 -0
  638. data/samples/processing_app/topics/lsystems/three_d_tree.rb +108 -0
  639. data/samples/processing_app/topics/motion/bounce.rb +40 -0
  640. data/samples/processing_app/topics/motion/bouncy_bubbles.rb +96 -0
  641. data/samples/processing_app/topics/motion/brownian.rb +40 -0
  642. data/samples/processing_app/topics/motion/circle_collision.rb +185 -0
  643. data/samples/processing_app/topics/motion/cubes_in_cube.rb +64 -0
  644. data/samples/processing_app/topics/motion/data/java_args.txt +3 -0
  645. data/samples/processing_app/topics/motion/library/cube/cube.rb +128 -0
  646. data/samples/processing_app/topics/motion/library/ground/ground.rb +42 -0
  647. data/samples/processing_app/topics/motion/linear.rb +25 -0
  648. data/samples/processing_app/topics/motion/morph.rb +84 -0
  649. data/samples/processing_app/topics/motion/moving_on_curves.rb +46 -0
  650. data/samples/processing_app/topics/motion/puff.rb +78 -0
  651. data/samples/processing_app/topics/motion/reflection1.rb +107 -0
  652. data/samples/processing_app/topics/motion/reflection2.rb +122 -0
  653. data/samples/processing_app/topics/shaders/README +1 -0
  654. data/samples/processing_app/topics/shaders/blur_filter.rb +25 -0
  655. data/samples/processing_app/topics/shaders/bw_shader.rb +40 -0
  656. data/samples/processing_app/topics/shaders/conway.rb +26 -0
  657. data/samples/processing_app/topics/shaders/data/GlossyFrag.glsl +44 -0
  658. data/samples/processing_app/topics/shaders/data/GlossyVert.glsl +33 -0
  659. data/samples/processing_app/topics/shaders/data/Texture01.jpg +0 -0
  660. data/samples/processing_app/topics/shaders/data/Texture02.jpg +0 -0
  661. data/samples/processing_app/topics/shaders/data/ToonFrag.glsl +25 -0
  662. data/samples/processing_app/topics/shaders/data/ToonVert.glsl +31 -0
  663. data/samples/processing_app/topics/shaders/data/blur.glsl +42 -0
  664. data/samples/processing_app/topics/shaders/data/bwfrag.glsl +23 -0
  665. data/samples/processing_app/topics/shaders/data/conway.glsl +57 -0
  666. data/samples/processing_app/topics/shaders/data/cubemapfrag.glsl +1 -0
  667. data/samples/processing_app/topics/shaders/data/cubemapvert.glsl +1 -0
  668. data/samples/processing_app/topics/shaders/data/deform.glsl +31 -0
  669. data/samples/processing_app/topics/shaders/data/displaceFrag.glsl +8 -0
  670. data/samples/processing_app/topics/shaders/data/displaceVert.glsl +201 -0
  671. data/samples/processing_app/topics/shaders/data/edges.glsl +40 -0
  672. data/samples/processing_app/topics/shaders/data/java_args.txt +2 -0
  673. data/samples/processing_app/topics/shaders/data/lachoy.jpg +0 -0
  674. data/samples/processing_app/topics/shaders/data/landscape.glsl +352 -0
  675. data/samples/processing_app/topics/shaders/data/leaves.jpg +0 -0
  676. data/samples/processing_app/topics/shaders/data/mask.glsl +19 -0
  677. data/samples/processing_app/topics/shaders/data/monjori.glsl +30 -0
  678. data/samples/processing_app/topics/shaders/data/nebula.glsl +111 -0
  679. data/samples/processing_app/topics/shaders/data/sep_blur.glsl +59 -0
  680. data/samples/processing_app/topics/shaders/data/tex1.jpg +0 -0
  681. data/samples/processing_app/topics/shaders/deform.rb +28 -0
  682. data/samples/processing_app/topics/shaders/dome_projection.rb +143 -0
  683. data/samples/processing_app/topics/shaders/edge_detect.rb +30 -0
  684. data/samples/processing_app/topics/shaders/glossy_fish_eye.rb +63 -0
  685. data/samples/processing_app/topics/shaders/glsl_heightmap_noise.rb +122 -0
  686. data/samples/processing_app/topics/shaders/image_mask.rb +31 -0
  687. data/samples/processing_app/topics/shaders/landscape.rb +32 -0
  688. data/samples/processing_app/topics/shaders/monjori.rb +28 -0
  689. data/samples/processing_app/topics/shaders/nebula.rb +18 -0
  690. data/samples/processing_app/topics/shaders/sep_blur.rb +64 -0
  691. data/samples/processing_app/topics/shaders/toon_shading.rb +43 -0
  692. data/samples/processing_app/topics/simulate/README +1 -0
  693. data/samples/processing_app/topics/simulate/chain.rb +34 -38
  694. data/samples/processing_app/topics/simulate/data/java_args.txt +2 -0
  695. data/samples/processing_app/topics/simulate/data/texture.gif +0 -0
  696. data/samples/processing_app/topics/simulate/data/texture.png +0 -0
  697. data/samples/processing_app/topics/simulate/flocking.rb +32 -0
  698. data/samples/processing_app/topics/simulate/library/flock/flock.rb +206 -0
  699. data/samples/processing_app/topics/simulate/multiple_particle_systems.rb +122 -110
  700. data/samples/processing_app/topics/simulate/simple_particle_system.rb +63 -86
  701. data/samples/processing_app/topics/simulate/smoke_particle_system.rb +136 -0
  702. data/samples/processing_app/topics/simulate/spring.rb +65 -69
  703. data/samples/processing_app/topics/simulate/springs.rb +35 -36
  704. data/samples/processing_app/topics/vectors/acceleration_with_vectors.rb +77 -0
  705. data/samples/processing_app/topics/vectors/bouncing_ball.rb +49 -0
  706. data/samples/processing_app/topics/vectors/vector_math.rb +38 -0
  707. data/test/README.md +6 -0
  708. data/test/basic.rb +14 -0
  709. data/test/draw_ex.rb +12 -0
  710. data/test/graphics.rb +7 -0
  711. data/test/p2d.rb +14 -0
  712. data/test/p3d.rb +14 -0
  713. data/test/rp5_test.rb +77 -0
  714. data/test/setup_ex.rb +12 -0
  715. data/vendors/Rakefile +36 -0
  716. metadata +718 -231
  717. data/README +0 -64
  718. data/lib/core/core.jar +0 -0
  719. data/lib/core/jruby-complete.jar +0 -0
  720. data/lib/ruby-processing/exporters/applet_exporter.rb +0 -78
  721. data/lib/templates/applet/images/built_with.jpg +0 -0
  722. data/lib/templates/applet/images/ruby.jpg +0 -0
  723. data/lib/templates/applet/images/top.png +0 -0
  724. data/lib/templates/applet/index.html.erb +0 -113
  725. data/lib/templates/applet/library/library.txt +0 -1
  726. data/lib/templates/create/bare_sketch.rb.erb +0 -7
  727. data/library/dxf/library/dxf.jar +0 -0
  728. data/library/dxf/library/export.txt +0 -1
  729. data/library/javascript/library/export.txt +0 -8
  730. data/library/javascript/library/javascript.jar +0 -0
  731. data/library/minim/library/export.txt +0 -1
  732. data/library/minim/library/jl1.0.jar +0 -0
  733. data/library/minim/library/jsminim.jar +0 -0
  734. data/library/minim/library/minim-spi.jar +0 -0
  735. data/library/minim/library/minim.jar +0 -0
  736. data/library/minim/library/mp3spi1.9.4.jar +0 -0
  737. data/library/minim/library/tritonus_aos.jar +0 -0
  738. data/library/minim/library/tritonus_share.jar +0 -0
  739. data/library/net/library/export.txt +0 -1
  740. data/library/net/library/net.jar +0 -0
  741. data/library/opengl/library/export.txt +0 -10
  742. data/library/opengl/library/gluegen-rt.jar +0 -0
  743. data/library/opengl/library/jogl.jar +0 -0
  744. data/library/opengl/library/linux32/libgluegen-rt.so +0 -0
  745. data/library/opengl/library/linux32/libjogl.so +0 -0
  746. data/library/opengl/library/linux32/libjogl_awt.so +0 -0
  747. data/library/opengl/library/linux32/libjogl_cg.so +0 -0
  748. data/library/opengl/library/linux64/libgluegen-rt.so +0 -0
  749. data/library/opengl/library/linux64/libjogl.so +0 -0
  750. data/library/opengl/library/linux64/libjogl_awt.so +0 -0
  751. data/library/opengl/library/linux64/libjogl_cg.so +0 -0
  752. data/library/opengl/library/macosx/libgluegen-rt.jnilib +0 -0
  753. data/library/opengl/library/macosx/libjogl.jnilib +0 -0
  754. data/library/opengl/library/macosx/libjogl_awt.jnilib +0 -0
  755. data/library/opengl/library/macosx/libjogl_cg.jnilib +0 -0
  756. data/library/opengl/library/opengl.jar +0 -0
  757. data/library/opengl/library/windows32/gluegen-rt.dll +0 -0
  758. data/library/opengl/library/windows32/jogl.dll +0 -0
  759. data/library/opengl/library/windows32/jogl_awt.dll +0 -0
  760. data/library/opengl/library/windows32/jogl_cg.dll +0 -0
  761. data/library/opengl/library/windows64/gluegen-rt.dll +0 -0
  762. data/library/opengl/library/windows64/jogl.dll +0 -0
  763. data/library/opengl/library/windows64/jogl_awt.dll +0 -0
  764. data/library/opengl/library/windows64/jogl_cg.dll +0 -0
  765. data/library/pdf/library/export.txt +0 -1
  766. data/library/pdf/library/itext.jar +0 -0
  767. data/library/pdf/library/pdf.jar +0 -0
  768. data/library/serial/library/RXTXcomm.jar +0 -0
  769. data/library/serial/library/export.txt +0 -1
  770. data/library/serial/library/linux32/librxtxSerial.so +0 -0
  771. data/library/serial/library/linux64/librxtxSerial.so +0 -0
  772. data/library/serial/library/macosx/librxtxSerial.jnilib +0 -0
  773. data/library/serial/library/serial.jar +0 -0
  774. data/library/serial/library/windows32/rxtxSerial.dll +0 -0
  775. data/library/serial/library/windows64/rxtxSerial.dll +0 -0
  776. data/library/video/library/export.txt +0 -1
  777. data/library/video/library/video.jar +0 -0
  778. data/samples/anar/data/java_args.txt +0 -1
  779. data/samples/anar/extrusion.rb +0 -49
  780. data/samples/anar/l_system.rb +0 -86
  781. data/samples/anar/library/anar/anar.jar +0 -0
  782. data/samples/anar/many_shapes.rb +0 -98
  783. data/samples/peasy_cam/data/java_args.txt +0 -1
  784. data/samples/peasy_cam/hilbert_fractal.rb +0 -40
  785. data/samples/peasy_cam/library/PeasyCam/PeasyCam.jar +0 -0
  786. data/samples/processing_app/3D/camera/move_eye.rb +0 -29
  787. data/samples/processing_app/3D/camera/ortho_vs_perspective.rb +0 -38
  788. data/samples/processing_app/3D/form/brick_tower.rb +0 -86
  789. data/samples/processing_app/3D/form/cubic_grid.rb +0 -51
  790. data/samples/processing_app/3D/form/rgb_cube.rb +0 -88
  791. data/samples/processing_app/3D/form/shape_transform.rb +0 -94
  792. data/samples/processing_app/3D/form/toroid.rb +0 -130
  793. data/samples/processing_app/3D/form/vertices.rb +0 -81
  794. data/samples/processing_app/3D/image/explode.rb +0 -56
  795. data/samples/processing_app/3D/image/extrusion.rb +0 -49
  796. data/samples/processing_app/3D/image/zoom.rb +0 -83
  797. data/samples/processing_app/3D/lights/directional.rb +0 -41
  798. data/samples/processing_app/3D/lights/lights1.rb +0 -39
  799. data/samples/processing_app/3D/lights/lights2.rb +0 -42
  800. data/samples/processing_app/3D/lights/reflection.rb +0 -38
  801. data/samples/processing_app/3D/lights/spot.rb +0 -39
  802. data/samples/processing_app/3D/textures/texture1.rb +0 -41
  803. data/samples/processing_app/3D/textures/texture2.rb +0 -38
  804. data/samples/processing_app/3D/textures/texture3.rb +0 -68
  805. data/samples/processing_app/3D/textures/texture_cube.rb +0 -106
  806. data/samples/processing_app/3D/transform/bird.rb +0 -61
  807. data/samples/processing_app/3D/transform/birds/birds.rb +0 -48
  808. data/samples/processing_app/3D/transform/cubes_in_cube/cubes_in_cube.rb +0 -102
  809. data/samples/processing_app/3D/transform/push_pop_cubes.rb +0 -152
  810. data/samples/processing_app/3D/transform/rotate1.rb +0 -43
  811. data/samples/processing_app/3D/transform/rotate2.rb +0 -45
  812. data/samples/processing_app/3D/typography/data/Univers66.vlw.gz +0 -0
  813. data/samples/processing_app/3D/typography/letter_k.rb +0 -136
  814. data/samples/processing_app/3D/typography/typing.rb +0 -77
  815. data/samples/processing_app/basics/data/characters_strings/characters_strings.rb +0 -85
  816. data/samples/processing_app/basics/data/characters_strings/data/Eureka-90.vlw +0 -0
  817. data/samples/processing_app/basics/data/characters_strings/data/rathausFrog.jpg +0 -0
  818. data/samples/processing_app/basics/input/keyboard_2.rb +0 -45
@@ -0,0 +1,79 @@
1
+ #
2
+ # <p>GrayScottImage uses the seedImage() method to use a bitmap as simulation seed.
3
+ # In this demo the image is re-applied every frame and the user can adjust the
4
+ # F coefficient of the reaction diffusion to produce different patterns emerging
5
+ # from the boundary of the bitmapped seed. Unlike some other GS demos provided,
6
+ # this one also uses a wrapped simulation space, creating tiled patterns.</p>
7
+ #
8
+ # <p><strong>usage:</strong></p>
9
+ # <ul>
10
+ # <li>click + drag mouse to locally disturb the simulation</li>
11
+ # <li>press 1-9 to adjust the F parameter of the simulation</li>
12
+ # <li>press any other key to reset</li>
13
+ # </ul>
14
+ #
15
+
16
+ #
17
+ # Copyright (c) 2010 Karsten Schmidt
18
+ #
19
+ # This demo & library is free software you can redistribute it and/or
20
+ # modify it under the terms of the GNU Lesser General Public
21
+ # License as published by the Free Software Foundation either
22
+ # version 2.1 of the License, or (at your option) any later version.
23
+ #
24
+ # http:#creativecommons.org/licenses/LGPL/2.1/
25
+ #
26
+ # This library is distributed in the hope that it will be useful,
27
+ # but WITHOUT ANY WARRANTY without even the implied warranty of
28
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
29
+ # Lesser General Public License for more details.
30
+ #
31
+ # You should have received a copy of the GNU Lesser General Public
32
+ # License along with this library if not, write to the Free Software
33
+ # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
34
+ #
35
+
36
+ load_libraries 'simutils','toxiclibscore','colorutils'
37
+
38
+ module Toxi
39
+ include_package "toxi.sim.grayscott"
40
+ include_package "toxi.math"
41
+ include_package "toxi.color"
42
+ end
43
+
44
+ attr_reader :gs, :tone_map, :img
45
+
46
+ def setup
47
+ size 256, 256
48
+ @gs = Toxi::GrayScott.new width, height, true
49
+ @img = load_image "ti_yong.png"
50
+ # create a duo-tone gradient map with 256 steps
51
+ # NB: use '::' in place of '.' here for these java constants
52
+ @tone_map = Toxi::ToneMap.new(0, 0.33, Toxi::NamedColor::CRIMSON, Toxi::NamedColor::WHITE, 256)
53
+ end
54
+
55
+ def draw
56
+ @gs.seed_image(img.pixels, img.width, img.height)
57
+ @gs.set_rect(mouse_x, mouse_y, 20, 20) if mouse_pressed?
58
+ load_pixels
59
+ 10.times { @gs.update(1) }
60
+ # read out the V result array
61
+ # and use tone map to render colours
62
+ gs.v.length.times do |i|
63
+ pixels[i]=tone_map.getARGBToneFor(gs.v[i]) # NB: don't camel case convert here
64
+ end
65
+ update_pixels
66
+ end
67
+
68
+ def key_pressed
69
+ case key
70
+ when '1', '9', '3', '2', '4', '6', '5', '7', '8'
71
+ @gs.setF(0.02 + (key.ord - 48) * 0.001)
72
+ when 's'
73
+ save_frame "toxi.png"
74
+ else
75
+ @gs.reset()
76
+ end
77
+ end
78
+
79
+
@@ -0,0 +1,78 @@
1
+ #
2
+ # <p>GrayScottToneMap shows how to use the ColorGradient & ToneMap classes of the
3
+ # colorutils package to create a tone map for rendering the results of
4
+ # the Gray-Scott reaction-diffusion.</p>
5
+ #
6
+ # <p><strong>Usage:</strong><ul>
7
+ # <li>click + drag mouse to draw dots used as simulation seed</li>
8
+ # <li>press any key to reset</li>
9
+ # </ul></p>
10
+ #
11
+
12
+ #
13
+ # Copyright (c) 2010 Karsten Schmidt
14
+ #
15
+ # This demo & library is free software you can redistribute it and/or
16
+ # modify it under the terms of the GNU Lesser General Public
17
+ # License as published by the Free Software Foundation either
18
+ # version 2.1 of the License, or (at your option) any later version.
19
+ #
20
+ # http://creativecommons.org/licenses/LGPL/2.1/
21
+ #
22
+ # This library is distributed in the hope that it will be useful,
23
+ # but WITHOUT ANY WARRANTY without even the implied warranty of
24
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
25
+ # Lesser General Public License for more details.
26
+ #
27
+ # You should have received a copy of the GNU Lesser General Public
28
+ # License along with this library if not, write to the Free Software
29
+ # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
30
+ #
31
+
32
+ load_libraries 'simutils','toxiclibscore','colorutils'
33
+ include_package "toxi.sim.grayscott"
34
+ include_package "toxi.math"
35
+ include_package "toxi.color"
36
+
37
+ NUM_ITERATIONS = 10
38
+
39
+ attr_reader :gs, :tone_map
40
+
41
+ def setup
42
+ size(256,256)
43
+ @gs= GrayScott.new width,height, false
44
+ @gs.set_coefficients 0.021, 0.076, 0.12, 0.06
45
+ # create a color gradient for 256 values
46
+ grad = ColorGradient.new
47
+ # NamedColors are preset colors, but any TColor can be added
48
+ # see javadocs for list of names:
49
+ # http://toxiclibs.org/docs/colorutils/toxi/color/NamedColor::html
50
+ # NB: use '::' in place of '.' here for these java constants
51
+ grad.add_color_at(0, NamedColor::BLACK)
52
+ grad.add_color_at(128, NamedColor::RED)
53
+ grad.add_color_at(192, NamedColor::YELLOW)
54
+ grad.add_color_at(255, NamedColor::WHITE)
55
+ # this gradient is used to map simulation values to colors
56
+ # the first 2 parameters define the min/max values of the
57
+ # input range (Gray-Scott produces values in the interval of 0.0 - 0.5)
58
+ # setting the max = 0.33 increases the contrast
59
+ @tone_map = ToneMap.new 0, 0.33, grad
60
+ end
61
+
62
+ def draw
63
+ @gs.set_rect(mouse_x, mouse_y, 20, 20) if mouse_pressed?
64
+ load_pixels
65
+ # update the simulation a few time steps
66
+ NUM_ITERATIONS.times { @gs.update(1) }
67
+ # read out the V result array
68
+ # and use tone map to render colours
69
+ gs.v.length.times do |i|
70
+ pixels[i]=tone_map.getARGBToneFor(gs.v[i]) # NB: don't camel case convert here
71
+ end
72
+ update_pixels
73
+ end
74
+
75
+ def key_pressed
76
+ @gs.reset()
77
+ end
78
+
@@ -0,0 +1,143 @@
1
+
2
+ #
3
+ # This example implements a custom VolumetricSpace using an implicit function
4
+ # to calculate each voxel. This is slower than the default array or HashMap
5
+ # based implementations, but also has much less memory requirements and so might
6
+ # be an interesting and more viable approach for very highres voxel spaces
7
+ # (e.g. >32 million voxels). This implementation here also demonstrates how to
8
+ # achieve an upper boundary on the iso value (in addition to the one given and
9
+ # acting as lower threshold when computing the iso surface)
10
+ #
11
+ # Usage:
12
+ # move mouse to rotate camera
13
+ # -/=: zoom in/out
14
+ # l: apply laplacian mesh smooth
15
+ #
16
+ #
17
+
18
+ #
19
+ # Copyright (c) 2010 Karsten Schmidt & ruby-processing version Martin Prout 2013
20
+ # This sketch relies on a custom ruby-processing mesh_to_vbo library
21
+ #
22
+ # This library is free software you can redistribute it and/or
23
+ # modify it under the terms of the GNU Lesser General Public
24
+ # License as published by the Free Software Foundation either
25
+ # version 2.1 of the License, or (at your option) any later version.
26
+ #
27
+ # http://creativecommons.org/licenses/LGPL/2.1/
28
+ #
29
+ # This library is distributed in the hope that it will be useful,
30
+ # but WITHOUT ANY WARRANTY without even the implied warranty of
31
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
32
+ # Lesser General Public License for more details.
33
+ #
34
+ # You should have received a copy of the GNU Lesser General Public
35
+ # License along with this library if not, write to the Free Software
36
+ # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
37
+ #
38
+
39
+ load_libraries 'toxiclibscore', 'vbo', 'volumeutils'
40
+
41
+ module Toxi
42
+ include_package 'toxi.geom'
43
+ include_package 'toxi.geom.mesh'
44
+ include_package 'toxi.volume'
45
+ include_package 'toxi.processing'
46
+ end
47
+
48
+ RES = 64
49
+ ISO = 0.2
50
+ MAX_ISO = 0.66
51
+
52
+ attr_reader :mesh, :vbo, :curr_zoom, :implicit
53
+
54
+ def setup
55
+ size(720,720, P3D)
56
+ @vbo = MeshToVBO.new(self)
57
+ @curr_zoom = 1
58
+ vol = EvaluatingVolume.new(Toxi::Vec3D.new(400,400,400), RES, RES, RES, MAX_ISO)
59
+ surface = Toxi::HashIsoSurface.new(vol)
60
+ @mesh = Toxi::WETriangleMesh.new
61
+ surface.compute_surface_mesh(mesh, ISO)
62
+ @is_wire_frame = false
63
+ no_stroke
64
+ @implicit = vbo.meshToVBO(mesh, true)
65
+ implicit.setFill(color(222, 222, 222))
66
+ implicit.setAmbient(color(50, 50, 50))
67
+ implicit.setShininess(color(10, 10, 10))
68
+ implicit.setSpecular(color(50, 50, 50))
69
+ end
70
+
71
+ def draw
72
+ background(0)
73
+ lights
74
+ define_lights
75
+ translate(width / 2.0, height / 2.0, 0)
76
+ rotate_x(mouse_y * -0.01)
77
+ rotate_y(mouse_x * -0.01)
78
+ scale(curr_zoom)
79
+ shape(implicit)
80
+ end
81
+
82
+ def key_pressed
83
+ case key
84
+ when '-'
85
+ @curr_zoom -= 0.1
86
+ when '='
87
+ @curr_zoom += 0.1
88
+ when 'l', 'L'
89
+ Toxi::LaplacianSmooth.new.filter(mesh, 1)
90
+ @implicit = vbo.meshToVBO(mesh, true)
91
+ # new mesh so need to set finish
92
+ implicit.setFill(color(222, 222, 222))
93
+ implicit.setAmbient(color(50, 50, 50))
94
+ implicit.setShininess(color(10, 10, 10))
95
+ implicit.setSpecular(color(50, 50, 50))
96
+ when 's', 'S'
97
+ save_frame("implicit.png")
98
+ end
99
+ end
100
+
101
+ def define_lights
102
+ ambient_light(50, 50, 50)
103
+ point_light(30, 30, 30, 200, -150, 0)
104
+ directional_light(0, 30, 50, 1, 0, 0)
105
+ spot_light(30, 30, 30, 0, 40, 200, 0, -0.5, -0.5, PI / 2, 2)
106
+ end
107
+
108
+ class EvaluatingVolume < Toxi::VolumetricSpace
109
+ include Processing::Proxy
110
+ java_import 'toxi.math.SinCosLUT'
111
+
112
+ attr_reader :upper_bound, :lut
113
+ FREQ = PI * 3.8
114
+
115
+ def initialize(scal_vec, resX, resY, resZ, upper_limit)
116
+ super(scal_vec, resX, resY, resZ)
117
+ @upper_bound = upper_limit
118
+ @lut=SinCosLUT.new
119
+ end
120
+
121
+ def clear
122
+ # nothing to do here
123
+ end
124
+
125
+ def getVoxelAt(i)
126
+ getVoxel(i % resX, (i % sliceRes) / resX, i / sliceRes)
127
+ end
128
+
129
+ def getVoxel(x, y, z) # can't overload so we renamed
130
+ val = 0
131
+ if (x > 0 && x < resX1 && y > 0 && y < resY1 && z > 0 && z < resZ1)
132
+ xx = x * 1.0 / resX - 0.5 # NB: careful about integer division !!!
133
+ yy = y * 1.0 / resY - 0.5
134
+ zz = z * 1.0 / resZ - 0.5
135
+ #val = lut.sin(xx * FREQ) + lut.cos(yy * FREQ) + lut.sin(zz * FREQ)
136
+ val = lut.cos(xx * FREQ) * lut.sin(yy* FREQ) + lut.cos(yy* FREQ) * lut.sin(zz* FREQ) + lut.cos(zz* FREQ)* lut.sin(xx* FREQ)
137
+ if (val > upper_bound)
138
+ val = 0
139
+ end
140
+ end
141
+ return val
142
+ end
143
+ end
@@ -0,0 +1,52 @@
1
+ ############################################
2
+ # mesh_to_vbo.rb
3
+ # a ruby library to convert toxi.mesh object
4
+ # to vbo (PShape) written by Martin Prout
5
+ # make use of Processing::Proxy mixin
6
+ ############################################
7
+ class MeshToVBO
8
+ include Processing::Proxy
9
+
10
+ attr_reader :parent
11
+
12
+ def initialize(parent)
13
+ @parent = parent
14
+ end
15
+
16
+ def meshToVBO(mesh, smth)
17
+ retained = parent.createShape()
18
+ retained.begin_shape(PShape::TRIANGLES)
19
+ if (smth)
20
+ mesh.computeVertexNormals()
21
+ mesh.getFaces.each do |f|
22
+ retained.normal(f.a.normal.x, f.a.normal.y, f.a.normal.z)
23
+ retained.vertex(f.a.x, f.a.y, f.a.z)
24
+ retained.normal(f.b.normal.x, f.b.normal.y, f.b.normal.z)
25
+ retained.vertex(f.b.x, f.b.y, f.b.z)
26
+ retained.normal(f.c.normal.x, f.c.normal.y, f.c.normal.z)
27
+ retained.vertex(f.c.x, f.c.y, f.c.z)
28
+ end
29
+ else
30
+ mesh.getFaces.each do |f|
31
+ retained.normal(f.normal.x, f.normal.y, f.normal.z)
32
+ retained.vertex(f.a.x, f.a.y, f.a.z)
33
+ retained.vertex(f.b.x, f.b.y, f.b.z)
34
+ retained.vertex(f.c.x, f.c.y, f.c.z)
35
+ end
36
+ end
37
+ retained.end_shape()
38
+ return retained
39
+ end
40
+
41
+ # variant
42
+ # input array of meshes, output an array of shapes
43
+ def meshToRetained(mesh, smth)
44
+ rshapes = []
45
+ (0 ... mesh.length).each do |i|
46
+ rshapes.push(meshToVBO(mesh[i], smth))
47
+ end
48
+ return rshapes
49
+ end
50
+ end
51
+
52
+
@@ -0,0 +1,55 @@
1
+ # This example demonstrates how to rotate a number of meshes
2
+ # so that each points towards a common & user controlled focal point.
3
+ #
4
+ # Requires toxiclibs-0020 or newer
5
+ #
6
+ # (c) 2012 Karsten Schmidt / LGPL2 licensed
7
+ #
8
+ load_libraries 'toxiclibscore', 'toxiclibs_p5', 'colorutils'
9
+
10
+ module Toxi
11
+ include_package 'toxi.geom'
12
+ include_package 'toxi.geom.mesh'
13
+ include_package 'toxi.processing'
14
+ end
15
+
16
+ # container for mesh positions
17
+
18
+ attr_reader :gfx, :positions
19
+
20
+ def setup
21
+ size(640,480,P3D)
22
+ @gfx = Toxi::ToxiclibsSupport.new(self)
23
+ @positions = []
24
+ # compute mesh positions on circle in XZ plane
25
+ (Toxi::Circle.new(200).toPolygon2D(8)).each do |p|
26
+ positions << p.to3DXZ
27
+ end
28
+ end
29
+
30
+ def draw
31
+ background(51)
32
+ lights
33
+ no_stroke
34
+ translate(width/2,height/2,0)
35
+ rotate_x(-PI/6)
36
+ # create manual focal point in XY plane
37
+ focus = Toxi::Vec3D.new((mouse_x - width/2), (mouse_y - height/2), 0)
38
+ # create mesh prototype to draw at all generated positions
39
+ # the mesh is a simple box placed at the world origin
40
+ m = Toxi::AABB.new(25).to_mesh
41
+ # draw focus
42
+ gfx.box(Toxi::AABB.new(focus, 5))
43
+ positions.each do |p|
44
+ # align the positive z-axis of mesh to point at focus
45
+ # mesh needs to be located at world origin for it to work correctly
46
+ # only once rotated, move it to actual position
47
+ gfx.mesh(m.copy.pointTowards(focus.sub(p), Toxi::Vec3D::Z_AXIS).translate(p))
48
+ end
49
+ # draw connections from mesh centers to focal point
50
+ stroke(0,255,255)
51
+ positions.each do |p|
52
+ gfx.line(p, focus)
53
+ end
54
+ end
55
+
@@ -0,0 +1,12 @@
1
+ The absolute belt and brace way to use external ruby libraries ie gems:
2
+
3
+ 1. Install ruby-processing using jruby
4
+ jruby -S gem install ruby-processing (or from a local gem currently)
5
+ 2. Install any required rubygems the same way
6
+ 3. "require" the library in your sketch
7
+ 4. Run ruby-processing starting from jruby
8
+ jruby -S rp5 run sketch.rb
9
+
10
+ See worked perlin_force and mdarray_test in this folder
11
+ NB: library will need to work with jruby this excludes most native libraries
12
+ but pure ruby libraries (+java) should be fine
@@ -0,0 +1 @@
1
+ The java_args.txt is used to send command line args to jvm/jruby....
@@ -0,0 +1,2 @@
1
+ -XX:+OptimizeStringConcat -XX:CompileCommand=dontinline,org.jruby.runtime.invokedynamic.InvokeDynamicSupport::invocationFallback
2
+
@@ -0,0 +1,127 @@
1
+ # game_of_life.rb featuring MDArray in ruby-processing
2
+ # A Processing implementation of Game of Life
3
+ # By Joan Soler-Adillon
4
+ #
5
+ # Press SPACE BAR to pause and change the cell's values with the mouse
6
+ # On pause, click to activate/deactivate cells
7
+ # Press R to randomly reset the cells' grid
8
+ # Press C to clear the cells' grid
9
+ #
10
+ # The original Game of Life was created by John Conway in 1970.
11
+ #
12
+
13
+ require 'mdarray'
14
+
15
+ CELL_SIZE = 5
16
+ ALIVE = true
17
+ DEAD = false
18
+ ALIVE_START = 150
19
+ WIDTH = 960
20
+ HEIGHT = 640
21
+ SKIP = 10
22
+ INTERVAL = 100
23
+
24
+ attr_reader :pause, :cells, :row, :column, :last_time, :alive, :cells_buffer
25
+
26
+ def setup
27
+ size WIDTH, HEIGHT
28
+ @row = WIDTH / CELL_SIZE
29
+ @column = HEIGHT / CELL_SIZE
30
+ background 0
31
+ stroke_weight 2
32
+ @last_time = 0
33
+ @pause = false
34
+ @cells = MDArray.boolean([row, column], random_data)
35
+ @alive = color(100, 255, 100)
36
+ stroke(48, 100)
37
+ no_smooth
38
+ end
39
+
40
+ def draw
41
+ background(0)
42
+ #Draw live cells
43
+ (0 ... row).each do |x|
44
+ (0 ... column).each do |y|
45
+ if (cells.get([x, y]))
46
+ fill(alive)
47
+ rect(x * CELL_SIZE, y * CELL_SIZE, CELL_SIZE, CELL_SIZE)
48
+ end
49
+ end
50
+ end
51
+ # Iterate if timer ticks
52
+ if (millis - last_time > INTERVAL)
53
+ if (!pause)
54
+ tick!
55
+ @last_time = millis
56
+ end
57
+ end
58
+
59
+ # Create new cells manually on pause
60
+ if (pause && mouse_pressed?)
61
+ # # Map and avoid out of bound errors
62
+ x_cell_over = (map(mouse_x, 0, width, 0, row)).to_i
63
+ x_cell_over = constrain(x_cell_over, 0, row - 1)
64
+ y_cell_over = (map(mouse_y, 0, height, 0, column)).to_i
65
+ y_cell_over = constrain(y_cell_over, 0, column - 1)
66
+
67
+ # Check against cells in buffer
68
+ if (cells_buffer.get([x_cell_over, y_cell_over])) # Cell is alive
69
+ cells.set([x_cell_over, y_cell_over], DEAD) # Kill
70
+ fill(0) #reflect changed status
71
+ else # Cell is dead
72
+ cells.set([x_cell_over, y_cell_over], ALIVE) # Make alive
73
+ fill(alive) # Fill alive color
74
+ end
75
+
76
+ elsif (pause && !mouse_pressed?) # And then save to buffer once mouse goes up
77
+ # Save cells to buffer (so we operate with one array keeping the other intact)
78
+ @cells_buffer = cells.copy
79
+ end
80
+ end
81
+
82
+ def tick! # When the clock ticks
83
+ # Save cells to buffer (so we operate with one array keeping the other intact)
84
+ @cells_buffer = cells.copy
85
+ # Visit each cell:
86
+ (0 ... row).each do |x|
87
+ (0 ... column).each do |y|
88
+ # And visit all the neighbours of each cell
89
+ neighbours = 0 # We'll count the neighbours
90
+ (x - 1 .. x + 1).each do |xx|
91
+ (y - 1 .. y + 1).each do |yy|
92
+ # Make sure you are not out of bounds
93
+ if [(xx>=0), (xx<row), (yy>=0), (yy<column)].all? {|in_bounds| in_bounds == true}
94
+ # Make sure to check against self
95
+ if ![(xx == x), (yy == y)].all? {|is_self| is_self == true}
96
+ if (cells_buffer.get([xx, yy])) # true == ALIVE
97
+ neighbours += 1 # Check alive neighbours and count them
98
+ end # alive
99
+ end # End of if self
100
+ end # End of if grid bounds
101
+ end # End of yy loop
102
+ end #End of xx loop
103
+ # We've checked the neighbours: apply rules in one line (only in ruby)!
104
+ cells.set([x, y], (cells_buffer.get([x, y]))? ((2 .. 3) === neighbours) : (neighbours == 3))
105
+ end # End of y loop
106
+ end # End of x loop
107
+ end # End of function
108
+
109
+ def key_pressed
110
+ case key
111
+ when 'r', 'R'
112
+ # Restart: reinitialization of cells
113
+ @cells = MDArray.boolean([row, column], random_data)
114
+ when ' ' # On/off of pause
115
+ @pause = !pause
116
+ when 'c', 'C' # Clear all
117
+ @cells = MDArray.boolean([row, column], DEAD)
118
+ end
119
+ end
120
+
121
+ def random_data
122
+ data = []
123
+ (0 ... row * column).each do
124
+ data << (rand(1000) < ALIVE_START)
125
+ end
126
+ return data
127
+ end