toxiclibs 0.4.0 → 0.8.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 (404) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +16 -0
  3. data/.mvn/extensions.xml +8 -0
  4. data/.mvn/wrapper/maven-wrapper.properties +1 -0
  5. data/.travis.yml +23 -0
  6. data/CHANGELOG.md +7 -0
  7. data/COPYING.md +14 -0
  8. data/Gemfile +10 -0
  9. data/LICENSE +675 -0
  10. data/README.md +9 -7
  11. data/Rakefile +25 -81
  12. data/examples/README.md +5 -0
  13. data/examples/attract_repel/attract_repel.rb +30 -0
  14. data/examples/attract_repel/attractor.rb +23 -0
  15. data/examples/attract_repel/particle.rb +27 -0
  16. data/examples/data/ReplicaBold.ttf +0 -0
  17. data/examples/data/ti_yong.png +0 -0
  18. data/examples/force_directed/cluster.rb +76 -0
  19. data/examples/force_directed/force_directed_graph.rb +92 -0
  20. data/examples/force_directed/node.rb +26 -0
  21. data/examples/gray_scott_image.rb +74 -0
  22. data/examples/gray_scott_tone_map.rb +77 -0
  23. data/examples/implicit.rb +139 -0
  24. data/examples/inflate_mesh.rb +89 -0
  25. data/examples/model_align.rb +43 -0
  26. data/examples/physics_type.rb +77 -0
  27. data/examples/povmesh/data/mask.jpg +0 -0
  28. data/examples/povmesh/ftest.rb +59 -0
  29. data/examples/povmesh/mesh_align.rb +47 -0
  30. data/examples/povmesh/tentacle.rb +71 -0
  31. data/examples/simple_cluster/cluster.rb +47 -0
  32. data/examples/simple_cluster/node.rb +27 -0
  33. data/examples/simple_cluster/simple_cluster.rb +60 -0
  34. data/examples/soft_body/blanket.rb +45 -0
  35. data/examples/soft_body/connection.rb +16 -0
  36. data/examples/soft_body/particle.rb +22 -0
  37. data/examples/soft_body/soft_body_square_adapted.rb +55 -0
  38. data/examples/spherical_harmonics_mesh.rb +50 -0
  39. data/examples/test_rect.rb +32 -0
  40. data/lib/toxiclibs.jar +0 -0
  41. data/lib/toxiclibs.rb +72 -22
  42. data/lib/toxiclibs/version.rb +1 -1
  43. data/pom.rb +63 -0
  44. data/pom.xml +124 -0
  45. data/src/com/toxi/net/ClientListener.java +41 -0
  46. data/src/com/toxi/net/ServerListener.java +70 -0
  47. data/src/com/toxi/net/ServerListenerAdapter.java +47 -0
  48. data/src/com/toxi/net/ServerState.java +18 -0
  49. data/src/com/toxi/net/UDPConnection.java +66 -0
  50. data/src/com/toxi/net/UDPSyncClient.java +81 -0
  51. data/src/com/toxi/net/UDPSyncServer.java +450 -0
  52. data/src/com/toxi/nio/UDPClient.java +121 -0
  53. data/src/com/toxi/nio/UDPClientState.java +32 -0
  54. data/src/com/toxi/nio/UDPServer.java +129 -0
  55. data/src/toxi/audio/AudioBuffer.java +229 -0
  56. data/src/toxi/audio/AudioSource.java +288 -0
  57. data/src/toxi/audio/DecompressInputStream.java +159 -0
  58. data/src/toxi/audio/IIRFilter.java +197 -0
  59. data/src/toxi/audio/JOALUtil.java +388 -0
  60. data/src/toxi/audio/MultiTimbralManager.java +162 -0
  61. data/src/toxi/audio/SoundListener.java +154 -0
  62. data/src/toxi/audio/SynthUtil.java +109 -0
  63. data/src/toxi/color/AccessCriteria.java +114 -0
  64. data/src/toxi/color/AlphaAccessor.java +67 -0
  65. data/src/toxi/color/CMYKAccessor.java +122 -0
  66. data/src/toxi/color/CMYKDistanceProxy.java +40 -0
  67. data/src/toxi/color/ColorGradient.java +260 -0
  68. data/src/toxi/color/ColorList.java +699 -0
  69. data/src/toxi/color/ColorRange.java +671 -0
  70. data/src/toxi/color/ColorTheme.java +163 -0
  71. data/src/toxi/color/DistanceProxy.java +44 -0
  72. data/src/toxi/color/HSVAccessor.java +113 -0
  73. data/src/toxi/color/HSVDistanceProxy.java +40 -0
  74. data/src/toxi/color/HistEntry.java +85 -0
  75. data/src/toxi/color/Histogram.java +185 -0
  76. data/src/toxi/color/Hue.java +249 -0
  77. data/src/toxi/color/LuminanceAccessor.java +78 -0
  78. data/src/toxi/color/NamedColor.java +935 -0
  79. data/src/toxi/color/ProximityComparator.java +70 -0
  80. data/src/toxi/color/RGBAccessor.java +113 -0
  81. data/src/toxi/color/RGBDistanceProxy.java +41 -0
  82. data/src/toxi/color/ReadonlyTColor.java +296 -0
  83. data/src/toxi/color/TColor.java +1677 -0
  84. data/src/toxi/color/TColorAdapter.java +68 -0
  85. data/src/toxi/color/ToneMap.java +218 -0
  86. data/src/toxi/color/theory/AnalogousStrategy.java +140 -0
  87. data/src/toxi/color/theory/ColorTheoryRegistry.java +139 -0
  88. data/src/toxi/color/theory/ColorTheoryStrategy.java +56 -0
  89. data/src/toxi/color/theory/ComplementaryStrategy.java +111 -0
  90. data/src/toxi/color/theory/CompoundTheoryStrategy.java +143 -0
  91. data/src/toxi/color/theory/LeftSplitComplementaryStrategy.java +82 -0
  92. data/src/toxi/color/theory/MonochromeTheoryStrategy.java +103 -0
  93. data/src/toxi/color/theory/RightSplitComplementaryStrategy.java +82 -0
  94. data/src/toxi/color/theory/SingleComplementStrategy.java +76 -0
  95. data/src/toxi/color/theory/SplitComplementaryStrategy.java +77 -0
  96. data/src/toxi/color/theory/TetradTheoryStrategy.java +114 -0
  97. data/src/toxi/color/theory/TriadTheoryStrategy.java +77 -0
  98. data/src/toxi/data/csv/CSVAdapter.java +74 -0
  99. data/src/toxi/data/csv/CSVFieldMapper.java +212 -0
  100. data/src/toxi/data/csv/CSVListener.java +61 -0
  101. data/src/toxi/data/csv/CSVParser.java +202 -0
  102. data/src/toxi/data/feeds/AtomAuthor.java +49 -0
  103. data/src/toxi/data/feeds/AtomContent.java +50 -0
  104. data/src/toxi/data/feeds/AtomEntry.java +111 -0
  105. data/src/toxi/data/feeds/AtomFeed.java +129 -0
  106. data/src/toxi/data/feeds/AtomLink.java +62 -0
  107. data/src/toxi/data/feeds/RSSChannel.java +88 -0
  108. data/src/toxi/data/feeds/RSSEnclosure.java +60 -0
  109. data/src/toxi/data/feeds/RSSFeed.java +99 -0
  110. data/src/toxi/data/feeds/RSSItem.java +104 -0
  111. data/src/toxi/data/feeds/util/EntityStripper.java +2480 -0
  112. data/src/toxi/data/feeds/util/Iso8601DateAdapter.java +101 -0
  113. data/src/toxi/data/feeds/util/Rfc822DateAdapter.java +93 -0
  114. data/src/toxi/geom/AABB.java +658 -0
  115. data/src/toxi/geom/Axis3D.java +116 -0
  116. data/src/toxi/geom/AxisAlignedCylinder.java +163 -0
  117. data/src/toxi/geom/BernsteinPolynomial.java +94 -0
  118. data/src/toxi/geom/BezierCurve2D.java +159 -0
  119. data/src/toxi/geom/BezierCurve3D.java +148 -0
  120. data/src/toxi/geom/BooleanShapeBuilder.java +185 -0
  121. data/src/toxi/geom/BoxIntersector.java +52 -0
  122. data/src/toxi/geom/Circle.java +230 -0
  123. data/src/toxi/geom/CircleIntersector.java +85 -0
  124. data/src/toxi/geom/Cone.java +150 -0
  125. data/src/toxi/geom/ConvexPolygonClipper.java +136 -0
  126. data/src/toxi/geom/CoordinateExtractor.java +16 -0
  127. data/src/toxi/geom/Ellipse.java +250 -0
  128. data/src/toxi/geom/GMatrix.java +2599 -0
  129. data/src/toxi/geom/GVector.java +833 -0
  130. data/src/toxi/geom/GlobalGridTesselator.java +54 -0
  131. data/src/toxi/geom/GridTesselator.java +108 -0
  132. data/src/toxi/geom/Intersector2D.java +49 -0
  133. data/src/toxi/geom/Intersector3D.java +51 -0
  134. data/src/toxi/geom/IsectData2D.java +103 -0
  135. data/src/toxi/geom/IsectData3D.java +103 -0
  136. data/src/toxi/geom/Line2D.java +534 -0
  137. data/src/toxi/geom/Line3D.java +471 -0
  138. data/src/toxi/geom/LineStrip2D.java +430 -0
  139. data/src/toxi/geom/LineStrip3D.java +230 -0
  140. data/src/toxi/geom/LocalGridTesselator.java +57 -0
  141. data/src/toxi/geom/Matrix3d.java +3048 -0
  142. data/src/toxi/geom/Matrix4f.java +3446 -0
  143. data/src/toxi/geom/Matrix4x4.java +1076 -0
  144. data/src/toxi/geom/MatrixSizeException.java +58 -0
  145. data/src/toxi/geom/OctreeVisitor.java +44 -0
  146. data/src/toxi/geom/Origin3D.java +148 -0
  147. data/src/toxi/geom/Plane.java +293 -0
  148. data/src/toxi/geom/PlaneIntersector.java +57 -0
  149. data/src/toxi/geom/PointCloud3D.java +253 -0
  150. data/src/toxi/geom/PointOctree.java +502 -0
  151. data/src/toxi/geom/PointQuadtree.java +375 -0
  152. data/src/toxi/geom/Polygon2D.java +1038 -0
  153. data/src/toxi/geom/PolygonClipper2D.java +45 -0
  154. data/src/toxi/geom/PolygonTesselator.java +20 -0
  155. data/src/toxi/geom/QuadtreeVisitor.java +44 -0
  156. data/src/toxi/geom/Quaternion.java +641 -0
  157. data/src/toxi/geom/Ray2D.java +146 -0
  158. data/src/toxi/geom/Ray3D.java +150 -0
  159. data/src/toxi/geom/Ray3DIntersector.java +75 -0
  160. data/src/toxi/geom/ReadonlyVec2D.java +575 -0
  161. data/src/toxi/geom/ReadonlyVec3D.java +628 -0
  162. data/src/toxi/geom/ReadonlyVec4D.java +431 -0
  163. data/src/toxi/geom/Rect.java +720 -0
  164. data/src/toxi/geom/Reflector3D.java +58 -0
  165. data/src/toxi/geom/Shape2D.java +94 -0
  166. data/src/toxi/geom/Shape3D.java +42 -0
  167. data/src/toxi/geom/SingularMatrixException.java +57 -0
  168. data/src/toxi/geom/SpatialBins.java +182 -0
  169. data/src/toxi/geom/SpatialIndex.java +61 -0
  170. data/src/toxi/geom/Sphere.java +224 -0
  171. data/src/toxi/geom/SphereIntersectorReflector.java +196 -0
  172. data/src/toxi/geom/Spline2D.java +349 -0
  173. data/src/toxi/geom/Spline3D.java +351 -0
  174. data/src/toxi/geom/SutherlandHodgemanClipper.java +151 -0
  175. data/src/toxi/geom/Triangle2D.java +422 -0
  176. data/src/toxi/geom/Triangle3D.java +456 -0
  177. data/src/toxi/geom/TriangleIntersector.java +105 -0
  178. data/src/toxi/geom/Vec2D.java +1328 -0
  179. data/src/toxi/geom/Vec3D.java +1832 -0
  180. data/src/toxi/geom/Vec4D.java +985 -0
  181. data/src/toxi/geom/VecMathUtil.java +100 -0
  182. data/src/toxi/geom/XAxisCylinder.java +64 -0
  183. data/src/toxi/geom/YAxisCylinder.java +65 -0
  184. data/src/toxi/geom/ZAxisCylinder.java +64 -0
  185. data/src/toxi/geom/mesh/BezierPatch.java +200 -0
  186. data/src/toxi/geom/mesh/BoxSelector.java +62 -0
  187. data/src/toxi/geom/mesh/DefaultSTLColorModel.java +67 -0
  188. data/src/toxi/geom/mesh/DefaultSelector.java +50 -0
  189. data/src/toxi/geom/mesh/Face.java +176 -0
  190. data/src/toxi/geom/mesh/LaplacianSmooth.java +80 -0
  191. data/src/toxi/geom/mesh/MaterialiseSTLColorModel.java +150 -0
  192. data/src/toxi/geom/mesh/Mesh3D.java +224 -0
  193. data/src/toxi/geom/mesh/MeshIntersector.java +91 -0
  194. data/src/toxi/geom/mesh/OBJWriter.java +194 -0
  195. data/src/toxi/geom/mesh/PLYWriter.java +167 -0
  196. data/src/toxi/geom/mesh/PlaneSelector.java +90 -0
  197. data/src/toxi/geom/mesh/STLColorModel.java +54 -0
  198. data/src/toxi/geom/mesh/STLReader.java +185 -0
  199. data/src/toxi/geom/mesh/STLWriter.java +323 -0
  200. data/src/toxi/geom/mesh/SphereFunction.java +156 -0
  201. data/src/toxi/geom/mesh/SphericalHarmonics.java +110 -0
  202. data/src/toxi/geom/mesh/SuperEllipsoid.java +110 -0
  203. data/src/toxi/geom/mesh/SurfaceFunction.java +75 -0
  204. data/src/toxi/geom/mesh/SurfaceMeshBuilder.java +149 -0
  205. data/src/toxi/geom/mesh/Terrain.java +451 -0
  206. data/src/toxi/geom/mesh/TriangleMesh.java +1201 -0
  207. data/src/toxi/geom/mesh/Vertex.java +78 -0
  208. data/src/toxi/geom/mesh/VertexSelector.java +193 -0
  209. data/src/toxi/geom/mesh/WEFace.java +100 -0
  210. data/src/toxi/geom/mesh/WEMeshFilterStrategy.java +51 -0
  211. data/src/toxi/geom/mesh/WETriangleMesh.java +761 -0
  212. data/src/toxi/geom/mesh/WEVertex.java +134 -0
  213. data/src/toxi/geom/mesh/WingedEdge.java +115 -0
  214. data/src/toxi/geom/mesh/subdiv/CentroidSubdiv.java +37 -0
  215. data/src/toxi/geom/mesh/subdiv/DisplacementSubdivision.java +85 -0
  216. data/src/toxi/geom/mesh/subdiv/DualDisplacementSubdivision.java +94 -0
  217. data/src/toxi/geom/mesh/subdiv/DualSubdivision.java +49 -0
  218. data/src/toxi/geom/mesh/subdiv/EdgeLengthComparator.java +50 -0
  219. data/src/toxi/geom/mesh/subdiv/FaceCountComparator.java +51 -0
  220. data/src/toxi/geom/mesh/subdiv/MidpointDisplacementSubdivision.java +80 -0
  221. data/src/toxi/geom/mesh/subdiv/MidpointSubdiv.java +42 -0
  222. data/src/toxi/geom/mesh/subdiv/MidpointSubdivision.java +48 -0
  223. data/src/toxi/geom/mesh/subdiv/NewSubdivStrategy.java +23 -0
  224. data/src/toxi/geom/mesh/subdiv/NormalDisplacementSubdivision.java +74 -0
  225. data/src/toxi/geom/mesh/subdiv/SubdivisionStrategy.java +83 -0
  226. data/src/toxi/geom/mesh/subdiv/TriSubdivision.java +51 -0
  227. data/src/toxi/geom/mesh2d/DelaunayTriangle.java +222 -0
  228. data/src/toxi/geom/mesh2d/DelaunayTriangulation.java +327 -0
  229. data/src/toxi/geom/mesh2d/DelaunayVertex.java +560 -0
  230. data/src/toxi/geom/mesh2d/Voronoi.java +149 -0
  231. data/src/toxi/geom/nurbs/BasicNurbsCurve.java +210 -0
  232. data/src/toxi/geom/nurbs/BasicNurbsSurface.java +233 -0
  233. data/src/toxi/geom/nurbs/ControlNet.java +148 -0
  234. data/src/toxi/geom/nurbs/CurveCreator.java +112 -0
  235. data/src/toxi/geom/nurbs/CurveUtils.java +259 -0
  236. data/src/toxi/geom/nurbs/InterpolationException.java +65 -0
  237. data/src/toxi/geom/nurbs/KnotVector.java +333 -0
  238. data/src/toxi/geom/nurbs/NurbsCreator.java +815 -0
  239. data/src/toxi/geom/nurbs/NurbsCurve.java +120 -0
  240. data/src/toxi/geom/nurbs/NurbsMeshCreator.java +145 -0
  241. data/src/toxi/geom/nurbs/NurbsSurface.java +147 -0
  242. data/src/toxi/image/util/Filter8bit.java +331 -0
  243. data/src/toxi/image/util/TiledFrameExporter.java +162 -0
  244. data/src/toxi/math/BezierInterpolation.java +102 -0
  245. data/src/toxi/math/CircularInterpolation.java +88 -0
  246. data/src/toxi/math/CosineInterpolation.java +51 -0
  247. data/src/toxi/math/DecimatedInterpolation.java +77 -0
  248. data/src/toxi/math/ExponentialInterpolation.java +68 -0
  249. data/src/toxi/math/InterpolateStrategy.java +60 -0
  250. data/src/toxi/math/Interpolation2D.java +93 -0
  251. data/src/toxi/math/LinearInterpolation.java +46 -0
  252. data/src/toxi/math/MathUtils.java +990 -0
  253. data/src/toxi/math/NonLinearScaleMap.java +101 -0
  254. data/src/toxi/math/ScaleMap.java +183 -0
  255. data/src/toxi/math/SigmoidInterpolation.java +78 -0
  256. data/src/toxi/math/SinCosLUT.java +141 -0
  257. data/src/toxi/math/ThresholdInterpolation.java +58 -0
  258. data/src/toxi/math/ZoomLensInterpolation.java +126 -0
  259. data/src/toxi/math/conversion/UnitTranslator.java +161 -0
  260. data/src/toxi/math/noise/PerlinNoise.java +281 -0
  261. data/src/toxi/math/noise/SimplexNoise.java +542 -0
  262. data/src/toxi/math/waves/AMFMSineWave.java +143 -0
  263. data/src/toxi/math/waves/AbstractWave.java +248 -0
  264. data/src/toxi/math/waves/ConstantWave.java +48 -0
  265. data/src/toxi/math/waves/FMHarmonicSquareWave.java +155 -0
  266. data/src/toxi/math/waves/FMSawtoothWave.java +144 -0
  267. data/src/toxi/math/waves/FMSineWave.java +142 -0
  268. data/src/toxi/math/waves/FMSquareWave.java +143 -0
  269. data/src/toxi/math/waves/FMTriangleWave.java +126 -0
  270. data/src/toxi/math/waves/SineWave.java +81 -0
  271. data/src/toxi/math/waves/Wave2D.java +68 -0
  272. data/src/toxi/math/waves/WaveState.java +69 -0
  273. data/src/toxi/music/scale/AbstractScale.java +117 -0
  274. data/src/toxi/music/scale/GenericScale.java +66 -0
  275. data/src/toxi/music/scale/MajorScale.java +41 -0
  276. data/src/toxi/newmesh/AttributedEdge.java +106 -0
  277. data/src/toxi/newmesh/AttributedFace.java +63 -0
  278. data/src/toxi/newmesh/IndexedTriangleMesh.java +809 -0
  279. data/src/toxi/newmesh/MeshAttributeCompiler.java +45 -0
  280. data/src/toxi/newmesh/MeshFaceNormalCompiler.java +52 -0
  281. data/src/toxi/newmesh/MeshUVCompiler.java +52 -0
  282. data/src/toxi/newmesh/MeshVertexColorCompiler.java +49 -0
  283. data/src/toxi/newmesh/MeshVertexCompiler.java +54 -0
  284. data/src/toxi/newmesh/MeshVertexNormalCompiler.java +55 -0
  285. data/src/toxi/newmesh/SpatialIndex.java +78 -0
  286. data/src/toxi/physics2d/ParticlePath2D.java +100 -0
  287. data/src/toxi/physics2d/ParticleString2D.java +184 -0
  288. data/src/toxi/physics2d/PullBackSpring2D.java +51 -0
  289. data/src/toxi/physics2d/VerletConstrainedSpring2D.java +89 -0
  290. data/src/toxi/physics2d/VerletMinDistanceSpring2D.java +57 -0
  291. data/src/toxi/physics2d/VerletParticle2D.java +457 -0
  292. data/src/toxi/physics2d/VerletPhysics2D.java +448 -0
  293. data/src/toxi/physics2d/VerletSpring2D.java +181 -0
  294. data/src/toxi/physics2d/behaviors/AttractionBehavior2D.java +212 -0
  295. data/src/toxi/physics2d/behaviors/ConstantForceBehavior2D.java +112 -0
  296. data/src/toxi/physics2d/behaviors/GravityBehavior2D.java +61 -0
  297. data/src/toxi/physics2d/behaviors/ParticleBehavior2D.java +66 -0
  298. data/src/toxi/physics2d/constraints/AngularConstraint.java +83 -0
  299. data/src/toxi/physics2d/constraints/AxisConstraint.java +71 -0
  300. data/src/toxi/physics2d/constraints/CircularConstraint.java +69 -0
  301. data/src/toxi/physics2d/constraints/MaxConstraint.java +66 -0
  302. data/src/toxi/physics2d/constraints/MinConstraint.java +66 -0
  303. data/src/toxi/physics2d/constraints/ParticleConstraint2D.java +47 -0
  304. data/src/toxi/physics2d/constraints/PolygonConstraint.java +93 -0
  305. data/src/toxi/physics2d/constraints/RectConstraint.java +114 -0
  306. data/src/toxi/physics3d/ParticlePath3D.java +100 -0
  307. data/src/toxi/physics3d/ParticleString3D.java +184 -0
  308. data/src/toxi/physics3d/PullBackSpring3D.java +50 -0
  309. data/src/toxi/physics3d/VerletConstrainedSpring3D.java +88 -0
  310. data/src/toxi/physics3d/VerletMinDistanceSpring3D.java +56 -0
  311. data/src/toxi/physics3d/VerletParticle3D.java +385 -0
  312. data/src/toxi/physics3d/VerletPhysics3D.java +417 -0
  313. data/src/toxi/physics3d/VerletSpring3D.java +180 -0
  314. data/src/toxi/physics3d/behaviors/AttractionBehavior3D.java +182 -0
  315. data/src/toxi/physics3d/behaviors/ConstantForceBehavior3D.java +92 -0
  316. data/src/toxi/physics3d/behaviors/GravityBehavior3D.java +61 -0
  317. data/src/toxi/physics3d/behaviors/ParticleBehavior3D.java +52 -0
  318. data/src/toxi/physics3d/constraints/AxisConstraint.java +68 -0
  319. data/src/toxi/physics3d/constraints/BoxConstraint.java +121 -0
  320. data/src/toxi/physics3d/constraints/CylinderConstraint.java +87 -0
  321. data/src/toxi/physics3d/constraints/MaxConstraint.java +65 -0
  322. data/src/toxi/physics3d/constraints/MinConstraint.java +65 -0
  323. data/src/toxi/physics3d/constraints/ParticleConstraint3D.java +49 -0
  324. data/src/toxi/physics3d/constraints/PlaneConstraint.java +78 -0
  325. data/src/toxi/physics3d/constraints/SoftBoxConstraint.java +87 -0
  326. data/src/toxi/physics3d/constraints/SphereConstraint.java +108 -0
  327. data/src/toxi/processing/ArrowModifier.java +116 -0
  328. data/src/toxi/processing/DashedLineModifier.java +48 -0
  329. data/src/toxi/processing/DeltaOrientationMapper.java +57 -0
  330. data/src/toxi/processing/Line2DRenderModifier.java +18 -0
  331. data/src/toxi/processing/MeshToVBO.java +127 -0
  332. data/src/toxi/processing/NormalMapper.java +18 -0
  333. data/src/toxi/processing/POVInterface.java +121 -0
  334. data/src/toxi/processing/POVMesh.java +219 -0
  335. data/src/toxi/processing/POVWriter.java +460 -0
  336. data/src/toxi/processing/RCOpaque.java +77 -0
  337. data/src/toxi/processing/RCTransp.java +78 -0
  338. data/src/toxi/processing/TextureBuilder.java +232 -0
  339. data/src/toxi/processing/Textures.java +110 -0
  340. data/src/toxi/processing/ToxiclibsSupport.java +1239 -0
  341. data/src/toxi/processing/Tracing.java +25 -0
  342. data/src/toxi/processing/XYZNormalMapper.java +30 -0
  343. data/src/toxi/sim/automata/CAMatrix.java +297 -0
  344. data/src/toxi/sim/automata/CARule.java +76 -0
  345. data/src/toxi/sim/automata/CARule2D.java +354 -0
  346. data/src/toxi/sim/automata/CAWolfram1D.java +309 -0
  347. data/src/toxi/sim/automata/EvolvableMatrix.java +61 -0
  348. data/src/toxi/sim/automata/MatrixEvolver.java +42 -0
  349. data/src/toxi/sim/dla/BottomUpOrder.java +76 -0
  350. data/src/toxi/sim/dla/DLA.java +497 -0
  351. data/src/toxi/sim/dla/DLAConfiguration.java +364 -0
  352. data/src/toxi/sim/dla/DLAEventAdapter.java +64 -0
  353. data/src/toxi/sim/dla/DLAEventListener.java +57 -0
  354. data/src/toxi/sim/dla/DLAGuideLines.java +219 -0
  355. data/src/toxi/sim/dla/DLAParticle.java +102 -0
  356. data/src/toxi/sim/dla/DLASegment.java +88 -0
  357. data/src/toxi/sim/dla/PipelineOrder.java +50 -0
  358. data/src/toxi/sim/dla/RadialDistanceOrder.java +92 -0
  359. data/src/toxi/sim/erosion/ErosionFunction.java +122 -0
  360. data/src/toxi/sim/erosion/TalusAngleErosion.java +145 -0
  361. data/src/toxi/sim/erosion/ThermalErosion.java +75 -0
  362. data/src/toxi/sim/fluids/FluidSolver2D.java +762 -0
  363. data/src/toxi/sim/fluids/FluidSolver3D.java +326 -0
  364. data/src/toxi/sim/grayscott/GrayScott.java +469 -0
  365. data/src/toxi/util/DateUtils.java +141 -0
  366. data/src/toxi/util/FileSequenceDescriptor.java +181 -0
  367. data/src/toxi/util/FileUtils.java +467 -0
  368. data/src/toxi/util/datatypes/ArraySet.java +128 -0
  369. data/src/toxi/util/datatypes/ArrayUtil.java +404 -0
  370. data/src/toxi/util/datatypes/BiasedDoubleRange.java +141 -0
  371. data/src/toxi/util/datatypes/BiasedFloatRange.java +141 -0
  372. data/src/toxi/util/datatypes/BiasedIntegerRange.java +141 -0
  373. data/src/toxi/util/datatypes/DoubleRange.java +251 -0
  374. data/src/toxi/util/datatypes/FloatRange.java +251 -0
  375. data/src/toxi/util/datatypes/GenericSet.java +215 -0
  376. data/src/toxi/util/datatypes/IntegerRange.java +247 -0
  377. data/src/toxi/util/datatypes/IntegerSet.java +149 -0
  378. data/src/toxi/util/datatypes/ItemIndex.java +72 -0
  379. data/src/toxi/util/datatypes/SingletonRegistry.java +91 -0
  380. data/src/toxi/util/datatypes/TypedProperties.java +291 -0
  381. data/src/toxi/util/datatypes/UndirectedGraph.java +134 -0
  382. data/src/toxi/util/datatypes/UniqueItemIndex.java +223 -0
  383. data/src/toxi/util/datatypes/WeightedRandomEntry.java +76 -0
  384. data/src/toxi/util/datatypes/WeightedRandomSet.java +125 -0
  385. data/src/toxi/util/events/EventDispatcher.java +86 -0
  386. data/src/toxi/volume/AdditiveBrush.java +19 -0
  387. data/src/toxi/volume/ArrayIsoSurface.java +297 -0
  388. data/src/toxi/volume/BoxBrush.java +100 -0
  389. data/src/toxi/volume/BrushMode.java +16 -0
  390. data/src/toxi/volume/HashIsoSurface.java +354 -0
  391. data/src/toxi/volume/IsoSurface.java +59 -0
  392. data/src/toxi/volume/MarchingCubesIndex.java +312 -0
  393. data/src/toxi/volume/MeshLatticeBuilder.java +358 -0
  394. data/src/toxi/volume/MeshVoxelizer.java +216 -0
  395. data/src/toxi/volume/MultiplyBrush.java +20 -0
  396. data/src/toxi/volume/PeakBrush.java +21 -0
  397. data/src/toxi/volume/ReplaceBrush.java +19 -0
  398. data/src/toxi/volume/RoundBrush.java +113 -0
  399. data/src/toxi/volume/VolumetricBrush.java +160 -0
  400. data/src/toxi/volume/VolumetricHashMap.java +179 -0
  401. data/src/toxi/volume/VolumetricSpace.java +195 -0
  402. data/src/toxi/volume/VolumetricSpaceArray.java +214 -0
  403. data/toxiclibs.gemspec +28 -0
  404. metadata +442 -31
@@ -0,0 +1,77 @@
1
+ /*
2
+ * This library adds PovRAY export facility to toxiclibscore
3
+ * Copyright (c) 2015 Martin Prout
4
+ *
5
+ * This library is free software; you can redistribute it and/or modify it under
6
+ * the terms of the GNU Lesser General Public License as published by the Free
7
+ * Software Foundation; either version 2.1 of the License, or (at your option)
8
+ * any later version.
9
+ *
10
+ * http://creativecommons.org/licenses/LGPL/2.1/
11
+ *
12
+ * This library is distributed in the hope that it will be useful, but WITHOUT
13
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
14
+ * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
15
+ * details.
16
+ *
17
+ * You should have received a copy of the GNU Lesser General Public License
18
+ * along with this library; if not, write to the Free Software Foundation, Inc.,
19
+ * 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
20
+ */
21
+ package toxi.processing;
22
+
23
+ /**
24
+ * Rainbow colors without transparency
25
+ * @author Martin Prout
26
+ */
27
+ public enum RCOpaque {
28
+ /**
29
+ *
30
+ */
31
+ RED("r_red1", "color rgb<1.0, 0.5, 1.0>;"),
32
+ /**
33
+ *
34
+ */
35
+ RED1("r_red2", "color rgb<1.0, 0.2, 0.2>;"),
36
+ /**
37
+ *
38
+ */
39
+ ORANGE("r_orange", "color rgb<1.0, 0.5, 0.2>;"),
40
+ /**
41
+ *
42
+ */
43
+ YELLOW("r_yellow", "color rgb<1.0, 1.0, 0.2>;"),
44
+ /**
45
+ *
46
+ */
47
+ GREEN("r_green", "color rgb<0.2, 1.0, 0.2>;"),
48
+ /**
49
+ *
50
+ */
51
+ CYAN("r_cyan", "color rgb<0.2, 1.0, 1.0>;"),
52
+ /**
53
+ *
54
+ */
55
+ BLUE("r_blue", "color rgb<0.2, 0.2, 1.0>;"),
56
+ /**
57
+ *
58
+ */
59
+ INDIGO("r_indigo", "color rgb<0.5, 0.5, 1.0>;"),
60
+ /**
61
+ *
62
+ */
63
+ VIOLET("r_violet1", "color rgb<1.0, 0.5, 1.0>;"),
64
+ /**
65
+ *
66
+ */
67
+ VIOLET1("r_violet2", "color rgb<1.0, 0.5, 1.0>;");
68
+ private final String cname;
69
+ private final String declare;
70
+
71
+ RCOpaque(String cname, String declare){
72
+ this.cname = cname;
73
+ this.declare = declare;
74
+ }
75
+ String getDeclare(){return this.declare;}
76
+ String getColor(){return this.cname;}
77
+ }
@@ -0,0 +1,78 @@
1
+ /*
2
+ * This library adds PovRAY export facility to toxiclibscore
3
+ * Copyright (c) 2015 Martin Prout
4
+ *
5
+ * This library is free software; you can redistribute it and/or modify it under
6
+ * the terms of the GNU Lesser General Public License as published by the Free
7
+ * Software Foundation; either version 2.1 of the License, or (at your option)
8
+ * any later version.
9
+ *
10
+ * http://creativecommons.org/licenses/LGPL/2.1/
11
+ *
12
+ * This library is distributed in the hope that it will be useful, but WITHOUT
13
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
14
+ * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
15
+ * details.
16
+ *
17
+ * You should have received a copy of the GNU Lesser General Public License
18
+ * along with this library; if not, write to the Free Software Foundation, Inc.,
19
+ * 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
20
+ */
21
+
22
+ package toxi.processing;
23
+
24
+ /**
25
+ * Rainbow colors with a transparency
26
+ * @author Martin Prout
27
+ */
28
+ public enum RCTransp {
29
+ /**
30
+ *
31
+ */
32
+ RED("r_red1", "color rgbf<1.0, 0.5, 1.0, 1.0>;"),
33
+ /**
34
+ *
35
+ */
36
+ RED1("r_red2", "color rgbf<1.0, 0.2, 0.2, 1.0>;"),
37
+ /**
38
+ *
39
+ */
40
+ ORANGE("r_orange", "color rgbf<1.0, 0.5, 0.2, 0.8>;"),
41
+ /**
42
+ *
43
+ */
44
+ YELLOW("r_yellow", "color rgbf<1.0, 1.0, 0.2, 0.8>;"),
45
+ /**
46
+ *
47
+ */
48
+ GREEN("r_green", "color rgbf<0.2, 1.0, 0.2, 0.8>;"),
49
+ /**
50
+ *
51
+ */
52
+ CYAN("r_cyan", "color rgbf<0.2, 1.0, 1.0, 0.8>;"),
53
+ /**
54
+ *
55
+ */
56
+ BLUE("r_blue", "color rgbf<0.2, 0.2, 1.0, 0.8>;"),
57
+ /**
58
+ *
59
+ */
60
+ INDIGO("r_indigo", "color rgbf<0.5, 0.5, 1.0, 0.8>;"),
61
+ /**
62
+ *
63
+ */
64
+ VIOLET("r_violet1", "color rgbf<1.0, 0.5, 1.0, 1.0>;"),
65
+ /**
66
+ *
67
+ */
68
+ VIOLET1("r_violet2", "color rgbf<1.0, 0.5, 1.0, 0.8>;");
69
+ private final String cname;
70
+ private final String declare;
71
+
72
+ RCTransp(String cname, String declare){
73
+ this.cname = cname;
74
+ this.declare = declare;
75
+ }
76
+ String getDeclare(){return this.declare;}
77
+ String getColor(){return this.cname;}
78
+ }
@@ -0,0 +1,232 @@
1
+ /*
2
+ * This library adds PovRAY export facility to toxiclibscore
3
+ * Copyright (c) 2012 Martin Prout
4
+ *
5
+ * This library is free software; you can redistribute it and/or modify it under
6
+ * the terms of the GNU Lesser General Public License as published by the Free
7
+ * Software Foundation; either version 2.1 of the License, or (at your option)
8
+ * any later version.
9
+ *
10
+ * http://creativecommons.org/licenses/LGPL/2.1/
11
+ *
12
+ * This library is distributed in the hope that it will be useful, but WITHOUT
13
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
14
+ * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
15
+ * details.
16
+ *
17
+ * You should have received a copy of the GNU Lesser General Public License
18
+ * along with this library; if not, write to the Free Software Foundation, Inc.,
19
+ * 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
20
+ */
21
+ package toxi.processing;
22
+
23
+ /**
24
+ * Provides some textures
25
+ *
26
+ * @author Martin Prout
27
+ */
28
+ public class TextureBuilder {
29
+
30
+ static int count = 0;
31
+ static final String DPHONG = "#declare Phong1 = finish{emission 0.1"
32
+ + " phong 0.5 phong_size 10.0}";
33
+ static final String DFINISH5 = "#declare F_Glass5 = "
34
+ + "finish {\n"
35
+ + "\tspecular 0.7\n"
36
+ + "\troughness 0.001\n"
37
+ + "\tambient 0\n"
38
+ + "\tdiffuse 0\n"
39
+ + "\treflection {\n"
40
+ + "\t0.2, 1.0\n"
41
+ + "\tfresnel on\n"
42
+ + "\t}\n"
43
+ + "\tconserve_energy\n"
44
+ + "}";
45
+ static final String DMFINISHE = "#declare F_MetalE = "
46
+ + "finish {\n"
47
+ + "\tambient 0.1\n"
48
+ + "\tbrilliance 6\n"
49
+ + "\tdiffuse 0.7\n"
50
+ + "\tmetallic\n"
51
+ + "\tspecular 0.80\n"
52
+ + "\troughness 1/120\n"
53
+ + "\treflection 0.8\n"
54
+ + "}";
55
+
56
+
57
+
58
+ /**
59
+ * pink marble
60
+ */
61
+ static final String MARBLE_TEXTURE = "#declare T_Grnt28 = "
62
+ + "texture {\n"
63
+ + "pigment\n"
64
+ + "{marble\n"
65
+ + " turbulence 0.7\n"
66
+ + " color_map\n"
67
+ + "{[0.000, 0.155 color rgbt <0.686, 0.235, 0.282, 0.000>\n"
68
+ + " color rgbt <0.686, 0.235, 0.282, 0.000>]\n"
69
+ + " [0.155, 0.328 color rgbt <0.686, 0.235, 0.282, 0.000>\n"
70
+ + " color rgbt <0.494, 0.243, 0.294, 0.000>]\n"
71
+ + " [0.328, 0.474 color rgbt <0.494, 0.243, 0.294, 0.000>\n"
72
+ + " color rgbt <0.769, 0.329, 0.373, 0.000>]\n"
73
+ + " [0.474, 0.647 color rgbt <0.769, 0.329, 0.373, 0.000>\n"
74
+ + " color rgbt <0.769, 0.329, 0.373, 0.000>]\n"
75
+ + " [0.647, 0.810 color rgbt <0.769, 0.329, 0.373, 0.000>\n"
76
+ + " color rgbt <0.686, 0.235, 0.282, 0.000>]\n"
77
+ + " [0.810, 0.922 color rgbt <0.686, 0.235, 0.282, 0.000>\n"
78
+ + " color rgbt <0.792, 0.388, 0.427, 0.000>]\n"
79
+ + " [0.922, 1.001 color rgbt <0.792, 0.388, 0.427, 0.000>\n"
80
+ + " color rgbt <0.686, 0.235, 0.282, 0.000>]\n"
81
+ + " }\n"
82
+ + "}\n"
83
+ + "finish {\n"
84
+ + "crand 0.03\n"
85
+ + "}\n"
86
+ + " }\n" ;
87
+
88
+ static final String FINISH5 = "finish{ F_Glass5 }";
89
+ static final String MFINISHE = "finish{ F_MetalE }";
90
+ static final String PHONG = "finish{ Phong1 }";
91
+ static final String MIRROR = "finish{ reflection 1}";
92
+ static final String RED_MARBLE = "texture{ T_Grnt28 }";
93
+ /**
94
+ *
95
+ * @return random rainbow color (with transparency)
96
+ */
97
+ static StringBuilder getRandRCTrans() {
98
+ RCTransp[] vals = RCTransp.values();
99
+ StringBuilder rainbowColor = new StringBuilder(100);
100
+ rainbowColor.append("pigment{ ");
101
+ rainbowColor.append(vals[(int) Math.round((Math.random() * 9))].getColor());
102
+ return rainbowColor.append(" }");
103
+ }
104
+
105
+
106
+
107
+ /**
108
+ *
109
+ * @return transparent rainbow color (sequence)
110
+ */
111
+ static StringBuilder getRCTrans(int modulus) {
112
+ RCTransp[] vals = RCTransp.values();
113
+ StringBuilder rainbowColor = new StringBuilder(100);
114
+ rainbowColor.append("pigment{ ");
115
+ rainbowColor.append(vals[count % modulus].getColor());
116
+ count++;
117
+ return rainbowColor.append(" }");
118
+ }
119
+
120
+ /**
121
+ *
122
+ * @return transparent rainbow color declaration
123
+ */
124
+ static StringBuilder declareRCTrans() {
125
+ StringBuilder declare = new StringBuilder(200);
126
+ for (RCTransp rc : RCTransp.values()) {
127
+ declare.append("#declare ");
128
+ declare.append(rc.getColor());
129
+ declare.append('=');
130
+ declare.append(rc.getDeclare());
131
+ declare.append('\n');
132
+ }
133
+ return declare;
134
+ }
135
+
136
+
137
+ /**
138
+ *
139
+ * @return pink marble declaration
140
+ */
141
+ static String declareMarble() {
142
+ return MARBLE_TEXTURE;
143
+ }
144
+ /**
145
+ *
146
+ * @return opaque rainbow color (sequence)
147
+ */
148
+ static StringBuilder getRCOpaque(int modulus) {
149
+ RCOpaque[] vals = RCOpaque.values();
150
+ StringBuilder rainbowColor = new StringBuilder(100);
151
+ rainbowColor.append("pigment{ ");
152
+ rainbowColor.append(vals[count % modulus].getColor());
153
+ count++;
154
+ return rainbowColor.append(" }");
155
+ }
156
+
157
+ /**
158
+ *
159
+ * @return White
160
+ */
161
+ static String getWhite() {
162
+ return "pigment{ color rgb<1, 1, 1> }";
163
+ }
164
+
165
+ /**
166
+ *
167
+ * @return Black
168
+ */
169
+ static String getBlack() {
170
+
171
+ return "pigment{ color rgb <0, 0, 0> }";
172
+ }
173
+
174
+ /**
175
+ *
176
+ * @return Chrome
177
+ */
178
+ static StringBuilder getChrome() {
179
+ StringBuilder col = new StringBuilder();
180
+ col.append("texture{\npigment {color rgb <0.95, 0.95, 0.95>}\n");
181
+ col.append(TextureBuilder.MFINISHE);
182
+ return col.append("\n}\n");
183
+ }
184
+
185
+ /**
186
+ *
187
+ * @return Pink Marble
188
+ */
189
+ static StringBuilder getMarble() {
190
+ StringBuilder col = new StringBuilder(TextureBuilder.RED_MARBLE);
191
+ return col;
192
+ }
193
+
194
+ /**
195
+ *
196
+ * @return TwoTone
197
+ */
198
+ static String getTwoTone() {
199
+ String col;
200
+ if (count % 2 == 0) {
201
+ col = getWhite();
202
+ } else {
203
+ col = "pigment{ color rgbf<0, 0, 0, 0.5> }";
204
+ }
205
+ count++;
206
+ return col;
207
+ }
208
+
209
+ /**
210
+ *
211
+ * @return Red
212
+ */
213
+ static String getRed() {
214
+ return "pigment{ color rgb<1, 0, 0> }";
215
+ }
216
+
217
+ /**
218
+ *
219
+ * @return opaque rainbow color declaration
220
+ */
221
+ static StringBuilder declareRCOpaque() {
222
+ StringBuilder declare = new StringBuilder(200);
223
+ for (RCOpaque rc : RCOpaque.values()) {
224
+ declare.append("#declare ");
225
+ declare.append(rc.getColor());
226
+ declare.append('=');
227
+ declare.append(rc.getDeclare());
228
+ declare.append('\n');
229
+ }
230
+ return declare;
231
+ }
232
+ }
@@ -0,0 +1,110 @@
1
+ /*
2
+ * This library adds PovRAY export facility to toxiclibscore
3
+ * Copyright (c) 2015 Martin Prout
4
+ *
5
+ * This library is free software; you can redistribute it and/or modify it under
6
+ * the terms of the GNU Lesser General Public License as published by the Free
7
+ * Software Foundation; either version 2.1 of the License, or (at your option)
8
+ * any later version.
9
+ *
10
+ * http://creativecommons.org/licenses/LGPL/2.1/
11
+ *
12
+ * This library is distributed in the hope that it will be useful, but WITHOUT
13
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
14
+ * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
15
+ * details.
16
+ *
17
+ * You should have received a copy of the GNU Lesser General Public License
18
+ * along with this library; if not, write to the Free Software Foundation, Inc.,
19
+ * 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
20
+ */
21
+
22
+ package toxi.processing;
23
+
24
+ /**
25
+ * Used to set PovRAY texture options
26
+ * @author Martin Prout
27
+ */
28
+ public enum Textures {
29
+
30
+ /**
31
+ * Original geometry output, no texture
32
+ */
33
+ RAW("Raw geometry"),
34
+
35
+ /**
36
+ * Geometry output, chrome texture
37
+ */
38
+ CHROME("Shiny Metal"),
39
+
40
+
41
+ /**
42
+ * Geometry output, with glass texture
43
+ * rainbow colors
44
+ */
45
+ GLASS("Glass texture"),
46
+
47
+ /**
48
+ * Geometry output, with marble texture
49
+ * xlassic marble
50
+ */
51
+ METAL("Marble texture"),
52
+
53
+ /**
54
+ * Geometry output, with marble texture
55
+ * rainbow colors
56
+ */
57
+ MARBLE("Marble texture"),
58
+
59
+
60
+ /**
61
+ * Original geometry output, phong texture
62
+ */
63
+ RED("mono color phong texture"),
64
+
65
+ /**
66
+ * Original geometry output, phong texture
67
+ */
68
+ WHITE("mono color phong texture"),
69
+
70
+ /**
71
+ * Geometry output, with phong texture
72
+ * rainbow colors
73
+ */
74
+ PHONG("Simple phong texture"),
75
+
76
+ /**
77
+ * Geometry output, with phong texture
78
+ * random colors
79
+ */
80
+ RANDOM("Random glass texture"),
81
+
82
+ /**
83
+ * Geometry output, with phong texture
84
+ * and alternate color (B&W)
85
+ */
86
+ TWOTONE("Alternate B&W texture"),
87
+
88
+ /**
89
+ * Geometry output, with mirror
90
+ * finish
91
+ */
92
+ MIRROR("Perfect mirror");
93
+
94
+ /**
95
+ * Description String
96
+ */
97
+ public String description;
98
+
99
+ Textures(String description) {
100
+ this.description = description;
101
+ }
102
+
103
+ /**
104
+ * Gives access to description String
105
+ * @return
106
+ */
107
+ public String description() {
108
+ return this.description;
109
+ }
110
+ }