toxiclibs 1.0.0 → 2.0.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 (368) hide show
  1. checksums.yaml +4 -4
  2. data/.mvn/extensions.xml +1 -1
  3. data/.travis.yml +3 -4
  4. data/CHANGELOG.md +3 -0
  5. data/README.md +2 -2
  6. data/Rakefile +0 -1
  7. data/examples/attract_repel/attractor.rb +1 -1
  8. data/examples/attract_repel/particle.rb +1 -1
  9. data/examples/boolean_shapes.rb +9 -5
  10. data/examples/force_directed/node.rb +1 -1
  11. data/examples/inflate_mesh.rb +1 -1
  12. data/examples/model_align.rb +1 -1
  13. data/examples/physics_type.rb +1 -1
  14. data/examples/povmesh/ftest.rb +3 -3
  15. data/examples/toxiclibs_color_theme.rb +91 -0
  16. data/lib/toxiclibs.rb +52 -37
  17. data/lib/toxiclibs/version.rb +1 -1
  18. data/pom.rb +22 -26
  19. data/pom.xml +42 -64
  20. data/src/{toxi → main/java/toxi}/color/AccessCriteria.java +0 -0
  21. data/src/{toxi → main/java/toxi}/color/AlphaAccessor.java +0 -0
  22. data/src/{toxi → main/java/toxi}/color/CMYKAccessor.java +0 -0
  23. data/src/{toxi → main/java/toxi}/color/CMYKDistanceProxy.java +0 -0
  24. data/src/{toxi → main/java/toxi}/color/ColorGradient.java +0 -0
  25. data/src/{toxi → main/java/toxi}/color/ColorList.java +2 -4
  26. data/src/{toxi → main/java/toxi}/color/ColorRange.java +0 -0
  27. data/src/{toxi → main/java/toxi}/color/ColorTheme.java +0 -0
  28. data/src/{toxi → main/java/toxi}/color/DistanceProxy.java +0 -0
  29. data/src/{toxi → main/java/toxi}/color/HSVAccessor.java +0 -0
  30. data/src/{toxi → main/java/toxi}/color/HSVDistanceProxy.java +0 -0
  31. data/src/{toxi → main/java/toxi}/color/HistEntry.java +0 -0
  32. data/src/{toxi → main/java/toxi}/color/Histogram.java +0 -0
  33. data/src/{toxi → main/java/toxi}/color/Hue.java +0 -0
  34. data/src/{toxi → main/java/toxi}/color/LuminanceAccessor.java +0 -0
  35. data/src/{toxi → main/java/toxi}/color/NamedColor.java +0 -0
  36. data/src/{toxi → main/java/toxi}/color/ProximityComparator.java +0 -0
  37. data/src/{toxi → main/java/toxi}/color/RGBAccessor.java +0 -0
  38. data/src/{toxi → main/java/toxi}/color/RGBDistanceProxy.java +0 -0
  39. data/src/{toxi → main/java/toxi}/color/ReadonlyTColor.java +0 -0
  40. data/src/{toxi → main/java/toxi}/color/TColor.java +0 -0
  41. data/src/{toxi → main/java/toxi}/color/TColorAdapter.java +4 -4
  42. data/src/{toxi → main/java/toxi}/color/ToneMap.java +0 -0
  43. data/src/{toxi → main/java/toxi}/color/theory/AnalogousStrategy.java +0 -0
  44. data/src/{toxi → main/java/toxi}/color/theory/ColorTheoryRegistry.java +0 -0
  45. data/src/{toxi → main/java/toxi}/color/theory/ColorTheoryStrategy.java +0 -0
  46. data/src/{toxi → main/java/toxi}/color/theory/ComplementaryStrategy.java +0 -0
  47. data/src/{toxi → main/java/toxi}/color/theory/CompoundTheoryStrategy.java +0 -0
  48. data/src/{toxi → main/java/toxi}/color/theory/LeftSplitComplementaryStrategy.java +0 -0
  49. data/src/{toxi → main/java/toxi}/color/theory/MonochromeTheoryStrategy.java +0 -0
  50. data/src/{toxi → main/java/toxi}/color/theory/RightSplitComplementaryStrategy.java +0 -0
  51. data/src/{toxi → main/java/toxi}/color/theory/SingleComplementStrategy.java +0 -0
  52. data/src/{toxi → main/java/toxi}/color/theory/SplitComplementaryStrategy.java +0 -0
  53. data/src/{toxi → main/java/toxi}/color/theory/TetradTheoryStrategy.java +0 -0
  54. data/src/{toxi → main/java/toxi}/color/theory/TriadTheoryStrategy.java +0 -0
  55. data/src/{toxi → main/java/toxi}/data/csv/CSVAdapter.java +0 -0
  56. data/src/{toxi → main/java/toxi}/data/csv/CSVFieldMapper.java +0 -0
  57. data/src/{toxi → main/java/toxi}/data/csv/CSVListener.java +0 -0
  58. data/src/{toxi → main/java/toxi}/data/csv/CSVParser.java +0 -0
  59. data/src/{toxi → main/java/toxi}/data/feeds/AtomAuthor.java +2 -2
  60. data/src/{toxi → main/java/toxi}/data/feeds/AtomContent.java +3 -4
  61. data/src/{toxi → main/java/toxi}/data/feeds/AtomEntry.java +9 -13
  62. data/src/main/java/toxi/data/feeds/AtomFeed.java +91 -0
  63. data/src/{toxi → main/java/toxi}/data/feeds/AtomLink.java +3 -2
  64. data/src/{toxi → main/java/toxi}/data/feeds/RSSChannel.java +10 -11
  65. data/src/{toxi → main/java/toxi}/data/feeds/RSSEnclosure.java +3 -3
  66. data/src/{toxi → main/java/toxi}/data/feeds/RSSItem.java +11 -13
  67. data/src/{toxi → main/java/toxi}/data/feeds/util/EntityStripper.java +0 -0
  68. data/src/{toxi → main/java/toxi}/data/feeds/util/Iso8601DateAdapter.java +6 -7
  69. data/src/{toxi → main/java/toxi}/data/feeds/util/Rfc822DateAdapter.java +5 -6
  70. data/src/{toxi → main/java/toxi}/geom/AABB.java +8 -9
  71. data/src/{toxi → main/java/toxi}/geom/Axis3D.java +0 -0
  72. data/src/{toxi → main/java/toxi}/geom/AxisAlignedCylinder.java +0 -0
  73. data/src/{toxi → main/java/toxi}/geom/BernsteinPolynomial.java +0 -0
  74. data/src/{toxi → main/java/toxi}/geom/BezierCurve2D.java +0 -0
  75. data/src/{toxi → main/java/toxi}/geom/BezierCurve3D.java +0 -0
  76. data/src/{toxi → main/java/toxi}/geom/BooleanShapeBuilder.java +0 -0
  77. data/src/{toxi → main/java/toxi}/geom/BoxIntersector.java +0 -0
  78. data/src/{toxi → main/java/toxi}/geom/Circle.java +2 -2
  79. data/src/{toxi → main/java/toxi}/geom/CircleIntersector.java +0 -0
  80. data/src/{toxi → main/java/toxi}/geom/Cone.java +0 -0
  81. data/src/{toxi → main/java/toxi}/geom/ConvexPolygonClipper.java +0 -0
  82. data/src/{toxi → main/java/toxi}/geom/CoordinateExtractor.java +0 -0
  83. data/src/{toxi → main/java/toxi}/geom/Ellipse.java +0 -0
  84. data/src/{toxi → main/java/toxi}/geom/GMatrix.java +0 -0
  85. data/src/{toxi → main/java/toxi}/geom/GVector.java +0 -0
  86. data/src/{toxi → main/java/toxi}/geom/GlobalGridTesselator.java +0 -0
  87. data/src/{toxi → main/java/toxi}/geom/GridTesselator.java +0 -0
  88. data/src/{toxi → main/java/toxi}/geom/Intersector2D.java +0 -0
  89. data/src/{toxi → main/java/toxi}/geom/Intersector3D.java +0 -0
  90. data/src/{toxi → main/java/toxi}/geom/IsectData2D.java +0 -0
  91. data/src/{toxi → main/java/toxi}/geom/IsectData3D.java +0 -0
  92. data/src/{toxi → main/java/toxi}/geom/Line2D.java +1 -2
  93. data/src/{toxi → main/java/toxi}/geom/Line3D.java +1 -2
  94. data/src/{toxi → main/java/toxi}/geom/LineStrip2D.java +2 -2
  95. data/src/{toxi → main/java/toxi}/geom/LineStrip3D.java +2 -2
  96. data/src/{toxi → main/java/toxi}/geom/LocalGridTesselator.java +0 -0
  97. data/src/{toxi → main/java/toxi}/geom/Matrix3d.java +0 -0
  98. data/src/{toxi → main/java/toxi}/geom/Matrix4f.java +0 -0
  99. data/src/{toxi → main/java/toxi}/geom/Matrix4x4.java +0 -0
  100. data/src/{toxi → main/java/toxi}/geom/MatrixSizeException.java +0 -0
  101. data/src/{toxi → main/java/toxi}/geom/OctreeVisitor.java +0 -0
  102. data/src/{toxi → main/java/toxi}/geom/Origin3D.java +12 -6
  103. data/src/{toxi → main/java/toxi}/geom/Plane.java +3 -5
  104. data/src/{toxi → main/java/toxi}/geom/PlaneIntersector.java +0 -0
  105. data/src/{toxi → main/java/toxi}/geom/PointCloud3D.java +15 -12
  106. data/src/{toxi → main/java/toxi}/geom/PointOctree.java +0 -0
  107. data/src/{toxi → main/java/toxi}/geom/PointQuadtree.java +0 -0
  108. data/src/{toxi → main/java/toxi}/geom/Polygon2D.java +34 -45
  109. data/src/{toxi → main/java/toxi}/geom/PolygonClipper2D.java +0 -0
  110. data/src/{toxi → main/java/toxi}/geom/PolygonTesselator.java +0 -0
  111. data/src/{toxi → main/java/toxi}/geom/QuadtreeVisitor.java +0 -0
  112. data/src/{toxi → main/java/toxi}/geom/Quaternion.java +3 -5
  113. data/src/{toxi → main/java/toxi}/geom/Ray2D.java +4 -5
  114. data/src/{toxi → main/java/toxi}/geom/Ray3D.java +3 -5
  115. data/src/{toxi → main/java/toxi}/geom/Ray3DIntersector.java +0 -0
  116. data/src/{toxi → main/java/toxi}/geom/ReadonlyVec2D.java +0 -0
  117. data/src/{toxi → main/java/toxi}/geom/ReadonlyVec3D.java +0 -0
  118. data/src/{toxi → main/java/toxi}/geom/ReadonlyVec4D.java +0 -0
  119. data/src/{toxi → main/java/toxi}/geom/Rect.java +3 -5
  120. data/src/{toxi → main/java/toxi}/geom/Reflector3D.java +0 -0
  121. data/src/{toxi → main/java/toxi}/geom/Shape2D.java +0 -0
  122. data/src/{toxi → main/java/toxi}/geom/Shape3D.java +0 -0
  123. data/src/{toxi → main/java/toxi}/geom/SingularMatrixException.java +0 -0
  124. data/src/{toxi → main/java/toxi}/geom/SpatialBins.java +0 -0
  125. data/src/{toxi → main/java/toxi}/geom/SpatialIndex.java +0 -0
  126. data/src/{toxi → main/java/toxi}/geom/Sphere.java +3 -5
  127. data/src/{toxi → main/java/toxi}/geom/SphereIntersectorReflector.java +0 -0
  128. data/src/{toxi → main/java/toxi}/geom/Spline2D.java +12 -16
  129. data/src/{toxi → main/java/toxi}/geom/Spline3D.java +12 -16
  130. data/src/{toxi → main/java/toxi}/geom/SutherlandHodgemanClipper.java +0 -0
  131. data/src/{toxi → main/java/toxi}/geom/Triangle2D.java +4 -7
  132. data/src/{toxi → main/java/toxi}/geom/Triangle3D.java +5 -8
  133. data/src/{toxi → main/java/toxi}/geom/TriangleIntersector.java +0 -0
  134. data/src/{toxi → main/java/toxi}/geom/Vec2D.java +3 -3
  135. data/src/{toxi → main/java/toxi}/geom/Vec3D.java +4 -4
  136. data/src/{toxi → main/java/toxi}/geom/Vec4D.java +5 -5
  137. data/src/{toxi → main/java/toxi}/geom/VecMathUtil.java +0 -0
  138. data/src/{toxi → main/java/toxi}/geom/XAxisCylinder.java +0 -0
  139. data/src/{toxi → main/java/toxi}/geom/YAxisCylinder.java +0 -0
  140. data/src/{toxi → main/java/toxi}/geom/ZAxisCylinder.java +0 -0
  141. data/src/{toxi → main/java/toxi}/geom/mesh/BezierPatch.java +0 -0
  142. data/src/{toxi → main/java/toxi}/geom/mesh/BoxSelector.java +0 -0
  143. data/src/{toxi → main/java/toxi}/geom/mesh/DefaultSTLColorModel.java +0 -0
  144. data/src/{toxi → main/java/toxi}/geom/mesh/DefaultSelector.java +0 -0
  145. data/src/{toxi → main/java/toxi}/geom/mesh/Face.java +0 -0
  146. data/src/{toxi → main/java/toxi}/geom/mesh/LaplacianSmooth.java +0 -0
  147. data/src/{toxi → main/java/toxi}/geom/mesh/MaterialiseSTLColorModel.java +0 -0
  148. data/src/{toxi → main/java/toxi}/geom/mesh/Mesh3D.java +0 -0
  149. data/src/{toxi → main/java/toxi}/geom/mesh/MeshIntersector.java +0 -0
  150. data/src/{toxi → main/java/toxi}/geom/mesh/OBJWriter.java +0 -0
  151. data/src/{toxi → main/java/toxi}/geom/mesh/PLYWriter.java +0 -0
  152. data/src/{toxi → main/java/toxi}/geom/mesh/PlaneSelector.java +0 -0
  153. data/src/{toxi → main/java/toxi}/geom/mesh/STLColorModel.java +0 -0
  154. data/src/{toxi → main/java/toxi}/geom/mesh/STLReader.java +0 -0
  155. data/src/{toxi → main/java/toxi}/geom/mesh/STLWriter.java +0 -0
  156. data/src/{toxi → main/java/toxi}/geom/mesh/SphereFunction.java +0 -0
  157. data/src/{toxi → main/java/toxi}/geom/mesh/SphericalHarmonics.java +0 -0
  158. data/src/{toxi → main/java/toxi}/geom/mesh/SuperEllipsoid.java +0 -0
  159. data/src/{toxi → main/java/toxi}/geom/mesh/SurfaceFunction.java +0 -0
  160. data/src/{toxi → main/java/toxi}/geom/mesh/SurfaceMeshBuilder.java +0 -0
  161. data/src/{toxi → main/java/toxi}/geom/mesh/Terrain.java +0 -0
  162. data/src/{toxi → main/java/toxi}/geom/mesh/TriangleMesh.java +0 -0
  163. data/src/{toxi → main/java/toxi}/geom/mesh/Vertex.java +0 -0
  164. data/src/{toxi → main/java/toxi}/geom/mesh/VertexSelector.java +0 -0
  165. data/src/{toxi → main/java/toxi}/geom/mesh/WEFace.java +0 -0
  166. data/src/{toxi → main/java/toxi}/geom/mesh/WEMeshFilterStrategy.java +0 -0
  167. data/src/{toxi → main/java/toxi}/geom/mesh/WETriangleMesh.java +0 -0
  168. data/src/{toxi → main/java/toxi}/geom/mesh/WEVertex.java +0 -0
  169. data/src/{toxi → main/java/toxi}/geom/mesh/WingedEdge.java +2 -2
  170. data/src/{toxi → main/java/toxi}/geom/mesh/subdiv/CentroidSubdiv.java +0 -0
  171. data/src/{toxi → main/java/toxi}/geom/mesh/subdiv/DisplacementSubdivision.java +0 -0
  172. data/src/{toxi → main/java/toxi}/geom/mesh/subdiv/DualDisplacementSubdivision.java +0 -0
  173. data/src/{toxi → main/java/toxi}/geom/mesh/subdiv/DualSubdivision.java +0 -0
  174. data/src/{toxi → main/java/toxi}/geom/mesh/subdiv/EdgeLengthComparator.java +0 -0
  175. data/src/{toxi → main/java/toxi}/geom/mesh/subdiv/FaceCountComparator.java +0 -0
  176. data/src/{toxi → main/java/toxi}/geom/mesh/subdiv/MidpointDisplacementSubdivision.java +0 -0
  177. data/src/{toxi → main/java/toxi}/geom/mesh/subdiv/MidpointSubdiv.java +0 -0
  178. data/src/{toxi → main/java/toxi}/geom/mesh/subdiv/MidpointSubdivision.java +0 -0
  179. data/src/{toxi → main/java/toxi}/geom/mesh/subdiv/NewSubdivStrategy.java +0 -0
  180. data/src/{toxi → main/java/toxi}/geom/mesh/subdiv/NormalDisplacementSubdivision.java +0 -0
  181. data/src/{toxi → main/java/toxi}/geom/mesh/subdiv/SubdivisionStrategy.java +0 -0
  182. data/src/{toxi → main/java/toxi}/geom/mesh/subdiv/TriSubdivision.java +0 -0
  183. data/src/{toxi → main/java/toxi}/geom/mesh2d/DelaunayTriangle.java +0 -0
  184. data/src/{toxi → main/java/toxi}/geom/mesh2d/DelaunayTriangulation.java +5 -7
  185. data/src/{toxi → main/java/toxi}/geom/mesh2d/DelaunayVertex.java +0 -0
  186. data/src/{toxi → main/java/toxi}/geom/mesh2d/Voronoi.java +0 -0
  187. data/src/{toxi → main/java/toxi}/geom/nurbs/BasicNurbsCurve.java +0 -0
  188. data/src/{toxi → main/java/toxi}/geom/nurbs/BasicNurbsSurface.java +0 -0
  189. data/src/{toxi → main/java/toxi}/geom/nurbs/ControlNet.java +0 -0
  190. data/src/{toxi → main/java/toxi}/geom/nurbs/CurveCreator.java +0 -0
  191. data/src/{toxi → main/java/toxi}/geom/nurbs/CurveUtils.java +0 -0
  192. data/src/{toxi → main/java/toxi}/geom/nurbs/InterpolationException.java +0 -0
  193. data/src/{toxi → main/java/toxi}/geom/nurbs/KnotVector.java +0 -0
  194. data/src/{toxi → main/java/toxi}/geom/nurbs/NurbsCreator.java +2 -2
  195. data/src/{toxi → main/java/toxi}/geom/nurbs/NurbsCurve.java +0 -0
  196. data/src/{toxi → main/java/toxi}/geom/nurbs/NurbsMeshCreator.java +0 -0
  197. data/src/{toxi → main/java/toxi}/geom/nurbs/NurbsSurface.java +0 -0
  198. data/src/{toxi → main/java/toxi}/image/util/Filter8bit.java +0 -0
  199. data/src/{toxi → main/java/toxi}/image/util/TiledFrameExporter.java +0 -0
  200. data/src/{toxi → main/java/toxi}/math/BezierInterpolation.java +0 -0
  201. data/src/{toxi → main/java/toxi}/math/CircularInterpolation.java +0 -0
  202. data/src/{toxi → main/java/toxi}/math/CosineInterpolation.java +0 -0
  203. data/src/{toxi → main/java/toxi}/math/DecimatedInterpolation.java +0 -0
  204. data/src/{toxi → main/java/toxi}/math/ExponentialInterpolation.java +0 -0
  205. data/src/{toxi → main/java/toxi}/math/InterpolateStrategy.java +0 -0
  206. data/src/{toxi → main/java/toxi}/math/Interpolation2D.java +0 -0
  207. data/src/{toxi → main/java/toxi}/math/LinearInterpolation.java +0 -0
  208. data/src/{toxi → main/java/toxi}/math/MathUtils.java +0 -0
  209. data/src/{toxi → main/java/toxi}/math/NonLinearScaleMap.java +0 -0
  210. data/src/{toxi → main/java/toxi}/math/ScaleMap.java +0 -0
  211. data/src/{toxi → main/java/toxi}/math/SigmoidInterpolation.java +0 -0
  212. data/src/{toxi → main/java/toxi}/math/SinCosLUT.java +0 -0
  213. data/src/{toxi → main/java/toxi}/math/ThresholdInterpolation.java +0 -0
  214. data/src/{toxi → main/java/toxi}/math/ZoomLensInterpolation.java +0 -0
  215. data/src/{toxi → main/java/toxi}/math/conversion/UnitTranslator.java +0 -0
  216. data/src/{toxi → main/java/toxi}/math/noise/PerlinNoise.java +0 -0
  217. data/src/{toxi → main/java/toxi}/math/noise/SimplexNoise.java +0 -0
  218. data/src/{toxi → main/java/toxi}/math/waves/AMFMSineWave.java +0 -0
  219. data/src/{toxi → main/java/toxi}/math/waves/AbstractWave.java +0 -0
  220. data/src/{toxi → main/java/toxi}/math/waves/ConstantWave.java +0 -0
  221. data/src/{toxi → main/java/toxi}/math/waves/FMHarmonicSquareWave.java +0 -0
  222. data/src/{toxi → main/java/toxi}/math/waves/FMSawtoothWave.java +0 -0
  223. data/src/{toxi → main/java/toxi}/math/waves/FMSineWave.java +0 -0
  224. data/src/{toxi → main/java/toxi}/math/waves/FMSquareWave.java +0 -0
  225. data/src/{toxi → main/java/toxi}/math/waves/FMTriangleWave.java +0 -0
  226. data/src/{toxi → main/java/toxi}/math/waves/SineWave.java +2 -2
  227. data/src/{toxi → main/java/toxi}/math/waves/Wave2D.java +0 -0
  228. data/src/{toxi → main/java/toxi}/math/waves/WaveState.java +0 -0
  229. data/src/{toxi → main/java/toxi}/music/scale/AbstractScale.java +0 -0
  230. data/src/{toxi → main/java/toxi}/music/scale/GenericScale.java +0 -0
  231. data/src/{toxi → main/java/toxi}/music/scale/MajorScale.java +0 -0
  232. data/src/{toxi → main/java/toxi}/newmesh/AttributedEdge.java +0 -0
  233. data/src/{toxi → main/java/toxi}/newmesh/AttributedFace.java +0 -0
  234. data/src/{toxi → main/java/toxi}/newmesh/IndexedTriangleMesh.java +70 -69
  235. data/src/{toxi → main/java/toxi}/newmesh/MeshAttributeCompiler.java +0 -0
  236. data/src/{toxi → main/java/toxi}/newmesh/MeshFaceNormalCompiler.java +0 -0
  237. data/src/{toxi → main/java/toxi}/newmesh/MeshUVCompiler.java +0 -0
  238. data/src/{toxi → main/java/toxi}/newmesh/MeshVertexColorCompiler.java +0 -0
  239. data/src/{toxi → main/java/toxi}/newmesh/MeshVertexCompiler.java +0 -0
  240. data/src/{toxi → main/java/toxi}/newmesh/MeshVertexNormalCompiler.java +0 -0
  241. data/src/{toxi → main/java/toxi}/newmesh/SpatialIndex.java +0 -0
  242. data/src/{toxi → main/java/toxi}/physics2d/ParticlePath2D.java +4 -3
  243. data/src/{toxi → main/java/toxi}/physics2d/ParticleString2D.java +2 -2
  244. data/src/{toxi → main/java/toxi}/physics2d/PullBackSpring2D.java +0 -0
  245. data/src/{toxi → main/java/toxi}/physics2d/VerletConstrainedSpring2D.java +0 -0
  246. data/src/{toxi → main/java/toxi}/physics2d/VerletMinDistanceSpring2D.java +0 -0
  247. data/src/main/java/toxi/physics2d/VerletParticle2D.java +449 -0
  248. data/src/main/java/toxi/physics2d/VerletPhysics2D.java +440 -0
  249. data/src/{toxi → main/java/toxi}/physics2d/VerletSpring2D.java +0 -0
  250. data/src/main/java/toxi/physics2d/behaviors/AttractionBehavior2D.java +211 -0
  251. data/src/{toxi → main/java/toxi}/physics2d/behaviors/ConstantForceBehavior2D.java +0 -0
  252. data/src/{toxi → main/java/toxi}/physics2d/behaviors/GravityBehavior2D.java +0 -0
  253. data/src/{toxi → main/java/toxi}/physics2d/behaviors/ParticleBehavior2D.java +0 -0
  254. data/src/{toxi → main/java/toxi}/physics2d/constraints/AngularConstraint.java +0 -0
  255. data/src/{toxi → main/java/toxi}/physics2d/constraints/AxisConstraint.java +0 -0
  256. data/src/{toxi → main/java/toxi}/physics2d/constraints/CircularConstraint.java +0 -0
  257. data/src/{toxi → main/java/toxi}/physics2d/constraints/MaxConstraint.java +0 -0
  258. data/src/{toxi → main/java/toxi}/physics2d/constraints/MinConstraint.java +0 -0
  259. data/src/{toxi → main/java/toxi}/physics2d/constraints/ParticleConstraint2D.java +0 -0
  260. data/src/{toxi → main/java/toxi}/physics2d/constraints/PolygonConstraint.java +0 -0
  261. data/src/{toxi → main/java/toxi}/physics2d/constraints/RectConstraint.java +0 -0
  262. data/src/{toxi → main/java/toxi}/physics3d/ParticlePath3D.java +4 -3
  263. data/src/{toxi → main/java/toxi}/physics3d/ParticleString3D.java +2 -2
  264. data/src/{toxi → main/java/toxi}/physics3d/PullBackSpring3D.java +0 -0
  265. data/src/{toxi → main/java/toxi}/physics3d/VerletConstrainedSpring3D.java +0 -0
  266. data/src/{toxi → main/java/toxi}/physics3d/VerletMinDistanceSpring3D.java +0 -0
  267. data/src/main/java/toxi/physics3d/VerletParticle3D.java +377 -0
  268. data/src/{toxi → main/java/toxi}/physics3d/VerletPhysics3D.java +0 -0
  269. data/src/{toxi → main/java/toxi}/physics3d/VerletSpring3D.java +0 -0
  270. data/src/{toxi → main/java/toxi}/physics3d/behaviors/AttractionBehavior3D.java +0 -0
  271. data/src/{toxi → main/java/toxi}/physics3d/behaviors/ConstantForceBehavior3D.java +0 -0
  272. data/src/{toxi → main/java/toxi}/physics3d/behaviors/GravityBehavior3D.java +0 -0
  273. data/src/{toxi → main/java/toxi}/physics3d/behaviors/ParticleBehavior3D.java +0 -0
  274. data/src/{toxi → main/java/toxi}/physics3d/constraints/AxisConstraint.java +1 -0
  275. data/src/{toxi → main/java/toxi}/physics3d/constraints/BoxConstraint.java +0 -0
  276. data/src/{toxi → main/java/toxi}/physics3d/constraints/CylinderConstraint.java +1 -0
  277. data/src/{toxi → main/java/toxi}/physics3d/constraints/MaxConstraint.java +1 -0
  278. data/src/{toxi → main/java/toxi}/physics3d/constraints/MinConstraint.java +1 -0
  279. data/src/{toxi → main/java/toxi}/physics3d/constraints/ParticleConstraint3D.java +0 -0
  280. data/src/{toxi → main/java/toxi}/physics3d/constraints/PlaneConstraint.java +0 -0
  281. data/src/{toxi → main/java/toxi}/physics3d/constraints/SoftBoxConstraint.java +38 -38
  282. data/src/{toxi → main/java/toxi}/physics3d/constraints/SphereConstraint.java +1 -0
  283. data/src/{toxi → main/java/toxi}/processing/ArrowModifier.java +0 -0
  284. data/src/{toxi → main/java/toxi}/processing/DashedLineModifier.java +0 -0
  285. data/src/{toxi → main/java/toxi}/processing/DeltaOrientationMapper.java +0 -0
  286. data/src/{toxi → main/java/toxi}/processing/Line2DRenderModifier.java +0 -0
  287. data/src/{toxi → main/java/toxi}/processing/MeshToVBO.java +0 -0
  288. data/src/{toxi → main/java/toxi}/processing/NormalMapper.java +0 -0
  289. data/src/{toxi → main/java/toxi}/processing/POVInterface.java +0 -0
  290. data/src/{toxi → main/java/toxi}/processing/POVMesh.java +0 -0
  291. data/src/{toxi → main/java/toxi}/processing/POVWriter.java +0 -0
  292. data/src/{toxi → main/java/toxi}/processing/RCOpaque.java +0 -0
  293. data/src/{toxi → main/java/toxi}/processing/RCTransp.java +0 -0
  294. data/src/{toxi → main/java/toxi}/processing/TextureBuilder.java +0 -0
  295. data/src/{toxi → main/java/toxi}/processing/Textures.java +0 -0
  296. data/src/{toxi → main/java/toxi}/processing/ToxiclibsSupport.java +0 -0
  297. data/src/{toxi → main/java/toxi}/processing/Tracing.java +0 -0
  298. data/src/{toxi → main/java/toxi}/processing/XYZNormalMapper.java +0 -0
  299. data/src/{toxi → main/java/toxi}/sim/automata/CAMatrix.java +0 -0
  300. data/src/{toxi → main/java/toxi}/sim/automata/CARule.java +0 -0
  301. data/src/{toxi → main/java/toxi}/sim/automata/CARule2D.java +0 -0
  302. data/src/{toxi → main/java/toxi}/sim/automata/CAWolfram1D.java +0 -0
  303. data/src/{toxi → main/java/toxi}/sim/automata/EvolvableMatrix.java +0 -0
  304. data/src/{toxi → main/java/toxi}/sim/automata/MatrixEvolver.java +0 -0
  305. data/src/{toxi → main/java/toxi}/sim/dla/BottomUpOrder.java +0 -0
  306. data/src/{toxi → main/java/toxi}/sim/dla/DLA.java +0 -0
  307. data/src/{toxi → main/java/toxi}/sim/dla/DLAConfiguration.java +0 -0
  308. data/src/{toxi → main/java/toxi}/sim/dla/DLAEventAdapter.java +0 -0
  309. data/src/{toxi → main/java/toxi}/sim/dla/DLAEventListener.java +0 -0
  310. data/src/{toxi → main/java/toxi}/sim/dla/DLAGuideLines.java +0 -0
  311. data/src/{toxi → main/java/toxi}/sim/dla/DLAParticle.java +0 -0
  312. data/src/{toxi → main/java/toxi}/sim/dla/DLASegment.java +0 -0
  313. data/src/{toxi → main/java/toxi}/sim/dla/PipelineOrder.java +0 -0
  314. data/src/{toxi → main/java/toxi}/sim/dla/RadialDistanceOrder.java +0 -0
  315. data/src/{toxi → main/java/toxi}/sim/erosion/ErosionFunction.java +0 -0
  316. data/src/{toxi → main/java/toxi}/sim/erosion/TalusAngleErosion.java +0 -0
  317. data/src/{toxi → main/java/toxi}/sim/erosion/ThermalErosion.java +0 -0
  318. data/src/{toxi → main/java/toxi}/sim/fluids/FluidSolver2D.java +0 -0
  319. data/src/{toxi → main/java/toxi}/sim/fluids/FluidSolver3D.java +0 -0
  320. data/src/{toxi → main/java/toxi}/sim/grayscott/GrayScott.java +0 -0
  321. data/src/{toxi → main/java/toxi}/util/DateUtils.java +0 -0
  322. data/src/{toxi → main/java/toxi}/util/FileSequenceDescriptor.java +0 -0
  323. data/src/main/java/toxi/util/FileUtils.java +443 -0
  324. data/src/{toxi → main/java/toxi}/util/datatypes/ArraySet.java +0 -0
  325. data/src/{toxi → main/java/toxi}/util/datatypes/ArrayUtil.java +0 -0
  326. data/src/{toxi → main/java/toxi}/util/datatypes/BiasedDoubleRange.java +3 -3
  327. data/src/{toxi → main/java/toxi}/util/datatypes/BiasedFloatRange.java +2 -3
  328. data/src/{toxi → main/java/toxi}/util/datatypes/BiasedIntegerRange.java +3 -3
  329. data/src/{toxi → main/java/toxi}/util/datatypes/DoubleRange.java +3 -3
  330. data/src/{toxi → main/java/toxi}/util/datatypes/FloatRange.java +3 -3
  331. data/src/{toxi → main/java/toxi}/util/datatypes/GenericSet.java +0 -0
  332. data/src/{toxi → main/java/toxi}/util/datatypes/IntegerRange.java +3 -3
  333. data/src/{toxi → main/java/toxi}/util/datatypes/IntegerSet.java +0 -0
  334. data/src/{toxi → main/java/toxi}/util/datatypes/ItemIndex.java +0 -0
  335. data/src/{toxi → main/java/toxi}/util/datatypes/SingletonRegistry.java +0 -0
  336. data/src/{toxi → main/java/toxi}/util/datatypes/TypedProperties.java +0 -0
  337. data/src/{toxi → main/java/toxi}/util/datatypes/UndirectedGraph.java +0 -0
  338. data/src/{toxi → main/java/toxi}/util/datatypes/UniqueItemIndex.java +0 -0
  339. data/src/{toxi → main/java/toxi}/util/datatypes/WeightedRandomEntry.java +0 -0
  340. data/src/{toxi → main/java/toxi}/util/datatypes/WeightedRandomSet.java +0 -0
  341. data/src/{toxi → main/java/toxi}/util/events/EventDispatcher.java +0 -0
  342. data/src/{toxi → main/java/toxi}/volume/AdditiveBrush.java +0 -0
  343. data/src/{toxi → main/java/toxi}/volume/ArrayIsoSurface.java +0 -0
  344. data/src/{toxi → main/java/toxi}/volume/BoxBrush.java +0 -0
  345. data/src/{toxi → main/java/toxi}/volume/BrushMode.java +0 -0
  346. data/src/{toxi → main/java/toxi}/volume/HashIsoSurface.java +0 -0
  347. data/src/{toxi → main/java/toxi}/volume/IsoSurface.java +0 -0
  348. data/src/{toxi → main/java/toxi}/volume/MarchingCubesIndex.java +0 -0
  349. data/src/{toxi → main/java/toxi}/volume/MeshLatticeBuilder.java +0 -0
  350. data/src/{toxi → main/java/toxi}/volume/MeshVoxelizer.java +0 -0
  351. data/src/{toxi → main/java/toxi}/volume/MultiplyBrush.java +0 -0
  352. data/src/{toxi → main/java/toxi}/volume/PeakBrush.java +0 -0
  353. data/src/{toxi → main/java/toxi}/volume/ReplaceBrush.java +0 -0
  354. data/src/{toxi → main/java/toxi}/volume/RoundBrush.java +0 -0
  355. data/src/{toxi → main/java/toxi}/volume/VolumetricBrush.java +0 -0
  356. data/src/{toxi → main/java/toxi}/volume/VolumetricHashMap.java +0 -0
  357. data/src/{toxi → main/java/toxi}/volume/VolumetricSpace.java +0 -0
  358. data/src/{toxi → main/java/toxi}/volume/VolumetricSpaceArray.java +0 -0
  359. data/src/{BooleanShapes.java → test/java/BooleanShapes.java} +0 -0
  360. data/toxiclibs.gemspec +6 -7
  361. metadata +345 -347
  362. data/src/toxi/data/feeds/AtomFeed.java +0 -129
  363. data/src/toxi/data/feeds/RSSFeed.java +0 -99
  364. data/src/toxi/physics2d/VerletParticle2D.java +0 -457
  365. data/src/toxi/physics2d/VerletPhysics2D.java +0 -448
  366. data/src/toxi/physics2d/behaviors/AttractionBehavior2D.java +0 -212
  367. data/src/toxi/physics3d/VerletParticle3D.java +0 -385
  368. data/src/toxi/util/FileUtils.java +0 -467
@@ -78,11 +78,12 @@ public class ParticlePath3D extends Spline3D {
78
78
  public List<VerletParticle3D> createParticles(VerletPhysics3D physics,
79
79
  int subDiv, float step, float mass) {
80
80
  particles.clear();
81
- for (Vec3D v : toLineStrip3D(subDiv).getDecimatedVertices(step, true)) {
82
- VerletParticle3D p = createSingleParticle(v, mass);
81
+ toLineStrip3D(subDiv).getDecimatedVertices(step, true).stream().map((v) -> createSingleParticle(v, mass)).map((p) -> {
83
82
  particles.add(p);
83
+ return p;
84
+ }).forEachOrdered((p) -> {
84
85
  physics.addParticle(p);
85
- }
86
+ });
86
87
  return particles;
87
88
  }
88
89
 
@@ -129,9 +129,9 @@ public class ParticleString3D {
129
129
  * particles & springs.
130
130
  */
131
131
  public void clear() {
132
- for (VerletSpring3D s : links) {
132
+ links.forEach((s) -> {
133
133
  physics.removeSpringElements(s);
134
- }
134
+ });
135
135
  particles.clear();
136
136
  links.clear();
137
137
  }
@@ -0,0 +1,377 @@
1
+ /*
2
+ * __ .__ .__ ._____.
3
+ * _/ |_ _______ __|__| ____ | | |__\_ |__ ______
4
+ * \ __\/ _ \ \/ / |/ ___\| | | || __ \ / ___/
5
+ * | | ( <_> > <| \ \___| |_| || \_\ \\___ \
6
+ * |__| \____/__/\_ \__|\___ >____/__||___ /____ >
7
+ * \/ \/ \/ \/
8
+ *
9
+ * Copyright (c) 2006-2011 Karsten Schmidt
10
+ *
11
+ * This library is free software; you can redistribute it and/or
12
+ * modify it under the terms of the GNU Lesser General Public
13
+ * License as published by the Free Software Foundation; either
14
+ * version 2.1 of the License, or (at your option) any later version.
15
+ *
16
+ * http://creativecommons.org/licenses/LGPL/2.1/
17
+ *
18
+ * This library is distributed in the hope that it will be useful,
19
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
20
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
21
+ * Lesser General Public License for more details.
22
+ *
23
+ * You should have received a copy of the GNU Lesser General Public
24
+ * License along with this library; if not, write to the Free Software
25
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
26
+ */
27
+ package toxi.physics3d;
28
+
29
+ import java.util.ArrayList;
30
+ import java.util.List;
31
+
32
+ import toxi.geom.AABB;
33
+ import toxi.geom.ReadonlyVec3D;
34
+ import toxi.geom.Vec3D;
35
+ import toxi.physics3d.behaviors.ParticleBehavior3D;
36
+ import toxi.physics3d.constraints.ParticleConstraint3D;
37
+
38
+ /**
39
+ * An individual 3D particle for use by the VerletPhysics and VerletSpring
40
+ * classes. A particle has weight, can be locked in space and its position
41
+ * constrained inside an (optional) axis-aligned bounding box.
42
+ */
43
+ public class VerletParticle3D extends Vec3D {
44
+
45
+ protected Vec3D prev,
46
+ /**
47
+ *
48
+ */
49
+ /**
50
+ *
51
+ */
52
+ temp;
53
+
54
+ /**
55
+ *
56
+ */
57
+ protected boolean isLocked;
58
+
59
+ /**
60
+ * Bounding box, by default set to null to disable
61
+ */
62
+ public AABB bounds;
63
+
64
+ /**
65
+ * An optional particle constraints, called immediately after a particle is
66
+ * updated (and only used if particle is unlocked (default)
67
+ */
68
+ public List<ParticleConstraint3D> constraints;
69
+
70
+ /**
71
+ *
72
+ */
73
+ public List<ParticleBehavior3D> behaviors;
74
+
75
+ /**
76
+ * Particle weight, default = 1
77
+ */
78
+ protected float weight, invWeight;
79
+
80
+ /**
81
+ *
82
+ */
83
+ protected Vec3D force = new Vec3D();
84
+
85
+ /**
86
+ * Creates particle at position xyz
87
+ *
88
+ * @param x
89
+ * @param y
90
+ * @param z
91
+ */
92
+ public VerletParticle3D(float x, float y, float z) {
93
+ this(x, y, z, 1);
94
+ }
95
+
96
+ /**
97
+ * Creates particle at position xyz with weight w
98
+ *
99
+ * @param x
100
+ * @param y
101
+ * @param z
102
+ * @param w
103
+ */
104
+ public VerletParticle3D(float x, float y, float z, float w) {
105
+ super(x, y, z);
106
+ prev = new Vec3D(this);
107
+ temp = new Vec3D();
108
+ setWeight(w);
109
+ }
110
+
111
+ /**
112
+ * Creates particle at the position of the passed in vector
113
+ *
114
+ * @param v position
115
+ */
116
+ public VerletParticle3D(ReadonlyVec3D v) {
117
+ this(v.x(), v.y(), v.z(), 1);
118
+ }
119
+
120
+ /**
121
+ * Creates particle with weight w at the position of the passed in vector
122
+ *
123
+ * @param v position
124
+ * @param w weight
125
+ */
126
+ public VerletParticle3D(ReadonlyVec3D v, float w) {
127
+ this(v.x(), v.y(), v.z(), w);
128
+ }
129
+
130
+ /**
131
+ * Creates a copy of the passed in particle
132
+ *
133
+ * @param p
134
+ */
135
+ public VerletParticle3D(VerletParticle3D p) {
136
+ this(p.x, p.y, p.z, p.weight);
137
+ isLocked = p.isLocked;
138
+ }
139
+
140
+ /**
141
+ *
142
+ * @param behavior
143
+ * @return
144
+ */
145
+ public VerletParticle3D addBehavior(ParticleBehavior3D behavior) {
146
+ return addBehavior(behavior, 1);
147
+ }
148
+
149
+ /**
150
+ *
151
+ * @param behavior
152
+ * @param timeStep
153
+ * @return
154
+ */
155
+ public VerletParticle3D addBehavior(ParticleBehavior3D behavior, float timeStep) {
156
+ if (behaviors == null) {
157
+ behaviors = new ArrayList<>(1);
158
+ }
159
+ behavior.configure(timeStep);
160
+ behaviors.add(behavior);
161
+ return this;
162
+ }
163
+
164
+ /**
165
+ * Adds the given constraint implementation to the list of constraints applied
166
+ * to this particle at each time step.
167
+ *
168
+ * @param c constraint instance
169
+ * @return itself
170
+ */
171
+ public VerletParticle3D addConstraint(ParticleConstraint3D c) {
172
+ if (constraints == null) {
173
+ constraints = new ArrayList<>(1);
174
+ }
175
+ constraints.add(c);
176
+ return this;
177
+ }
178
+
179
+ /**
180
+ *
181
+ * @param f
182
+ * @return
183
+ */
184
+ public VerletParticle3D addForce(Vec3D f) {
185
+ force.addSelf(f);
186
+ return this;
187
+ }
188
+
189
+ /**
190
+ *
191
+ * @param v
192
+ * @return
193
+ */
194
+ public VerletParticle3D addVelocity(Vec3D v) {
195
+ prev.subSelf(v);
196
+ return this;
197
+ }
198
+
199
+ /**
200
+ *
201
+ */
202
+ public void applyBehaviors() {
203
+ if (behaviors != null) {
204
+ behaviors.forEach((b) -> {
205
+ b.apply(this);
206
+ });
207
+ }
208
+ }
209
+
210
+ /**
211
+ *
212
+ */
213
+ public void applyConstraints() {
214
+ if (constraints != null) {
215
+ constraints.forEach((pc) -> {
216
+ pc.apply(this);
217
+ });
218
+ }
219
+ }
220
+
221
+ /**
222
+ *
223
+ */
224
+ protected void applyForce() {
225
+ temp.set(this);
226
+ addSelf(sub(prev).addSelf(force.scale(weight)));
227
+ prev.set(temp);
228
+ force.clear();
229
+ }
230
+
231
+ /**
232
+ * Removes any currently applied constraints from this particle.
233
+ *
234
+ * @return itself
235
+ */
236
+ public VerletParticle3D clearConstraints() {
237
+ constraints.clear();
238
+ return this;
239
+ }
240
+
241
+ /**
242
+ *
243
+ * @return
244
+ */
245
+ public VerletParticle3D clearForce() {
246
+ force.clear();
247
+ return this;
248
+ }
249
+
250
+ /**
251
+ *
252
+ * @return
253
+ */
254
+ public VerletParticle3D clearVelocity() {
255
+ prev.set(this);
256
+ return this;
257
+ }
258
+
259
+ /**
260
+ * @return the inverse weight (1/weight)
261
+ */
262
+ public final float getInvWeight() {
263
+ return invWeight;
264
+ }
265
+
266
+ /**
267
+ * Returns the particle's position at the most recent time step.
268
+ *
269
+ * @return previous position
270
+ */
271
+ public Vec3D getPreviousPosition() {
272
+ return prev;
273
+ }
274
+
275
+ /**
276
+ *
277
+ * @return
278
+ */
279
+ public Vec3D getVelocity() {
280
+ return sub(prev);
281
+ }
282
+
283
+ /**
284
+ * @return the weight
285
+ */
286
+ public final float getWeight() {
287
+ return weight;
288
+ }
289
+
290
+ /**
291
+ * @return true, if particle is locked
292
+ */
293
+ public final boolean isLocked() {
294
+ return isLocked;
295
+ }
296
+
297
+ /**
298
+ * Locks/immobilizes particle in space
299
+ *
300
+ * @return itself
301
+ */
302
+ public VerletParticle3D lock() {
303
+ isLocked = true;
304
+ return this;
305
+ }
306
+
307
+ /**
308
+ *
309
+ * @param b
310
+ * @return
311
+ */
312
+ public boolean removeBehavior(ParticleBehavior3D b) {
313
+ return behaviors.remove(b);
314
+ }
315
+
316
+ /**
317
+ * Attempts to remove the given constraint instance from the list of active
318
+ * constraints.
319
+ *
320
+ * @param c constraint to remove
321
+ * @return true, if successfully removed
322
+ */
323
+ public boolean removeConstraint(ParticleConstraint3D c) {
324
+ return constraints.remove(c);
325
+ }
326
+
327
+ /**
328
+ *
329
+ * @param scl
330
+ * @return
331
+ */
332
+ public VerletParticle3D scaleVelocity(float scl) {
333
+ prev.interpolateToSelf(this, 1f - scl);
334
+ return this;
335
+ }
336
+
337
+ /**
338
+ *
339
+ * @param p
340
+ * @return
341
+ */
342
+ public VerletParticle3D setPreviousPosition(Vec3D p) {
343
+ prev.set(p);
344
+ return this;
345
+ }
346
+
347
+ /**
348
+ *
349
+ * @param w
350
+ */
351
+ public void setWeight(float w) {
352
+ weight = w;
353
+ invWeight = 1f / w;
354
+ }
355
+
356
+ /**
357
+ * Unlocks particle again
358
+ *
359
+ * @return itself
360
+ */
361
+ public VerletParticle3D unlock() {
362
+ clearVelocity();
363
+ isLocked = false;
364
+ return this;
365
+ }
366
+
367
+ /**
368
+ *
369
+ */
370
+ public void update() {
371
+ if (!isLocked) {
372
+ applyBehaviors();
373
+ applyForce();
374
+ applyConstraints();
375
+ }
376
+ }
377
+ }
@@ -61,6 +61,7 @@ public class AxisConstraint implements ParticleConstraint3D {
61
61
  *
62
62
  * @see toxi.physics.IParticleConstraint#apply(toxi.physics.VerletParticle)
63
63
  */
64
+ @Override
64
65
  public void apply(VerletParticle3D p) {
65
66
  p.setComponent(axis, constraint);
66
67
  }