toxiclibs 0.2-java → 0.5.0-java

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 (383) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +16 -0
  3. data/CHANGELOG.md +4 -0
  4. data/LICENSE +675 -0
  5. data/README.md +12 -5
  6. data/Rakefile +25 -82
  7. data/examples/attract_repel/attract_repel.rb +30 -0
  8. data/examples/attract_repel/attractor.rb +23 -0
  9. data/examples/attract_repel/particle.rb +27 -0
  10. data/examples/data/ti_yong.png +0 -0
  11. data/examples/force_directed/cluster.rb +76 -0
  12. data/examples/force_directed/force_directed_graph.rb +92 -0
  13. data/examples/force_directed/node.rb +26 -0
  14. data/examples/gray_scott_image.rb +75 -0
  15. data/examples/gray_scott_tone_map.rb +77 -0
  16. data/examples/implicit.rb +139 -0
  17. data/examples/inflate_mesh.rb +89 -0
  18. data/examples/model_align.rb +44 -0
  19. data/examples/povmesh/ftest.rb +46 -0
  20. data/examples/povmesh/tentacle.rb +73 -0
  21. data/examples/simple_cluster/cluster.rb +47 -0
  22. data/examples/simple_cluster/node.rb +27 -0
  23. data/examples/simple_cluster/simple_cluster.rb +60 -0
  24. data/examples/soft_body/blanket.rb +45 -0
  25. data/examples/soft_body/connection.rb +16 -0
  26. data/examples/soft_body/particle.rb +22 -0
  27. data/examples/soft_body/soft_body_square_adapted.rb +55 -0
  28. data/lib/toxiclibs.jar +0 -0
  29. data/lib/toxiclibs.rb +91 -32
  30. data/lib/toxiclibs/version.rb +1 -1
  31. data/pom.xml +122 -0
  32. data/src/com/toxi/net/ClientListener.java +41 -0
  33. data/src/com/toxi/net/ServerListener.java +70 -0
  34. data/src/com/toxi/net/ServerListenerAdapter.java +47 -0
  35. data/src/com/toxi/net/ServerState.java +18 -0
  36. data/src/com/toxi/net/UDPConnection.java +66 -0
  37. data/src/com/toxi/net/UDPSyncClient.java +81 -0
  38. data/src/com/toxi/net/UDPSyncServer.java +450 -0
  39. data/src/com/toxi/nio/UDPClient.java +121 -0
  40. data/src/com/toxi/nio/UDPClientState.java +32 -0
  41. data/src/com/toxi/nio/UDPServer.java +129 -0
  42. data/src/toxi/color/AccessCriteria.java +114 -0
  43. data/src/toxi/color/AlphaAccessor.java +67 -0
  44. data/src/toxi/color/CMYKAccessor.java +122 -0
  45. data/src/toxi/color/CMYKDistanceProxy.java +40 -0
  46. data/src/toxi/color/ColorGradient.java +260 -0
  47. data/src/toxi/color/ColorList.java +699 -0
  48. data/src/toxi/color/ColorRange.java +671 -0
  49. data/src/toxi/color/ColorTheme.java +163 -0
  50. data/src/toxi/color/DistanceProxy.java +44 -0
  51. data/src/toxi/color/HSVAccessor.java +113 -0
  52. data/src/toxi/color/HSVDistanceProxy.java +40 -0
  53. data/src/toxi/color/HistEntry.java +85 -0
  54. data/src/toxi/color/Histogram.java +185 -0
  55. data/src/toxi/color/Hue.java +249 -0
  56. data/src/toxi/color/LuminanceAccessor.java +78 -0
  57. data/src/toxi/color/NamedColor.java +935 -0
  58. data/src/toxi/color/ProximityComparator.java +70 -0
  59. data/src/toxi/color/RGBAccessor.java +113 -0
  60. data/src/toxi/color/RGBDistanceProxy.java +41 -0
  61. data/src/toxi/color/ReadonlyTColor.java +296 -0
  62. data/src/toxi/color/TColor.java +1677 -0
  63. data/src/toxi/color/TColorAdapter.java +68 -0
  64. data/src/toxi/color/ToneMap.java +218 -0
  65. data/src/toxi/color/theory/AnalogousStrategy.java +140 -0
  66. data/src/toxi/color/theory/ColorTheoryRegistry.java +139 -0
  67. data/src/toxi/color/theory/ColorTheoryStrategy.java +56 -0
  68. data/src/toxi/color/theory/ComplementaryStrategy.java +111 -0
  69. data/src/toxi/color/theory/CompoundTheoryStrategy.java +143 -0
  70. data/src/toxi/color/theory/LeftSplitComplementaryStrategy.java +82 -0
  71. data/src/toxi/color/theory/MonochromeTheoryStrategy.java +103 -0
  72. data/src/toxi/color/theory/RightSplitComplementaryStrategy.java +82 -0
  73. data/src/toxi/color/theory/SingleComplementStrategy.java +76 -0
  74. data/src/toxi/color/theory/SplitComplementaryStrategy.java +77 -0
  75. data/src/toxi/color/theory/TetradTheoryStrategy.java +114 -0
  76. data/src/toxi/color/theory/TriadTheoryStrategy.java +77 -0
  77. data/src/toxi/data/csv/CSVAdapter.java +74 -0
  78. data/src/toxi/data/csv/CSVFieldMapper.java +212 -0
  79. data/src/toxi/data/csv/CSVListener.java +61 -0
  80. data/src/toxi/data/csv/CSVParser.java +202 -0
  81. data/src/toxi/data/feeds/AtomAuthor.java +49 -0
  82. data/src/toxi/data/feeds/AtomContent.java +50 -0
  83. data/src/toxi/data/feeds/AtomEntry.java +111 -0
  84. data/src/toxi/data/feeds/AtomFeed.java +129 -0
  85. data/src/toxi/data/feeds/AtomLink.java +62 -0
  86. data/src/toxi/data/feeds/RSSChannel.java +88 -0
  87. data/src/toxi/data/feeds/RSSEnclosure.java +60 -0
  88. data/src/toxi/data/feeds/RSSFeed.java +99 -0
  89. data/src/toxi/data/feeds/RSSItem.java +104 -0
  90. data/src/toxi/data/feeds/util/EntityStripper.java +2480 -0
  91. data/src/toxi/data/feeds/util/Iso8601DateAdapter.java +101 -0
  92. data/src/toxi/data/feeds/util/Rfc822DateAdapter.java +93 -0
  93. data/src/toxi/geom/AABB.java +658 -0
  94. data/src/toxi/geom/Axis3D.java +116 -0
  95. data/src/toxi/geom/AxisAlignedCylinder.java +163 -0
  96. data/src/toxi/geom/BernsteinPolynomial.java +94 -0
  97. data/src/toxi/geom/BezierCurve2D.java +159 -0
  98. data/src/toxi/geom/BezierCurve3D.java +148 -0
  99. data/src/toxi/geom/BooleanShapeBuilder.java +185 -0
  100. data/src/toxi/geom/BoxIntersector.java +52 -0
  101. data/src/toxi/geom/Circle.java +230 -0
  102. data/src/toxi/geom/CircleIntersector.java +85 -0
  103. data/src/toxi/geom/Cone.java +150 -0
  104. data/src/toxi/geom/ConvexPolygonClipper.java +136 -0
  105. data/src/toxi/geom/CoordinateExtractor.java +16 -0
  106. data/src/toxi/geom/Ellipse.java +250 -0
  107. data/src/toxi/geom/GMatrix.java +2599 -0
  108. data/src/toxi/geom/GVector.java +833 -0
  109. data/src/toxi/geom/GlobalGridTesselator.java +54 -0
  110. data/src/toxi/geom/GridTesselator.java +108 -0
  111. data/src/toxi/geom/Intersector2D.java +49 -0
  112. data/src/toxi/geom/Intersector3D.java +51 -0
  113. data/src/toxi/geom/IsectData2D.java +103 -0
  114. data/src/toxi/geom/IsectData3D.java +103 -0
  115. data/src/toxi/geom/Line2D.java +534 -0
  116. data/src/toxi/geom/Line3D.java +471 -0
  117. data/src/toxi/geom/LineStrip2D.java +430 -0
  118. data/src/toxi/geom/LineStrip3D.java +230 -0
  119. data/src/toxi/geom/LocalGridTesselator.java +57 -0
  120. data/src/toxi/geom/Matrix3d.java +3048 -0
  121. data/src/toxi/geom/Matrix4f.java +3446 -0
  122. data/src/toxi/geom/Matrix4x4.java +1076 -0
  123. data/src/toxi/geom/MatrixSizeException.java +58 -0
  124. data/src/toxi/geom/OctreeVisitor.java +44 -0
  125. data/src/toxi/geom/Origin3D.java +148 -0
  126. data/src/toxi/geom/Plane.java +293 -0
  127. data/src/toxi/geom/PlaneIntersector.java +57 -0
  128. data/src/toxi/geom/PointCloud3D.java +253 -0
  129. data/src/toxi/geom/PointOctree.java +502 -0
  130. data/src/toxi/geom/PointQuadtree.java +375 -0
  131. data/src/toxi/geom/Polygon2D.java +1038 -0
  132. data/src/toxi/geom/PolygonClipper2D.java +45 -0
  133. data/src/toxi/geom/PolygonTesselator.java +20 -0
  134. data/src/toxi/geom/QuadtreeVisitor.java +44 -0
  135. data/src/toxi/geom/Quaternion.java +641 -0
  136. data/src/toxi/geom/Ray2D.java +146 -0
  137. data/src/toxi/geom/Ray3D.java +150 -0
  138. data/src/toxi/geom/Ray3DIntersector.java +75 -0
  139. data/src/toxi/geom/ReadonlyVec2D.java +575 -0
  140. data/src/toxi/geom/ReadonlyVec3D.java +628 -0
  141. data/src/toxi/geom/ReadonlyVec4D.java +431 -0
  142. data/src/toxi/geom/Rect.java +720 -0
  143. data/src/toxi/geom/Reflector3D.java +58 -0
  144. data/src/toxi/geom/Shape2D.java +94 -0
  145. data/src/toxi/geom/Shape3D.java +42 -0
  146. data/src/toxi/geom/SingularMatrixException.java +57 -0
  147. data/src/toxi/geom/SpatialBins.java +182 -0
  148. data/src/toxi/geom/SpatialIndex.java +61 -0
  149. data/src/toxi/geom/Sphere.java +224 -0
  150. data/src/toxi/geom/SphereIntersectorReflector.java +196 -0
  151. data/src/toxi/geom/Spline2D.java +349 -0
  152. data/src/toxi/geom/Spline3D.java +351 -0
  153. data/src/toxi/geom/SutherlandHodgemanClipper.java +151 -0
  154. data/src/toxi/geom/Triangle2D.java +422 -0
  155. data/src/toxi/geom/Triangle3D.java +456 -0
  156. data/src/toxi/geom/TriangleIntersector.java +105 -0
  157. data/src/toxi/geom/Vec2D.java +1328 -0
  158. data/src/toxi/geom/Vec3D.java +1832 -0
  159. data/src/toxi/geom/Vec4D.java +985 -0
  160. data/src/toxi/geom/VecMathUtil.java +100 -0
  161. data/src/toxi/geom/XAxisCylinder.java +64 -0
  162. data/src/toxi/geom/YAxisCylinder.java +65 -0
  163. data/src/toxi/geom/ZAxisCylinder.java +64 -0
  164. data/src/toxi/geom/mesh/BezierPatch.java +200 -0
  165. data/src/toxi/geom/mesh/BoxSelector.java +62 -0
  166. data/src/toxi/geom/mesh/DefaultSTLColorModel.java +67 -0
  167. data/src/toxi/geom/mesh/DefaultSelector.java +50 -0
  168. data/src/toxi/geom/mesh/Face.java +176 -0
  169. data/src/toxi/geom/mesh/LaplacianSmooth.java +80 -0
  170. data/src/toxi/geom/mesh/MaterialiseSTLColorModel.java +150 -0
  171. data/src/toxi/geom/mesh/Mesh3D.java +224 -0
  172. data/src/toxi/geom/mesh/MeshIntersector.java +91 -0
  173. data/src/toxi/geom/mesh/OBJWriter.java +194 -0
  174. data/src/toxi/geom/mesh/PLYWriter.java +167 -0
  175. data/src/toxi/geom/mesh/PlaneSelector.java +90 -0
  176. data/src/toxi/geom/mesh/STLColorModel.java +54 -0
  177. data/src/toxi/geom/mesh/STLReader.java +185 -0
  178. data/src/toxi/geom/mesh/STLWriter.java +323 -0
  179. data/src/toxi/geom/mesh/SphereFunction.java +156 -0
  180. data/src/toxi/geom/mesh/SphericalHarmonics.java +110 -0
  181. data/src/toxi/geom/mesh/SuperEllipsoid.java +110 -0
  182. data/src/toxi/geom/mesh/SurfaceFunction.java +75 -0
  183. data/src/toxi/geom/mesh/SurfaceMeshBuilder.java +149 -0
  184. data/src/toxi/geom/mesh/Terrain.java +451 -0
  185. data/src/toxi/geom/mesh/TriangleMesh.java +1201 -0
  186. data/src/toxi/geom/mesh/Vertex.java +78 -0
  187. data/src/toxi/geom/mesh/VertexSelector.java +193 -0
  188. data/src/toxi/geom/mesh/WEFace.java +100 -0
  189. data/src/toxi/geom/mesh/WEMeshFilterStrategy.java +51 -0
  190. data/src/toxi/geom/mesh/WETriangleMesh.java +761 -0
  191. data/src/toxi/geom/mesh/WEVertex.java +134 -0
  192. data/src/toxi/geom/mesh/WingedEdge.java +115 -0
  193. data/src/toxi/geom/mesh/subdiv/CentroidSubdiv.java +37 -0
  194. data/src/toxi/geom/mesh/subdiv/DisplacementSubdivision.java +85 -0
  195. data/src/toxi/geom/mesh/subdiv/DualDisplacementSubdivision.java +94 -0
  196. data/src/toxi/geom/mesh/subdiv/DualSubdivision.java +49 -0
  197. data/src/toxi/geom/mesh/subdiv/EdgeLengthComparator.java +50 -0
  198. data/src/toxi/geom/mesh/subdiv/FaceCountComparator.java +51 -0
  199. data/src/toxi/geom/mesh/subdiv/MidpointDisplacementSubdivision.java +80 -0
  200. data/src/toxi/geom/mesh/subdiv/MidpointSubdiv.java +42 -0
  201. data/src/toxi/geom/mesh/subdiv/MidpointSubdivision.java +48 -0
  202. data/src/toxi/geom/mesh/subdiv/NewSubdivStrategy.java +23 -0
  203. data/src/toxi/geom/mesh/subdiv/NormalDisplacementSubdivision.java +74 -0
  204. data/src/toxi/geom/mesh/subdiv/SubdivisionStrategy.java +83 -0
  205. data/src/toxi/geom/mesh/subdiv/TriSubdivision.java +51 -0
  206. data/src/toxi/geom/mesh2d/DelaunayTriangle.java +222 -0
  207. data/src/toxi/geom/mesh2d/DelaunayTriangulation.java +327 -0
  208. data/src/toxi/geom/mesh2d/DelaunayVertex.java +560 -0
  209. data/src/toxi/geom/mesh2d/Voronoi.java +149 -0
  210. data/src/toxi/geom/nurbs/BasicNurbsCurve.java +210 -0
  211. data/src/toxi/geom/nurbs/BasicNurbsSurface.java +233 -0
  212. data/src/toxi/geom/nurbs/ControlNet.java +148 -0
  213. data/src/toxi/geom/nurbs/CurveCreator.java +112 -0
  214. data/src/toxi/geom/nurbs/CurveUtils.java +259 -0
  215. data/src/toxi/geom/nurbs/InterpolationException.java +65 -0
  216. data/src/toxi/geom/nurbs/KnotVector.java +333 -0
  217. data/src/toxi/geom/nurbs/NurbsCreator.java +815 -0
  218. data/src/toxi/geom/nurbs/NurbsCurve.java +120 -0
  219. data/src/toxi/geom/nurbs/NurbsMeshCreator.java +145 -0
  220. data/src/toxi/geom/nurbs/NurbsSurface.java +147 -0
  221. data/src/toxi/image/util/Filter8bit.java +331 -0
  222. data/src/toxi/image/util/TiledFrameExporter.java +162 -0
  223. data/src/toxi/math/BezierInterpolation.java +102 -0
  224. data/src/toxi/math/CircularInterpolation.java +88 -0
  225. data/src/toxi/math/CosineInterpolation.java +51 -0
  226. data/src/toxi/math/DecimatedInterpolation.java +77 -0
  227. data/src/toxi/math/ExponentialInterpolation.java +68 -0
  228. data/src/toxi/math/InterpolateStrategy.java +60 -0
  229. data/src/toxi/math/Interpolation2D.java +93 -0
  230. data/src/toxi/math/LinearInterpolation.java +46 -0
  231. data/src/toxi/math/MathUtils.java +990 -0
  232. data/src/toxi/math/NonLinearScaleMap.java +101 -0
  233. data/src/toxi/math/ScaleMap.java +183 -0
  234. data/src/toxi/math/SigmoidInterpolation.java +78 -0
  235. data/src/toxi/math/SinCosLUT.java +141 -0
  236. data/src/toxi/math/ThresholdInterpolation.java +58 -0
  237. data/src/toxi/math/ZoomLensInterpolation.java +126 -0
  238. data/src/toxi/math/conversion/UnitTranslator.java +161 -0
  239. data/src/toxi/math/noise/PerlinNoise.java +281 -0
  240. data/src/toxi/math/noise/SimplexNoise.java +542 -0
  241. data/src/toxi/math/waves/AMFMSineWave.java +143 -0
  242. data/src/toxi/math/waves/AbstractWave.java +248 -0
  243. data/src/toxi/math/waves/ConstantWave.java +48 -0
  244. data/src/toxi/math/waves/FMHarmonicSquareWave.java +155 -0
  245. data/src/toxi/math/waves/FMSawtoothWave.java +144 -0
  246. data/src/toxi/math/waves/FMSineWave.java +142 -0
  247. data/src/toxi/math/waves/FMSquareWave.java +143 -0
  248. data/src/toxi/math/waves/FMTriangleWave.java +126 -0
  249. data/src/toxi/math/waves/SineWave.java +81 -0
  250. data/src/toxi/math/waves/Wave2D.java +68 -0
  251. data/src/toxi/math/waves/WaveState.java +69 -0
  252. data/src/toxi/music/scale/AbstractScale.java +117 -0
  253. data/src/toxi/music/scale/GenericScale.java +66 -0
  254. data/src/toxi/music/scale/MajorScale.java +41 -0
  255. data/src/toxi/newmesh/AttributedEdge.java +106 -0
  256. data/src/toxi/newmesh/AttributedFace.java +63 -0
  257. data/src/toxi/newmesh/IndexedTriangleMesh.java +809 -0
  258. data/src/toxi/newmesh/MeshAttributeCompiler.java +45 -0
  259. data/src/toxi/newmesh/MeshFaceNormalCompiler.java +52 -0
  260. data/src/toxi/newmesh/MeshUVCompiler.java +52 -0
  261. data/src/toxi/newmesh/MeshVertexColorCompiler.java +49 -0
  262. data/src/toxi/newmesh/MeshVertexCompiler.java +54 -0
  263. data/src/toxi/newmesh/MeshVertexNormalCompiler.java +55 -0
  264. data/src/toxi/newmesh/SpatialIndex.java +78 -0
  265. data/src/toxi/physics2d/ParticlePath2D.java +100 -0
  266. data/src/toxi/physics2d/ParticleString2D.java +184 -0
  267. data/src/toxi/physics2d/PullBackSpring2D.java +51 -0
  268. data/src/toxi/physics2d/VerletConstrainedSpring2D.java +89 -0
  269. data/src/toxi/physics2d/VerletMinDistanceSpring2D.java +57 -0
  270. data/src/toxi/physics2d/VerletParticle2D.java +457 -0
  271. data/src/toxi/physics2d/VerletPhysics2D.java +448 -0
  272. data/src/toxi/physics2d/VerletSpring2D.java +181 -0
  273. data/src/toxi/physics2d/behaviors/AttractionBehavior2D.java +212 -0
  274. data/src/toxi/physics2d/behaviors/ConstantForceBehavior2D.java +112 -0
  275. data/src/toxi/physics2d/behaviors/GravityBehavior2D.java +61 -0
  276. data/src/toxi/physics2d/behaviors/ParticleBehavior2D.java +66 -0
  277. data/src/toxi/physics2d/constraints/AngularConstraint.java +83 -0
  278. data/src/toxi/physics2d/constraints/AxisConstraint.java +71 -0
  279. data/src/toxi/physics2d/constraints/CircularConstraint.java +69 -0
  280. data/src/toxi/physics2d/constraints/MaxConstraint.java +66 -0
  281. data/src/toxi/physics2d/constraints/MinConstraint.java +66 -0
  282. data/src/toxi/physics2d/constraints/ParticleConstraint2D.java +47 -0
  283. data/src/toxi/physics2d/constraints/PolygonConstraint.java +93 -0
  284. data/src/toxi/physics2d/constraints/RectConstraint.java +114 -0
  285. data/src/toxi/physics3d/ParticlePath3D.java +100 -0
  286. data/src/toxi/physics3d/ParticleString3D.java +184 -0
  287. data/src/toxi/physics3d/PullBackSpring3D.java +50 -0
  288. data/src/toxi/physics3d/VerletConstrainedSpring3D.java +88 -0
  289. data/src/toxi/physics3d/VerletMinDistanceSpring3D.java +56 -0
  290. data/src/toxi/physics3d/VerletParticle3D.java +385 -0
  291. data/src/toxi/physics3d/VerletPhysics3D.java +417 -0
  292. data/src/toxi/physics3d/VerletSpring3D.java +180 -0
  293. data/src/toxi/physics3d/behaviors/AttractionBehavior3D.java +182 -0
  294. data/src/toxi/physics3d/behaviors/ConstantForceBehavior3D.java +92 -0
  295. data/src/toxi/physics3d/behaviors/GravityBehavior3D.java +61 -0
  296. data/src/toxi/physics3d/behaviors/ParticleBehavior3D.java +52 -0
  297. data/src/toxi/physics3d/constraints/AxisConstraint.java +68 -0
  298. data/src/toxi/physics3d/constraints/BoxConstraint.java +121 -0
  299. data/src/toxi/physics3d/constraints/CylinderConstraint.java +87 -0
  300. data/src/toxi/physics3d/constraints/MaxConstraint.java +65 -0
  301. data/src/toxi/physics3d/constraints/MinConstraint.java +65 -0
  302. data/src/toxi/physics3d/constraints/ParticleConstraint3D.java +49 -0
  303. data/src/toxi/physics3d/constraints/PlaneConstraint.java +78 -0
  304. data/src/toxi/physics3d/constraints/SoftBoxConstraint.java +87 -0
  305. data/src/toxi/physics3d/constraints/SphereConstraint.java +108 -0
  306. data/src/toxi/processing/ArrowModifier.java +116 -0
  307. data/src/toxi/processing/DashedLineModifier.java +48 -0
  308. data/src/toxi/processing/DeltaOrientationMapper.java +57 -0
  309. data/src/toxi/processing/Line2DRenderModifier.java +18 -0
  310. data/src/toxi/processing/MeshToVBO.java +94 -0
  311. data/src/toxi/processing/NormalMapper.java +18 -0
  312. data/src/toxi/processing/POVInterface.java +121 -0
  313. data/src/toxi/processing/POVMesh.java +219 -0
  314. data/src/toxi/processing/POVWriter.java +460 -0
  315. data/src/toxi/processing/RCOpaque.java +77 -0
  316. data/src/toxi/processing/RCTransp.java +78 -0
  317. data/src/toxi/processing/TextureBuilder.java +232 -0
  318. data/src/toxi/processing/Textures.java +110 -0
  319. data/src/toxi/processing/ToxiclibsSupport.java +1239 -0
  320. data/src/toxi/processing/Tracing.java +25 -0
  321. data/src/toxi/processing/XYZNormalMapper.java +30 -0
  322. data/src/toxi/sim/automata/CAMatrix.java +297 -0
  323. data/src/toxi/sim/automata/CARule.java +76 -0
  324. data/src/toxi/sim/automata/CARule2D.java +354 -0
  325. data/src/toxi/sim/automata/CAWolfram1D.java +309 -0
  326. data/src/toxi/sim/automata/EvolvableMatrix.java +61 -0
  327. data/src/toxi/sim/automata/MatrixEvolver.java +42 -0
  328. data/src/toxi/sim/dla/BottomUpOrder.java +76 -0
  329. data/src/toxi/sim/dla/DLA.java +497 -0
  330. data/src/toxi/sim/dla/DLAConfiguration.java +364 -0
  331. data/src/toxi/sim/dla/DLAEventAdapter.java +64 -0
  332. data/src/toxi/sim/dla/DLAEventListener.java +57 -0
  333. data/src/toxi/sim/dla/DLAGuideLines.java +219 -0
  334. data/src/toxi/sim/dla/DLAParticle.java +102 -0
  335. data/src/toxi/sim/dla/DLASegment.java +88 -0
  336. data/src/toxi/sim/dla/PipelineOrder.java +50 -0
  337. data/src/toxi/sim/dla/RadialDistanceOrder.java +92 -0
  338. data/src/toxi/sim/erosion/ErosionFunction.java +122 -0
  339. data/src/toxi/sim/erosion/TalusAngleErosion.java +145 -0
  340. data/src/toxi/sim/erosion/ThermalErosion.java +75 -0
  341. data/src/toxi/sim/fluids/FluidSolver2D.java +762 -0
  342. data/src/toxi/sim/fluids/FluidSolver3D.java +326 -0
  343. data/src/toxi/sim/grayscott/GrayScott.java +469 -0
  344. data/src/toxi/util/DateUtils.java +141 -0
  345. data/src/toxi/util/FileSequenceDescriptor.java +181 -0
  346. data/src/toxi/util/FileUtils.java +467 -0
  347. data/src/toxi/util/datatypes/ArraySet.java +128 -0
  348. data/src/toxi/util/datatypes/ArrayUtil.java +404 -0
  349. data/src/toxi/util/datatypes/BiasedDoubleRange.java +141 -0
  350. data/src/toxi/util/datatypes/BiasedFloatRange.java +141 -0
  351. data/src/toxi/util/datatypes/BiasedIntegerRange.java +141 -0
  352. data/src/toxi/util/datatypes/DoubleRange.java +251 -0
  353. data/src/toxi/util/datatypes/FloatRange.java +251 -0
  354. data/src/toxi/util/datatypes/GenericSet.java +215 -0
  355. data/src/toxi/util/datatypes/IntegerRange.java +247 -0
  356. data/src/toxi/util/datatypes/IntegerSet.java +149 -0
  357. data/src/toxi/util/datatypes/ItemIndex.java +72 -0
  358. data/src/toxi/util/datatypes/SingletonRegistry.java +91 -0
  359. data/src/toxi/util/datatypes/TypedProperties.java +291 -0
  360. data/src/toxi/util/datatypes/UndirectedGraph.java +134 -0
  361. data/src/toxi/util/datatypes/UniqueItemIndex.java +223 -0
  362. data/src/toxi/util/datatypes/WeightedRandomEntry.java +76 -0
  363. data/src/toxi/util/datatypes/WeightedRandomSet.java +125 -0
  364. data/src/toxi/util/events/EventDispatcher.java +86 -0
  365. data/src/toxi/volume/AdditiveBrush.java +19 -0
  366. data/src/toxi/volume/ArrayIsoSurface.java +297 -0
  367. data/src/toxi/volume/BoxBrush.java +100 -0
  368. data/src/toxi/volume/BrushMode.java +16 -0
  369. data/src/toxi/volume/HashIsoSurface.java +354 -0
  370. data/src/toxi/volume/IsoSurface.java +59 -0
  371. data/src/toxi/volume/MarchingCubesIndex.java +312 -0
  372. data/src/toxi/volume/MeshLatticeBuilder.java +358 -0
  373. data/src/toxi/volume/MeshVoxelizer.java +216 -0
  374. data/src/toxi/volume/MultiplyBrush.java +20 -0
  375. data/src/toxi/volume/PeakBrush.java +21 -0
  376. data/src/toxi/volume/ReplaceBrush.java +19 -0
  377. data/src/toxi/volume/RoundBrush.java +113 -0
  378. data/src/toxi/volume/VolumetricBrush.java +160 -0
  379. data/src/toxi/volume/VolumetricHashMap.java +179 -0
  380. data/src/toxi/volume/VolumetricSpace.java +195 -0
  381. data/src/toxi/volume/VolumetricSpaceArray.java +214 -0
  382. data/toxiclibs.gemspec +34 -0
  383. metadata +424 -27
@@ -0,0 +1,58 @@
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
+
28
+ package toxi.math;
29
+
30
+ /**
31
+ * Defines a single step/threshold function which returns the min value for all
32
+ * factors &lt; threshold and the max value for all others.
33
+ */
34
+ public class ThresholdInterpolation implements InterpolateStrategy {
35
+
36
+ /**
37
+ *
38
+ */
39
+ public float threshold;
40
+
41
+ /**
42
+ *
43
+ * @param threshold
44
+ */
45
+ public ThresholdInterpolation(float threshold) {
46
+ this.threshold = threshold;
47
+ }
48
+
49
+ @Override
50
+ public double interpolate(double a, double b, double f) {
51
+ return f < threshold ? a : b;
52
+ }
53
+
54
+ @Override
55
+ public float interpolate(float a, float b, float f) {
56
+ return f < threshold ? a : b;
57
+ }
58
+ }
@@ -0,0 +1,126 @@
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
+
28
+ package toxi.math;
29
+
30
+ /**
31
+ * This class provides an adjustable zoom lens to either bundle or dilate values
32
+ * around a focal point within a given interval. For a example use cases, please
33
+ * have a look at the provided ScaleMapDataViz and ZoomLens examples.
34
+ */
35
+ public class ZoomLensInterpolation implements InterpolateStrategy {
36
+
37
+ /**
38
+ *
39
+ */
40
+ protected CircularInterpolation leftImpl = new CircularInterpolation();
41
+
42
+ /**
43
+ *
44
+ */
45
+ protected CircularInterpolation rightImpl = new CircularInterpolation();
46
+
47
+ /**
48
+ *
49
+ */
50
+ protected float lensPos;
51
+ protected float lensStrength,
52
+
53
+ /**
54
+ *
55
+ */
56
+ absStrength;
57
+
58
+ /**
59
+ *
60
+ */
61
+ public ZoomLensInterpolation() {
62
+ this(0.5f, 1);
63
+ }
64
+
65
+ /**
66
+ *
67
+ * @param lensPos
68
+ * @param lensStrength
69
+ */
70
+ public ZoomLensInterpolation(float lensPos, float lensStrength) {
71
+ this.lensPos = lensPos;
72
+ this.lensStrength = lensStrength;
73
+ this.absStrength = MathUtils.abs(lensStrength);
74
+ leftImpl.setFlipped(lensStrength > 0);
75
+ rightImpl.setFlipped(lensStrength < 0);
76
+ }
77
+
78
+ @Override
79
+ public double interpolate(double min, double max, double t) {
80
+ double val = min + (max - min) * t;
81
+ if (t < lensPos) {
82
+ val += (leftImpl.interpolate(min, min + (max - min) * lensPos, t
83
+ / lensPos) - val)
84
+ * absStrength;
85
+ } else {
86
+ val += (rightImpl.interpolate(min + (max - min) * lensPos, max,
87
+ (t - lensPos) / (1 - lensPos)) - val) * absStrength;
88
+ }
89
+ return val;
90
+ }
91
+
92
+ @Override
93
+ public float interpolate(float min, float max, float t) {
94
+ float val = min + (max - min) * t;
95
+ if (t < lensPos) {
96
+ val += (leftImpl.interpolate(min, min + (max - min) * lensPos, t
97
+ / lensPos) - val)
98
+ * absStrength;
99
+ } else {
100
+ val += (rightImpl.interpolate(min + (max - min) * lensPos, max,
101
+ (t - lensPos) / (1 - lensPos)) - val) * absStrength;
102
+ }
103
+ return val;
104
+ }
105
+
106
+ /**
107
+ *
108
+ * @param pos
109
+ * @param smooth
110
+ */
111
+ public void setLensPos(float pos, float smooth) {
112
+ lensPos += (MathUtils.clipNormalized(pos) - lensPos) * smooth;
113
+ }
114
+
115
+ /**
116
+ *
117
+ * @param str
118
+ * @param smooth
119
+ */
120
+ public void setLensStrength(float str, float smooth) {
121
+ lensStrength += (MathUtils.clip(str, -1, 1) - lensStrength) * smooth;
122
+ absStrength = MathUtils.abs(lensStrength);
123
+ leftImpl.setFlipped(lensStrength > 0);
124
+ rightImpl.setFlipped(lensStrength < 0);
125
+ }
126
+ }
@@ -0,0 +1,161 @@
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
+
28
+ package toxi.math.conversion;
29
+
30
+ /**
31
+ *
32
+ * @author tux
33
+ */
34
+ public class UnitTranslator {
35
+
36
+ /**
37
+ * Number of millimeters per inch
38
+ */
39
+ public static final double INCH_MM = 25.4;
40
+
41
+ /**
42
+ * Number of points per inch
43
+ */
44
+ public static final double POINT_POSTSCRIPT = 72.0;
45
+
46
+ /**
47
+ * Converts millimeters into pixels.
48
+ *
49
+ * @param mm
50
+ * millimeters
51
+ * @param dpi
52
+ * DPI resolution
53
+ * @return number of pixels
54
+ */
55
+ public static int millisToPixels(double mm, int dpi) {
56
+ return (int) (mm / INCH_MM * dpi);
57
+ }
58
+
59
+ /**
60
+ * Converts millimeters into PostScript points.
61
+ *
62
+ * @param mm
63
+ * millimeters
64
+ * @return number of points
65
+ */
66
+ public static double millisToPoints(double mm) {
67
+ return mm / INCH_MM * POINT_POSTSCRIPT;
68
+ }
69
+
70
+ /**
71
+ * Converts pixels into inches.
72
+ *
73
+ * @param pix
74
+ * pixels
75
+ * @param dpi
76
+ * DPI resolution to use
77
+ * @return number of inches
78
+ */
79
+ public static double pixelsToInch(int pix, int dpi) {
80
+ return (double) pix / dpi;
81
+ }
82
+
83
+ /**
84
+ * Converts pixels into millimeters.
85
+ *
86
+ * @param pix
87
+ * pixels
88
+ * @param dpi
89
+ * DPI resolution
90
+ * @return number of millimeters
91
+ */
92
+ public static double pixelsToMillis(int pix, int dpi) {
93
+ return pixelsToInch(pix, dpi) * INCH_MM;
94
+ }
95
+
96
+ /**
97
+ * Converts pixels into points.
98
+ *
99
+ * @param pix
100
+ * pixels
101
+ * @param dpi
102
+ * DPI resolution
103
+ * @return number of points
104
+ */
105
+ public static double pixelsToPoints(int pix, int dpi) {
106
+ return pixelsToInch(pix, dpi) * POINT_POSTSCRIPT;
107
+ }
108
+
109
+ /**
110
+ * Converts points into millimeters.
111
+ *
112
+ * @param pt
113
+ * @return number of millimeters
114
+ */
115
+ public static double pointsToMillis(double pt) {
116
+ return pt / POINT_POSTSCRIPT * INCH_MM;
117
+ }
118
+
119
+ /**
120
+ * Converts points into pixels.
121
+ *
122
+ * @param pt
123
+ * points
124
+ * @param dpi
125
+ * DPI resolution
126
+ * @return number of pixels
127
+ */
128
+ public static int pointsToPixels(double pt, int dpi) {
129
+ return millisToPixels(pointsToMillis(pt), dpi);
130
+ }
131
+
132
+ /**
133
+ * Converts an area measure in square inch to square millimeters.
134
+ *
135
+ * @param area
136
+ * @return square mm
137
+ */
138
+ public static double squareInchToMillis(double area) {
139
+ return area * INCH_MM * INCH_MM;
140
+ }
141
+
142
+ /**
143
+ * Converts an area measure in points to square inch.
144
+ *
145
+ * @param area
146
+ * @return square inch
147
+ */
148
+ public static double squarePointsToInch(double area) {
149
+ return area / (POINT_POSTSCRIPT * POINT_POSTSCRIPT);
150
+ }
151
+
152
+ /**
153
+ * Converts an area measure in points to square millimeters.
154
+ *
155
+ * @param area
156
+ * @return square mm
157
+ */
158
+ public static double squarePointsToMillis(double area) {
159
+ return squareInchToMillis(squarePointsToInch(area));
160
+ }
161
+ }
@@ -0,0 +1,281 @@
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
+
28
+ package toxi.math.noise;
29
+
30
+ import java.util.Random;
31
+
32
+ import toxi.math.SinCosLUT;
33
+
34
+ /**
35
+ * PERLIN NOISE taken from the java port I originally did for PApplet, based on
36
+ * an implementation by the german demo group farbrausch as used in their demo
37
+ * "Art": http://www.farb-rausch.de/fr010src.zip
38
+ */
39
+ public class PerlinNoise {
40
+
41
+ /**
42
+ *
43
+ */
44
+ protected static final int PERLIN_YWRAPB = 4;
45
+
46
+ /**
47
+ *
48
+ */
49
+ protected static final int PERLIN_YWRAP = 1 << PERLIN_YWRAPB;
50
+
51
+ /**
52
+ *
53
+ */
54
+ protected static final int PERLIN_ZWRAPB = 8;
55
+
56
+ /**
57
+ *
58
+ */
59
+ protected static final int PERLIN_ZWRAP = 1 << PERLIN_ZWRAPB;
60
+
61
+ /**
62
+ *
63
+ */
64
+ protected static final int PERLIN_SIZE = 4095;
65
+
66
+ private static final float PERLIN_MIN_AMPLITUDE = 0.001f;
67
+
68
+ /**
69
+ *
70
+ */
71
+ protected int perlin_octaves = 4; // default to medium smooth
72
+
73
+ /**
74
+ *
75
+ */
76
+ protected float perlin_amp_falloff = 0.5f; // 50% reduction/octave
77
+
78
+ // [toxi 031112]
79
+ // new vars needed due to recent change of cos table in PGraphics
80
+ protected int perlin_TWOPI,
81
+
82
+ /**
83
+ *
84
+ */
85
+
86
+ /**
87
+ *
88
+ */
89
+ perlin_PI;
90
+
91
+ /**
92
+ *
93
+ */
94
+ protected float[] perlin_cosTable;
95
+
96
+ /**
97
+ *
98
+ */
99
+ protected float perlin[];
100
+
101
+ /**
102
+ *
103
+ */
104
+ protected Random perlinRandom;
105
+
106
+ /**
107
+ *
108
+ */
109
+ public PerlinNoise() {
110
+ noiseSeed(System.nanoTime());
111
+ }
112
+
113
+ /**
114
+ * Computes the Perlin noise function value at point x.
115
+ * @param x
116
+ * @return
117
+ */
118
+ public float noise(float x) {
119
+ // is this legit? it's a dumb way to do it (but repair it later)
120
+ return noise(x, 0f, 0f);
121
+ }
122
+
123
+ /**
124
+ * Computes the Perlin noise function value at the point x, y.
125
+ * @param x
126
+ * @param y
127
+ * @return
128
+ */
129
+ public float noise(float x, float y) {
130
+ return noise(x, y, 0f);
131
+ }
132
+
133
+ /**
134
+ * Computes the Perlin noise function value at x, y, z.
135
+ * @param x
136
+ * @param y
137
+ * @param z
138
+ * @return
139
+ */
140
+ public float noise(float x, float y, float z) {
141
+ if (perlin == null) {
142
+ if (perlinRandom == null) {
143
+ perlinRandom = new Random();
144
+ }
145
+ perlin = new float[PERLIN_SIZE + 1];
146
+ for (int i = 0; i < PERLIN_SIZE + 1; i++) {
147
+ perlin[i] = perlinRandom.nextFloat(); // (float)Math.random();
148
+ }
149
+ // [toxi 031112]
150
+ // noise broke due to recent change of cos table in PGraphics
151
+ // this will take care of it
152
+ perlin_cosTable = SinCosLUT.getDefaultInstance().getSinLUT();
153
+ perlin_TWOPI = perlin_PI = SinCosLUT.getDefaultInstance()
154
+ .getPeriod();
155
+ perlin_PI >>= 1;
156
+ }
157
+
158
+ if (x < 0) {
159
+ x = -x;
160
+ }
161
+ if (y < 0) {
162
+ y = -y;
163
+ }
164
+ if (z < 0) {
165
+ z = -z;
166
+ }
167
+
168
+ int xi = (int) x, yi = (int) y, zi = (int) z;
169
+ float xf = (x - xi);
170
+ float yf = (y - yi);
171
+ float zf = (z - zi);
172
+ float rxf, ryf;
173
+
174
+ float r = 0;
175
+ float ampl = 0.5f;
176
+
177
+ float n1, n2, n3;
178
+
179
+ for (int i = 0; i < perlin_octaves; i++) {
180
+ int of = xi + (yi << PERLIN_YWRAPB) + (zi << PERLIN_ZWRAPB);
181
+
182
+ rxf = noise_fsc(xf);
183
+ ryf = noise_fsc(yf);
184
+
185
+ n1 = perlin[of & PERLIN_SIZE];
186
+ n1 += rxf * (perlin[(of + 1) & PERLIN_SIZE] - n1);
187
+ n2 = perlin[(of + PERLIN_YWRAP) & PERLIN_SIZE];
188
+ n2 += rxf * (perlin[(of + PERLIN_YWRAP + 1) & PERLIN_SIZE] - n2);
189
+ n1 += ryf * (n2 - n1);
190
+
191
+ of += PERLIN_ZWRAP;
192
+ n2 = perlin[of & PERLIN_SIZE];
193
+ n2 += rxf * (perlin[(of + 1) & PERLIN_SIZE] - n2);
194
+ n3 = perlin[(of + PERLIN_YWRAP) & PERLIN_SIZE];
195
+ n3 += rxf * (perlin[(of + PERLIN_YWRAP + 1) & PERLIN_SIZE] - n3);
196
+ n2 += ryf * (n3 - n2);
197
+
198
+ n1 += noise_fsc(zf) * (n2 - n1);
199
+
200
+ r += n1 * ampl;
201
+ ampl *= perlin_amp_falloff;
202
+
203
+ // break if amp has no more impact
204
+ if (ampl < PERLIN_MIN_AMPLITUDE) {
205
+ break;
206
+ }
207
+
208
+ xi <<= 1;
209
+ xf *= 2;
210
+ yi <<= 1;
211
+ yf *= 2;
212
+ zi <<= 1;
213
+ zf *= 2;
214
+
215
+ if (xf >= 1.0f) {
216
+ xi++;
217
+ xf--;
218
+ }
219
+ if (yf >= 1.0f) {
220
+ yi++;
221
+ yf--;
222
+ }
223
+ if (zf >= 1.0f) {
224
+ zi++;
225
+ zf--;
226
+ }
227
+ }
228
+ return r;
229
+ }
230
+
231
+ // [toxi 031112]
232
+ // now adjusts to the size of the cosLUT used via
233
+ // the new variables, defined above
234
+ private float noise_fsc(float i) {
235
+ // using bagel's cosine table instead
236
+ return 0.5f * (1.0f - perlin_cosTable[(int) ((i + 0.5f) * perlin_PI)
237
+ % perlin_TWOPI]);
238
+ }
239
+
240
+ // [toxi 040903]
241
+ // make perlin noise quality user controlled to allow
242
+ // for different levels of detail. lower values will produce
243
+ // smoother results as higher octaves are surpressed
244
+
245
+ /**
246
+ *
247
+ * @param lod
248
+ */
249
+
250
+ public void noiseDetail(int lod) {
251
+ if (lod > 0) {
252
+ perlin_octaves = lod;
253
+ }
254
+ }
255
+
256
+ /**
257
+ *
258
+ * @param lod
259
+ * @param falloff
260
+ */
261
+ public void noiseDetail(int lod, float falloff) {
262
+ if (lod > 0) {
263
+ perlin_octaves = lod;
264
+ }
265
+ if (falloff > 0) {
266
+ perlin_amp_falloff = falloff;
267
+ }
268
+ }
269
+
270
+ /**
271
+ *
272
+ * @param what
273
+ */
274
+ public final void noiseSeed(long what) {
275
+ if (perlinRandom == null) {
276
+ perlinRandom = new Random();
277
+ }
278
+ perlinRandom.setSeed(what);
279
+ perlin = null;
280
+ }
281
+ }