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
@@ -1,35 +0,0 @@
1
- ## Contributing
2
- In the spirit of [free software][free-sw], **everyone** is encouraged to help improve this project.
3
-
4
- Here are some ways *you* can contribute:
5
-
6
- * by reporting bugs
7
- * by suggesting/implementing new features ( _export to ruboto would be cool_ )
8
- * by writing or editing documentation ( _expert Windows users could help write install instructions_ )
9
- * by contributing examples ( _show your creativity, or translate someone elses masterpiece_ )
10
- * by refactoring examples to be more rubyfied
11
- * by closing [issues][]
12
- * by proselytizing ruby-processing, we need more champions
13
- * by supporting [Processing.org][], nothing to do with us but we rely on them
14
- * by figuring out if we could replace swing with javafx for control_panel etc
15
- * by testing / contributing to the [development branch][]
16
-
17
- ## Submitting an Issue
18
- We use the [GitHub issue tracker][issues] to track bugs and features. Before
19
- submitting a bug report or feature request, check to make sure it hasn't
20
- already been submitted. When submitting a bug report, ideally include a [Gist][]
21
- that includes a stack trace and any details that may be necessary to reproduce
22
- the bug, including your gem version, Ruby version, and operating system.
23
-
24
-
25
- ## Submitting a Pull Request
26
- 1. [Fork the repository.][fork]
27
- 2. [Submit a pull request.][pr]
28
-
29
- [free-sw]: http://www.fsf.org/licensing/essays/free-sw.html
30
- [issues]: https://github.com/rubygems/gems/issues
31
- [gist]: https://gist.github.com/
32
- [fork]: http://help.github.com/fork-a-repo/
33
- [pr]: http://help.github.com/send-pull-requests/
34
- [processing.org]: http://processing.org/foundation/
35
- [development branch]: https://github.com/monkstone/JRubyArt
data/Gemfile DELETED
@@ -1,6 +0,0 @@
1
- source 'https://rubygems.org'
2
-
3
- # Specify your gem's dependencies in ruby-processing.gemspec
4
- gemspec
5
-
6
-
data/LICENSE.md DELETED
@@ -1,39 +0,0 @@
1
- Ruby-Processing is released under the MIT License.
2
- You can do pretty much whatever you'd like with it.
3
-
4
- ___
5
-
6
- Copyright (c) 2008-2014 omygawshkenas
7
-
8
- Permission is hereby granted, free of charge,
9
- to any person obtaining a copy of this software
10
- and associated documentation files (the "Software"),
11
- to deal in the Software without restriction,
12
- including without limitation the rights to use,
13
- copy, modify, merge, publish, distribute, sublicense,
14
- and/or sell copies of the Software, and to permit
15
- persons to whom the Software is furnished to do so,
16
- subject to the following conditions:
17
-
18
- The above copyright notice and this permission
19
- notice shall be included in all copies or substantial
20
- portions of the Software.
21
-
22
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY
23
- OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT
24
- LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
25
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
26
- IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
27
- BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
28
- WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
29
- ARISING FROM, OUT OF OR IN CONNECTION WITH THE
30
- SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
31
-
32
- ___
33
-
34
- Ruby-Processing also distributes core components
35
- of both [JRuby][] and [Processing][] both of which are
36
- licensed under the GNU lesser public license
37
-
38
- [jruby]: http://www.jruby.org/
39
- [processing]: http://www.processing.org/
data/README.md DELETED
@@ -1,119 +0,0 @@
1
- # Ruby-Processing
2
- [![Gem Version](https://badge.fury.io/rb/ruby-processing.svg)](http://badge.fury.io/rb/ruby-processing)
3
-
4
- Is a ruby wrapper around the [Processing][] code art framework, built using [JRuby][].
5
-
6
- [Processing][] provides a tidy API, with a bunch of handy methods you can call
7
- from Ruby-Processing. Here's a smattering:
8
-
9
- alpha, arc, background, blend, blue, ellipse, frame_rate, hue, lerp,
10
- load_image, load_pixels, mouse_pressed, noise, rect, saturation, shape,
11
- smooth, text_align, translate, triangle...
12
-
13
- ## Installation
14
- MacOSX users please try out this new [method](https://github.com/jashkenas/ruby-processing/wiki/Installing-ruby-processing-on-the-mac)
15
-
16
- Ideally you should install [jruby](http://jruby.org/download), at the very least you will have at least ruby-1.9.3 installed. You should [download][] and install vanilla [processing-2.0.3](https://processing.org/download/) (MacOSX) or [processing-2.1.0](https://processing.org/download/) (Windows, Linux) prior to installing this version of ruby-processing. You must also set the `PROCESSING_ROOT` in the .rp5rc yaml configuration file, the easiest way to do this is by running the [SetProcessingRoot.pde](https://gist.github.com/monkstone/7438749) sketch in the processing ide.
17
-
18
- Then install ruby-processing (from rubygems-org) in the usual way
19
-
20
- `gem install ruby-processing` some systems eg Ubuntu may require `sudo` access
21
-
22
- To install jruby-complete use our built in tool (relies on `wget` to download [jruby-complete-1.7.11](http://jruby.org/download))
23
-
24
- `install_jruby_complete`
25
-
26
- If you haven't got `wget` just download jruby-complete-1.7.11 to the vendors folder (then run above tool)
27
-
28
- The vendored jruby-complete-1.7.11 is only required for application export, and running certain sketches (eg shader sketches see wiki).
29
-
30
-
31
- ## Documentation
32
-
33
- See [Wiki][]
34
-
35
- See also [FAQs][], [Contributing][] and [Samples][]
36
-
37
- # Usage Example
38
-
39
- ```bash
40
- rp5 run my_sketch.rb
41
- ```
42
-
43
- or if not using system jruby
44
-
45
- ```bash
46
- rp5 --nojruby run my_sketch.rb
47
- ```
48
-
49
- where a simple ``my_sketch.rb`` could look like this
50
-
51
- ```ruby
52
- def setup
53
- size 400, 400
54
- fill 255
55
- end
56
-
57
- def draw
58
- background 0
59
- ellipse mouse_x, mouse_y, 100, 100
60
- end
61
- ```
62
-
63
- or a simple 3D sketch ``cube.rb``
64
-
65
- ```ruby
66
- def setup
67
- size 640, 360, P3D
68
- @xmag = 0
69
- @ymag = 0
70
- @new_xmag = 0
71
- @new_ymag = 0
72
- fill 200, 50, 50
73
- end
74
-
75
- def draw
76
- background 100
77
- push_matrix
78
- translate width/2, height/2, -30
79
- @new_xmag = mouse_x.to_f / width * TWO_PI
80
- @new_ymag = mouse_y.to_f / height * TWO_PI
81
- diff = @xmag - @new_xmag
82
- @xmag -= diff / 4 if diff.abs > 0.01
83
- diff = @ymag - @new_ymag
84
- @ymag -= diff / 4 if diff.abs > 0.01
85
- rotate_x(-@ymag)
86
- rotate_y(-@xmag)
87
- box 150, 150, 150
88
- pop_matrix
89
- end
90
-
91
- ```
92
-
93
- ## Supported Ruby Version
94
-
95
- This library has been tested with the following ruby implementations
96
-
97
- * Ruby 1.9.3
98
- * Ruby 2.0.0
99
- * Ruby 2.1.0
100
- * [JRuby][] preferred (required to use rubygems in sketches)
101
-
102
- [License][]
103
-
104
- [license]:LICENSE.md
105
- [contributing]:CONTRIBUTING.md
106
- [jruby]:http://www.jruby.org/
107
- [processing]: http://www.processing.org/
108
- [download]:https://processing.org/download/
109
- [samples]:https://github.com/jashkenas/ruby-processing/tree/master/samples/
110
- [wiki]:http://github.com/jashkenas/ruby-processing/wikis/
111
- [FAQs]:http://github.com/jashkenas/ruby-processing/wikis/FAQs/
112
- [release]:https://github.com/jashkenas/ruby-processing/releases/
113
-
114
- ## What's new
115
-
116
- New capabilities since processing-2.0 include ability to use OPENGL VBO (PShape) and GLSL shaders (PShader), to keep abreast of latest shader developments for processing check out the [codeanticode blog](http://codeanticode.wordpress.com/2013/06/04/processing-2-0-is-out-processing-2-0-is-in/). Some worked examples using new feature are included in the samples. The update to the latest jruby is also significant as the default is to run with ruby-1.9 support (or even use ruby-2.0 syntax with `compat.version=2.0` in your `.jrubyrc` config), and there have been many performance improvements. Some performance improvements will not be available on the Mac as they require at least java-7+, and there is even more to come with java-8+ (adventurous Mac users can read more about [Oracle java here](http://www.java.com/en/download/faq/java_mac.xml) ). More than 330 worked examples are included in the [Samples][], many of which are rubified version of the examples included with vanilla processing, and or the contributed libraries, additions are welcome. In my experience ruby-processing works even better with the recently released jdk-8 (try `-XX:+TieredCompilation` option in java_args.txt). But please note you will not be able to use jdk-8 with vanilla-processing, at least for the forseeable future.
117
-
118
-
119
-
data/Rakefile DELETED
@@ -1,37 +0,0 @@
1
-
2
- desc 'build and test'
3
- task :default => [:build_and_test]
4
-
5
- task :build_and_test do
6
- Rake::Task["build"].execute
7
- Rake::Task["test"].execute
8
- end
9
-
10
- desc 'Build and install gem'
11
- task :install => :build do
12
- sh "gem install #{Dir.glob('*.gem').join(' ')} --no-ri --no-rdoc"
13
- end
14
-
15
- desc 'Uninstall gem'
16
- task :uninstall do
17
- sh "gem uninstall -x ruby-processing"
18
- end
19
-
20
- desc 'Install jruby-complete'
21
- task :install_jruby_complete do
22
- begin
23
- sh "cd vendors && rake"
24
- rescue
25
- warn("WARNING: you may not have wget installed")
26
- end
27
- end
28
-
29
- desc 'Build gem'
30
- task :build do
31
- sh "gem build ruby-processing.gemspec"
32
- end
33
-
34
- desc 'Test'
35
- task :test do
36
- ruby "test/rp5_test.rb"
37
- end
@@ -1,13 +0,0 @@
1
- #!/usr/bin/env ruby
2
-
3
- file = __FILE__
4
- if test(?l,file)
5
- require "pathname"
6
- file = Pathname.new(file).realpath
7
- end
8
-
9
- begin
10
- system "cd #{File.expand_path(File.dirname(file) +"/../vendors")} && rake"
11
- rescue
12
- warn("WARNING: you may not have wget installed, you could just copy jruby complete to vendors folder instead of installing wget")
13
- end
@@ -1,7 +0,0 @@
1
- def setup
2
-
3
- end
4
-
5
- def draw
6
-
7
- end
@@ -1,64 +0,0 @@
1
- require_relative 'vec'
2
- require_relative 'quaternion'
3
-
4
- class ArcBall
5
- attr_reader :center_x, :center_y, :v_down, :v_drag, :q_now, :q_drag, :q_down, :axis, :axis_set, :radius
6
-
7
- def initialize(cx, cy, radius)
8
- @center_x = cx
9
- @center_y = cy
10
- @radius = radius
11
- @v_down = Vec3D.new
12
- @v_drag = Vec3D.new
13
- @q_now = Quaternion.new
14
- @q_down = Quaternion.new
15
- @q_drag = Quaternion.new
16
- @axis_set = [Vec3D.new(1.0, 0.0, 0.0), Vec3D.new(0.0, 1.0, 0.0), Vec3D.new(0.0, 0.0, 1.0)]
17
- @axis = -1
18
- end
19
-
20
- def select_axis(axis)
21
- @axis = axis
22
- end
23
-
24
- def mouse2sphere(x, y)
25
- v = Vec3D.new((x - center_x) / radius, (y - center_y) / radius, 0)
26
- mag = v.mag
27
- if (mag > 1.0)
28
- v.normalize!
29
- else
30
- v.z = Math.sqrt(1.0 - mag)
31
- end
32
- v = constrain(v, axis_set[axis]) unless (axis == -1)
33
- return v
34
- end
35
-
36
- def mouse_pressed(x, y)
37
- @v_down = mouse2sphere(x, y)
38
- @q_down.copy(q_now)
39
- @q_drag.reset
40
- end
41
-
42
- def mouse_dragged(x, y)
43
- @v_drag = mouse2sphere(x, y)
44
- @q_drag.set(v_down.dot(v_drag), v_down.cross(v_drag))
45
- end
46
-
47
-
48
- def constrain(vector, axis)
49
- res = vector - (axis * axis.dot(vector))
50
- res.normalize!
51
- end
52
-
53
- def update
54
- @q_now = q_drag * q_down
55
- quat2matrix(q_now)
56
- end
57
-
58
- def quat2matrix(q)
59
- q.get_value
60
- end
61
- end
62
-
63
-
64
-
@@ -1,62 +0,0 @@
1
- require_relative 'vec'
2
-
3
- class Quaternion
4
- EPSILON = 9.999999747378752e-05 # a value used by processing.org
5
- attr_reader :w, :x, :y, :z
6
-
7
- def initialize(w = 1.0, x = 0, y = 0, z = 0)
8
- @w, @x, @y, @z = w, x, y, z
9
- end
10
-
11
- def ==(quat)
12
- (w - quat.w).abs < EPSILON && (x - quat.x).abs < EPSILON && (y - quat.y).abs < EPSILON && (z - quat.z).abs < EPSILON
13
- end
14
-
15
-
16
- def reset
17
- @w = 1.0
18
- @x = 0.0
19
- @y = 0.0
20
- @z = 0.0
21
- end
22
-
23
- def set(w, v)
24
- @w, @x, @y, @z = w, v.x, v.y, v.z
25
- end
26
-
27
- def copy(q)
28
- @w, @x, @y, @z = q.w, q.x, q.y, q.z
29
- end
30
-
31
- def self.mult(q1, q2) # class method
32
- x0 = q1.w * q2.x + q1.x * q2.w + q1.y * q2.z - q1.z * q2.y
33
- y0 = q1.w * q2.y + q1.y * q2.w + q1.z * q2.x - q1.x * q2.z
34
- z0 = q1.w * q2.z + q1.z * q2.w + q1.x * q2.y - q1.y * q2.x
35
- w0 = q1.w * q2.w - q1.x * q2.x - q1.y * q2.y - q1.z * q2.z
36
- Quaternion.new(w0, x0, y0, z0)
37
- end
38
-
39
- def * (q1) # instance method
40
- x0 = w * q1.x + x * q1.w + y * q1.z - z * q1.y
41
- y0 = w * q1.y + y * q1.w + z * q1.x - x * q1.z
42
- z0 = w * q1.z + z * q1.w + x * q1.y - y * q1.x
43
- w0 = w * q1.w - x * q1.x - y * q1.y - z * q1.z
44
- Quaternion.new(w0, x0, y0, z0)
45
- end
46
-
47
- def get_value
48
- sa = Math.sqrt(1.0 - w * w)
49
- sa = 1.0 unless (sa >= EPSILON)
50
- [Math.acos(w) * 2, x / sa, y / sa, z / sa]
51
- end
52
-
53
- def to_s
54
- "#{self.class}(w=#{w}, x=#{x}, y=#{y}, z=#{z})"
55
- end
56
-
57
- def inspect
58
- self.to_s
59
- end
60
- end
61
-
62
-
@@ -1,232 +0,0 @@
1
- class Vec2D
2
- EPSILON = 9.999999747378752e-05 # a value used by processing.org
3
- attr_accessor :x, :y, :z
4
-
5
- def initialize(x = 0 ,y = 0, z = 0)
6
- @x, @y, @z = x, y, z
7
- post_initialize
8
- end
9
-
10
- def post_initialize
11
- nil
12
- end
13
-
14
- def ==(vec)
15
- (x - vec.x).abs < EPSILON && (y - vec.y).abs < EPSILON && (z - vec.z).abs < EPSILON
16
- end
17
-
18
- def self.dist_squared(vec_a, vec_b)
19
- (vec_a.x - vec_b.x)**2 + (vec_a.y - vec_b.y)**2 + (vec_a.z - vec_b.z)**2
20
- end
21
-
22
- def self.dist(vec_a, vec_b)
23
- Math.sqrt((vec_a.x - vec_b.x)**2 + (vec_a.y - vec_b.y)**2 + (vec_a.z - vec_b.z)**2)
24
- end
25
-
26
- def inspect
27
- self.to_s
28
- end
29
-
30
-
31
- def self.from_angle scalar
32
- Vec2D.new(Math.cos(scalar), Math.sin(scalar))
33
- end
34
-
35
- def modulus
36
- Math.hypot(x, y)
37
- end
38
-
39
- def mag_squared
40
- x**2 + y**2
41
- end
42
-
43
- # vanilla processing PVector returns a Vector, rather than Scalar (defaults to 3D result with z = 0)
44
- def cross(vec)
45
- x * vec.y - y * vec.x
46
- end
47
-
48
- # Scalar product, also known as inner product or dot product
49
- def dot(vec)
50
- x * vec.x + y * vec.y
51
- end
52
-
53
- def collinear_with?(vec)
54
- cross(vec).abs < EPSILON
55
- end
56
-
57
- def +(vec)
58
- Vec2D.new(x + vec.x, y + vec.y)
59
- end
60
-
61
- def -(vec)
62
- Vec2D.new(x - vec.x, y - vec.y)
63
- end
64
-
65
- def *(scalar)
66
- Vec2D.new(x * scalar, y * scalar)
67
- end
68
-
69
- def / (scalar)
70
- Vec2D.new(x / scalar, y / scalar) unless scalar == 0
71
- end
72
-
73
- # @param [Vec2D] vec
74
- # The target vector
75
- # @param [Float] scalar
76
- # @return [Vec2D]
77
- # A new Vec2D on the way to the target (all the way if scalar not in 0 .. 1.0)
78
-
79
- def lerp(vec, scalar)
80
- if (0 .. 1.0).include? scalar
81
- x0, y0 = x * scalar + vec.x * (1 - scalar), y * scalar + vec.y * (1 - scalar)
82
- else
83
- x0, y0 = vec.x, vec.y # you will get there rather quicker than you hoped
84
- end
85
- Vec2D.new(x0, y0)
86
- end
87
-
88
- # Change the values of current Vec2D toward a target
89
- # @param [Vec2D] vec
90
- # The target vector
91
- # @param [Float] scalar
92
- # @return [Vec2D]
93
- # self Vec2D on the way to the target (unchanged if scalar not in 0 .. 1.0)
94
-
95
-
96
- def lerp!(vec, scalar)
97
- @x, @y = x * scalar + vec.x * (1 - scalar), y * scalar + vec.y * (1 - scalar) if (0 .. 1.0).include? scalar
98
- return self
99
- end
100
-
101
- def heading
102
- Math.atan2(-y, x) * -1.0
103
- end
104
-
105
- def normalize
106
- magnitude = Math.hypot(x, y)
107
- Vec2D.new( x / magnitude, y / magnitude)
108
- end
109
-
110
- def normalize!
111
- magnitude = Math.hypot(x, y)
112
- @x, @y = x / magnitude, y / magnitude
113
- return self
114
- end
115
-
116
- # The &block option means we can conditionally set_mag to
117
- # a limit value for example, when given &block returns true.
118
-
119
- def set_mag(scalar, &block)
120
- if block_given? && yield == false
121
- return self
122
- end
123
- magnitude = Math.hypot(x, y)
124
- @x, @y = (x * scalar) / magnitude, (y * scalar) / magnitude
125
- return self
126
- end
127
-
128
- def to_a
129
- [x, y]
130
- end
131
-
132
- def to_s
133
- "#{self.class}(x=#{x}, y=#{y})"
134
- end
135
-
136
- alias :mag :modulus
137
-
138
- end
139
-
140
- class Vec2DR < Vec2D
141
-
142
- def rotate(rot)
143
- Vec2D.new((x * Math.cos(rot)) - y * Math.sin(rot),
144
- (x * Math.sin(rot)) + (y * Math.cos(rot)))
145
- end
146
-
147
- # this behaves like PVector rotate (ie changes self, except returns self rather than "void")
148
- def rotate!(rot)
149
- @x, @y = (x * Math.cos(rot) - y * Math.sin(rot)), (x * Math.sin(rot) + y * Math.cos(rot))
150
- return self
151
- end
152
- end
153
-
154
- class Vec3D < Vec2D
155
-
156
- def mag_squared
157
- x**2 + y**2 + z**2
158
- end
159
-
160
- def modulus
161
- Math.sqrt(x**2 + y**2 + z**2)
162
- end
163
-
164
- def cross(vec)
165
- xc = y * vec.z - z * vec.y
166
- yc = z * vec.x - x * vec.z
167
- zc = x * vec.y - y * vec.x
168
- Vec3D.new(xc, yc, zc)
169
- end
170
-
171
- # Scalar product, also known as inner product or dot product
172
- def dot(vec)
173
- x * vec.x + y * vec.y + z * vec.z
174
- end
175
-
176
- def collinear_with?(vec)
177
- cross(vec) == Vec3D.new
178
- end
179
-
180
- def to_a
181
- [x, y, z]
182
- end
183
-
184
- def +(vec)
185
- Vec3D.new(x + vec.x, y + vec.y, z + vec.z)
186
- end
187
-
188
- def -(vec)
189
- Vec3D.new(x - vec.x, y - vec.y, z - vec.z)
190
- end
191
-
192
- def * (scalar)
193
- Vec3D.new(x * scalar, y * scalar, z * scalar)
194
- end
195
-
196
- def / (scalar)
197
- Vec3D.new(x / scalar, y / scalar, z / scalar) unless scalar.abs < EPSILON
198
- end
199
-
200
- def normalize
201
- magnitude = Math.sqrt(x**2 + y**2 + z**2)
202
- Vec3D.new( x / magnitude, y / magnitude, z / magnitude)
203
- end
204
-
205
- def normalize!
206
- magnitude = Math.sqrt(x**2 + y**2 + z**2)
207
- @x, @y, @z = x / magnitude, y / magnitude, z / magnitude
208
- return self
209
- end
210
-
211
- # The optional &block should evaluate to a boolean
212
- # if given, the set_mag becomes conditional (eg set max/min)
213
-
214
- def set_mag(scalar, &block)
215
- if block_given? && yield == false
216
- return self
217
- end
218
- magnitude = Math.sqrt(x**2 + y**2 + z**2)
219
- @x, @y, @z = (x * scalar) / magnitude, (y * scalar) / magnitude, (z * scalar) / magnitude
220
- return self
221
- end
222
-
223
- def to_s
224
- "#{self.class}(x=#{x}, y=#{y}, z=#{z})"
225
- end
226
-
227
- end
228
-
229
-
230
-
231
-
232
-