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.
- checksums.yaml +4 -4
- data/.gitignore +16 -0
- data/.mvn/extensions.xml +8 -0
- data/.mvn/wrapper/maven-wrapper.properties +1 -0
- data/.travis.yml +23 -0
- data/CHANGELOG.md +7 -0
- data/COPYING.md +14 -0
- data/Gemfile +10 -0
- data/LICENSE +675 -0
- data/README.md +9 -7
- data/Rakefile +25 -81
- data/examples/README.md +5 -0
- data/examples/attract_repel/attract_repel.rb +30 -0
- data/examples/attract_repel/attractor.rb +23 -0
- data/examples/attract_repel/particle.rb +27 -0
- data/examples/data/ReplicaBold.ttf +0 -0
- data/examples/data/ti_yong.png +0 -0
- data/examples/force_directed/cluster.rb +76 -0
- data/examples/force_directed/force_directed_graph.rb +92 -0
- data/examples/force_directed/node.rb +26 -0
- data/examples/gray_scott_image.rb +74 -0
- data/examples/gray_scott_tone_map.rb +77 -0
- data/examples/implicit.rb +139 -0
- data/examples/inflate_mesh.rb +89 -0
- data/examples/model_align.rb +43 -0
- data/examples/physics_type.rb +77 -0
- data/examples/povmesh/data/mask.jpg +0 -0
- data/examples/povmesh/ftest.rb +59 -0
- data/examples/povmesh/mesh_align.rb +47 -0
- data/examples/povmesh/tentacle.rb +71 -0
- data/examples/simple_cluster/cluster.rb +47 -0
- data/examples/simple_cluster/node.rb +27 -0
- data/examples/simple_cluster/simple_cluster.rb +60 -0
- data/examples/soft_body/blanket.rb +45 -0
- data/examples/soft_body/connection.rb +16 -0
- data/examples/soft_body/particle.rb +22 -0
- data/examples/soft_body/soft_body_square_adapted.rb +55 -0
- data/examples/spherical_harmonics_mesh.rb +50 -0
- data/examples/test_rect.rb +32 -0
- data/lib/toxiclibs.jar +0 -0
- data/lib/toxiclibs.rb +72 -22
- data/lib/toxiclibs/version.rb +1 -1
- data/pom.rb +63 -0
- data/pom.xml +124 -0
- data/src/com/toxi/net/ClientListener.java +41 -0
- data/src/com/toxi/net/ServerListener.java +70 -0
- data/src/com/toxi/net/ServerListenerAdapter.java +47 -0
- data/src/com/toxi/net/ServerState.java +18 -0
- data/src/com/toxi/net/UDPConnection.java +66 -0
- data/src/com/toxi/net/UDPSyncClient.java +81 -0
- data/src/com/toxi/net/UDPSyncServer.java +450 -0
- data/src/com/toxi/nio/UDPClient.java +121 -0
- data/src/com/toxi/nio/UDPClientState.java +32 -0
- data/src/com/toxi/nio/UDPServer.java +129 -0
- data/src/toxi/audio/AudioBuffer.java +229 -0
- data/src/toxi/audio/AudioSource.java +288 -0
- data/src/toxi/audio/DecompressInputStream.java +159 -0
- data/src/toxi/audio/IIRFilter.java +197 -0
- data/src/toxi/audio/JOALUtil.java +388 -0
- data/src/toxi/audio/MultiTimbralManager.java +162 -0
- data/src/toxi/audio/SoundListener.java +154 -0
- data/src/toxi/audio/SynthUtil.java +109 -0
- data/src/toxi/color/AccessCriteria.java +114 -0
- data/src/toxi/color/AlphaAccessor.java +67 -0
- data/src/toxi/color/CMYKAccessor.java +122 -0
- data/src/toxi/color/CMYKDistanceProxy.java +40 -0
- data/src/toxi/color/ColorGradient.java +260 -0
- data/src/toxi/color/ColorList.java +699 -0
- data/src/toxi/color/ColorRange.java +671 -0
- data/src/toxi/color/ColorTheme.java +163 -0
- data/src/toxi/color/DistanceProxy.java +44 -0
- data/src/toxi/color/HSVAccessor.java +113 -0
- data/src/toxi/color/HSVDistanceProxy.java +40 -0
- data/src/toxi/color/HistEntry.java +85 -0
- data/src/toxi/color/Histogram.java +185 -0
- data/src/toxi/color/Hue.java +249 -0
- data/src/toxi/color/LuminanceAccessor.java +78 -0
- data/src/toxi/color/NamedColor.java +935 -0
- data/src/toxi/color/ProximityComparator.java +70 -0
- data/src/toxi/color/RGBAccessor.java +113 -0
- data/src/toxi/color/RGBDistanceProxy.java +41 -0
- data/src/toxi/color/ReadonlyTColor.java +296 -0
- data/src/toxi/color/TColor.java +1677 -0
- data/src/toxi/color/TColorAdapter.java +68 -0
- data/src/toxi/color/ToneMap.java +218 -0
- data/src/toxi/color/theory/AnalogousStrategy.java +140 -0
- data/src/toxi/color/theory/ColorTheoryRegistry.java +139 -0
- data/src/toxi/color/theory/ColorTheoryStrategy.java +56 -0
- data/src/toxi/color/theory/ComplementaryStrategy.java +111 -0
- data/src/toxi/color/theory/CompoundTheoryStrategy.java +143 -0
- data/src/toxi/color/theory/LeftSplitComplementaryStrategy.java +82 -0
- data/src/toxi/color/theory/MonochromeTheoryStrategy.java +103 -0
- data/src/toxi/color/theory/RightSplitComplementaryStrategy.java +82 -0
- data/src/toxi/color/theory/SingleComplementStrategy.java +76 -0
- data/src/toxi/color/theory/SplitComplementaryStrategy.java +77 -0
- data/src/toxi/color/theory/TetradTheoryStrategy.java +114 -0
- data/src/toxi/color/theory/TriadTheoryStrategy.java +77 -0
- data/src/toxi/data/csv/CSVAdapter.java +74 -0
- data/src/toxi/data/csv/CSVFieldMapper.java +212 -0
- data/src/toxi/data/csv/CSVListener.java +61 -0
- data/src/toxi/data/csv/CSVParser.java +202 -0
- data/src/toxi/data/feeds/AtomAuthor.java +49 -0
- data/src/toxi/data/feeds/AtomContent.java +50 -0
- data/src/toxi/data/feeds/AtomEntry.java +111 -0
- data/src/toxi/data/feeds/AtomFeed.java +129 -0
- data/src/toxi/data/feeds/AtomLink.java +62 -0
- data/src/toxi/data/feeds/RSSChannel.java +88 -0
- data/src/toxi/data/feeds/RSSEnclosure.java +60 -0
- data/src/toxi/data/feeds/RSSFeed.java +99 -0
- data/src/toxi/data/feeds/RSSItem.java +104 -0
- data/src/toxi/data/feeds/util/EntityStripper.java +2480 -0
- data/src/toxi/data/feeds/util/Iso8601DateAdapter.java +101 -0
- data/src/toxi/data/feeds/util/Rfc822DateAdapter.java +93 -0
- data/src/toxi/geom/AABB.java +658 -0
- data/src/toxi/geom/Axis3D.java +116 -0
- data/src/toxi/geom/AxisAlignedCylinder.java +163 -0
- data/src/toxi/geom/BernsteinPolynomial.java +94 -0
- data/src/toxi/geom/BezierCurve2D.java +159 -0
- data/src/toxi/geom/BezierCurve3D.java +148 -0
- data/src/toxi/geom/BooleanShapeBuilder.java +185 -0
- data/src/toxi/geom/BoxIntersector.java +52 -0
- data/src/toxi/geom/Circle.java +230 -0
- data/src/toxi/geom/CircleIntersector.java +85 -0
- data/src/toxi/geom/Cone.java +150 -0
- data/src/toxi/geom/ConvexPolygonClipper.java +136 -0
- data/src/toxi/geom/CoordinateExtractor.java +16 -0
- data/src/toxi/geom/Ellipse.java +250 -0
- data/src/toxi/geom/GMatrix.java +2599 -0
- data/src/toxi/geom/GVector.java +833 -0
- data/src/toxi/geom/GlobalGridTesselator.java +54 -0
- data/src/toxi/geom/GridTesselator.java +108 -0
- data/src/toxi/geom/Intersector2D.java +49 -0
- data/src/toxi/geom/Intersector3D.java +51 -0
- data/src/toxi/geom/IsectData2D.java +103 -0
- data/src/toxi/geom/IsectData3D.java +103 -0
- data/src/toxi/geom/Line2D.java +534 -0
- data/src/toxi/geom/Line3D.java +471 -0
- data/src/toxi/geom/LineStrip2D.java +430 -0
- data/src/toxi/geom/LineStrip3D.java +230 -0
- data/src/toxi/geom/LocalGridTesselator.java +57 -0
- data/src/toxi/geom/Matrix3d.java +3048 -0
- data/src/toxi/geom/Matrix4f.java +3446 -0
- data/src/toxi/geom/Matrix4x4.java +1076 -0
- data/src/toxi/geom/MatrixSizeException.java +58 -0
- data/src/toxi/geom/OctreeVisitor.java +44 -0
- data/src/toxi/geom/Origin3D.java +148 -0
- data/src/toxi/geom/Plane.java +293 -0
- data/src/toxi/geom/PlaneIntersector.java +57 -0
- data/src/toxi/geom/PointCloud3D.java +253 -0
- data/src/toxi/geom/PointOctree.java +502 -0
- data/src/toxi/geom/PointQuadtree.java +375 -0
- data/src/toxi/geom/Polygon2D.java +1038 -0
- data/src/toxi/geom/PolygonClipper2D.java +45 -0
- data/src/toxi/geom/PolygonTesselator.java +20 -0
- data/src/toxi/geom/QuadtreeVisitor.java +44 -0
- data/src/toxi/geom/Quaternion.java +641 -0
- data/src/toxi/geom/Ray2D.java +146 -0
- data/src/toxi/geom/Ray3D.java +150 -0
- data/src/toxi/geom/Ray3DIntersector.java +75 -0
- data/src/toxi/geom/ReadonlyVec2D.java +575 -0
- data/src/toxi/geom/ReadonlyVec3D.java +628 -0
- data/src/toxi/geom/ReadonlyVec4D.java +431 -0
- data/src/toxi/geom/Rect.java +720 -0
- data/src/toxi/geom/Reflector3D.java +58 -0
- data/src/toxi/geom/Shape2D.java +94 -0
- data/src/toxi/geom/Shape3D.java +42 -0
- data/src/toxi/geom/SingularMatrixException.java +57 -0
- data/src/toxi/geom/SpatialBins.java +182 -0
- data/src/toxi/geom/SpatialIndex.java +61 -0
- data/src/toxi/geom/Sphere.java +224 -0
- data/src/toxi/geom/SphereIntersectorReflector.java +196 -0
- data/src/toxi/geom/Spline2D.java +349 -0
- data/src/toxi/geom/Spline3D.java +351 -0
- data/src/toxi/geom/SutherlandHodgemanClipper.java +151 -0
- data/src/toxi/geom/Triangle2D.java +422 -0
- data/src/toxi/geom/Triangle3D.java +456 -0
- data/src/toxi/geom/TriangleIntersector.java +105 -0
- data/src/toxi/geom/Vec2D.java +1328 -0
- data/src/toxi/geom/Vec3D.java +1832 -0
- data/src/toxi/geom/Vec4D.java +985 -0
- data/src/toxi/geom/VecMathUtil.java +100 -0
- data/src/toxi/geom/XAxisCylinder.java +64 -0
- data/src/toxi/geom/YAxisCylinder.java +65 -0
- data/src/toxi/geom/ZAxisCylinder.java +64 -0
- data/src/toxi/geom/mesh/BezierPatch.java +200 -0
- data/src/toxi/geom/mesh/BoxSelector.java +62 -0
- data/src/toxi/geom/mesh/DefaultSTLColorModel.java +67 -0
- data/src/toxi/geom/mesh/DefaultSelector.java +50 -0
- data/src/toxi/geom/mesh/Face.java +176 -0
- data/src/toxi/geom/mesh/LaplacianSmooth.java +80 -0
- data/src/toxi/geom/mesh/MaterialiseSTLColorModel.java +150 -0
- data/src/toxi/geom/mesh/Mesh3D.java +224 -0
- data/src/toxi/geom/mesh/MeshIntersector.java +91 -0
- data/src/toxi/geom/mesh/OBJWriter.java +194 -0
- data/src/toxi/geom/mesh/PLYWriter.java +167 -0
- data/src/toxi/geom/mesh/PlaneSelector.java +90 -0
- data/src/toxi/geom/mesh/STLColorModel.java +54 -0
- data/src/toxi/geom/mesh/STLReader.java +185 -0
- data/src/toxi/geom/mesh/STLWriter.java +323 -0
- data/src/toxi/geom/mesh/SphereFunction.java +156 -0
- data/src/toxi/geom/mesh/SphericalHarmonics.java +110 -0
- data/src/toxi/geom/mesh/SuperEllipsoid.java +110 -0
- data/src/toxi/geom/mesh/SurfaceFunction.java +75 -0
- data/src/toxi/geom/mesh/SurfaceMeshBuilder.java +149 -0
- data/src/toxi/geom/mesh/Terrain.java +451 -0
- data/src/toxi/geom/mesh/TriangleMesh.java +1201 -0
- data/src/toxi/geom/mesh/Vertex.java +78 -0
- data/src/toxi/geom/mesh/VertexSelector.java +193 -0
- data/src/toxi/geom/mesh/WEFace.java +100 -0
- data/src/toxi/geom/mesh/WEMeshFilterStrategy.java +51 -0
- data/src/toxi/geom/mesh/WETriangleMesh.java +761 -0
- data/src/toxi/geom/mesh/WEVertex.java +134 -0
- data/src/toxi/geom/mesh/WingedEdge.java +115 -0
- data/src/toxi/geom/mesh/subdiv/CentroidSubdiv.java +37 -0
- data/src/toxi/geom/mesh/subdiv/DisplacementSubdivision.java +85 -0
- data/src/toxi/geom/mesh/subdiv/DualDisplacementSubdivision.java +94 -0
- data/src/toxi/geom/mesh/subdiv/DualSubdivision.java +49 -0
- data/src/toxi/geom/mesh/subdiv/EdgeLengthComparator.java +50 -0
- data/src/toxi/geom/mesh/subdiv/FaceCountComparator.java +51 -0
- data/src/toxi/geom/mesh/subdiv/MidpointDisplacementSubdivision.java +80 -0
- data/src/toxi/geom/mesh/subdiv/MidpointSubdiv.java +42 -0
- data/src/toxi/geom/mesh/subdiv/MidpointSubdivision.java +48 -0
- data/src/toxi/geom/mesh/subdiv/NewSubdivStrategy.java +23 -0
- data/src/toxi/geom/mesh/subdiv/NormalDisplacementSubdivision.java +74 -0
- data/src/toxi/geom/mesh/subdiv/SubdivisionStrategy.java +83 -0
- data/src/toxi/geom/mesh/subdiv/TriSubdivision.java +51 -0
- data/src/toxi/geom/mesh2d/DelaunayTriangle.java +222 -0
- data/src/toxi/geom/mesh2d/DelaunayTriangulation.java +327 -0
- data/src/toxi/geom/mesh2d/DelaunayVertex.java +560 -0
- data/src/toxi/geom/mesh2d/Voronoi.java +149 -0
- data/src/toxi/geom/nurbs/BasicNurbsCurve.java +210 -0
- data/src/toxi/geom/nurbs/BasicNurbsSurface.java +233 -0
- data/src/toxi/geom/nurbs/ControlNet.java +148 -0
- data/src/toxi/geom/nurbs/CurveCreator.java +112 -0
- data/src/toxi/geom/nurbs/CurveUtils.java +259 -0
- data/src/toxi/geom/nurbs/InterpolationException.java +65 -0
- data/src/toxi/geom/nurbs/KnotVector.java +333 -0
- data/src/toxi/geom/nurbs/NurbsCreator.java +815 -0
- data/src/toxi/geom/nurbs/NurbsCurve.java +120 -0
- data/src/toxi/geom/nurbs/NurbsMeshCreator.java +145 -0
- data/src/toxi/geom/nurbs/NurbsSurface.java +147 -0
- data/src/toxi/image/util/Filter8bit.java +331 -0
- data/src/toxi/image/util/TiledFrameExporter.java +162 -0
- data/src/toxi/math/BezierInterpolation.java +102 -0
- data/src/toxi/math/CircularInterpolation.java +88 -0
- data/src/toxi/math/CosineInterpolation.java +51 -0
- data/src/toxi/math/DecimatedInterpolation.java +77 -0
- data/src/toxi/math/ExponentialInterpolation.java +68 -0
- data/src/toxi/math/InterpolateStrategy.java +60 -0
- data/src/toxi/math/Interpolation2D.java +93 -0
- data/src/toxi/math/LinearInterpolation.java +46 -0
- data/src/toxi/math/MathUtils.java +990 -0
- data/src/toxi/math/NonLinearScaleMap.java +101 -0
- data/src/toxi/math/ScaleMap.java +183 -0
- data/src/toxi/math/SigmoidInterpolation.java +78 -0
- data/src/toxi/math/SinCosLUT.java +141 -0
- data/src/toxi/math/ThresholdInterpolation.java +58 -0
- data/src/toxi/math/ZoomLensInterpolation.java +126 -0
- data/src/toxi/math/conversion/UnitTranslator.java +161 -0
- data/src/toxi/math/noise/PerlinNoise.java +281 -0
- data/src/toxi/math/noise/SimplexNoise.java +542 -0
- data/src/toxi/math/waves/AMFMSineWave.java +143 -0
- data/src/toxi/math/waves/AbstractWave.java +248 -0
- data/src/toxi/math/waves/ConstantWave.java +48 -0
- data/src/toxi/math/waves/FMHarmonicSquareWave.java +155 -0
- data/src/toxi/math/waves/FMSawtoothWave.java +144 -0
- data/src/toxi/math/waves/FMSineWave.java +142 -0
- data/src/toxi/math/waves/FMSquareWave.java +143 -0
- data/src/toxi/math/waves/FMTriangleWave.java +126 -0
- data/src/toxi/math/waves/SineWave.java +81 -0
- data/src/toxi/math/waves/Wave2D.java +68 -0
- data/src/toxi/math/waves/WaveState.java +69 -0
- data/src/toxi/music/scale/AbstractScale.java +117 -0
- data/src/toxi/music/scale/GenericScale.java +66 -0
- data/src/toxi/music/scale/MajorScale.java +41 -0
- data/src/toxi/newmesh/AttributedEdge.java +106 -0
- data/src/toxi/newmesh/AttributedFace.java +63 -0
- data/src/toxi/newmesh/IndexedTriangleMesh.java +809 -0
- data/src/toxi/newmesh/MeshAttributeCompiler.java +45 -0
- data/src/toxi/newmesh/MeshFaceNormalCompiler.java +52 -0
- data/src/toxi/newmesh/MeshUVCompiler.java +52 -0
- data/src/toxi/newmesh/MeshVertexColorCompiler.java +49 -0
- data/src/toxi/newmesh/MeshVertexCompiler.java +54 -0
- data/src/toxi/newmesh/MeshVertexNormalCompiler.java +55 -0
- data/src/toxi/newmesh/SpatialIndex.java +78 -0
- data/src/toxi/physics2d/ParticlePath2D.java +100 -0
- data/src/toxi/physics2d/ParticleString2D.java +184 -0
- data/src/toxi/physics2d/PullBackSpring2D.java +51 -0
- data/src/toxi/physics2d/VerletConstrainedSpring2D.java +89 -0
- data/src/toxi/physics2d/VerletMinDistanceSpring2D.java +57 -0
- data/src/toxi/physics2d/VerletParticle2D.java +457 -0
- data/src/toxi/physics2d/VerletPhysics2D.java +448 -0
- data/src/toxi/physics2d/VerletSpring2D.java +181 -0
- data/src/toxi/physics2d/behaviors/AttractionBehavior2D.java +212 -0
- data/src/toxi/physics2d/behaviors/ConstantForceBehavior2D.java +112 -0
- data/src/toxi/physics2d/behaviors/GravityBehavior2D.java +61 -0
- data/src/toxi/physics2d/behaviors/ParticleBehavior2D.java +66 -0
- data/src/toxi/physics2d/constraints/AngularConstraint.java +83 -0
- data/src/toxi/physics2d/constraints/AxisConstraint.java +71 -0
- data/src/toxi/physics2d/constraints/CircularConstraint.java +69 -0
- data/src/toxi/physics2d/constraints/MaxConstraint.java +66 -0
- data/src/toxi/physics2d/constraints/MinConstraint.java +66 -0
- data/src/toxi/physics2d/constraints/ParticleConstraint2D.java +47 -0
- data/src/toxi/physics2d/constraints/PolygonConstraint.java +93 -0
- data/src/toxi/physics2d/constraints/RectConstraint.java +114 -0
- data/src/toxi/physics3d/ParticlePath3D.java +100 -0
- data/src/toxi/physics3d/ParticleString3D.java +184 -0
- data/src/toxi/physics3d/PullBackSpring3D.java +50 -0
- data/src/toxi/physics3d/VerletConstrainedSpring3D.java +88 -0
- data/src/toxi/physics3d/VerletMinDistanceSpring3D.java +56 -0
- data/src/toxi/physics3d/VerletParticle3D.java +385 -0
- data/src/toxi/physics3d/VerletPhysics3D.java +417 -0
- data/src/toxi/physics3d/VerletSpring3D.java +180 -0
- data/src/toxi/physics3d/behaviors/AttractionBehavior3D.java +182 -0
- data/src/toxi/physics3d/behaviors/ConstantForceBehavior3D.java +92 -0
- data/src/toxi/physics3d/behaviors/GravityBehavior3D.java +61 -0
- data/src/toxi/physics3d/behaviors/ParticleBehavior3D.java +52 -0
- data/src/toxi/physics3d/constraints/AxisConstraint.java +68 -0
- data/src/toxi/physics3d/constraints/BoxConstraint.java +121 -0
- data/src/toxi/physics3d/constraints/CylinderConstraint.java +87 -0
- data/src/toxi/physics3d/constraints/MaxConstraint.java +65 -0
- data/src/toxi/physics3d/constraints/MinConstraint.java +65 -0
- data/src/toxi/physics3d/constraints/ParticleConstraint3D.java +49 -0
- data/src/toxi/physics3d/constraints/PlaneConstraint.java +78 -0
- data/src/toxi/physics3d/constraints/SoftBoxConstraint.java +87 -0
- data/src/toxi/physics3d/constraints/SphereConstraint.java +108 -0
- data/src/toxi/processing/ArrowModifier.java +116 -0
- data/src/toxi/processing/DashedLineModifier.java +48 -0
- data/src/toxi/processing/DeltaOrientationMapper.java +57 -0
- data/src/toxi/processing/Line2DRenderModifier.java +18 -0
- data/src/toxi/processing/MeshToVBO.java +127 -0
- data/src/toxi/processing/NormalMapper.java +18 -0
- data/src/toxi/processing/POVInterface.java +121 -0
- data/src/toxi/processing/POVMesh.java +219 -0
- data/src/toxi/processing/POVWriter.java +460 -0
- data/src/toxi/processing/RCOpaque.java +77 -0
- data/src/toxi/processing/RCTransp.java +78 -0
- data/src/toxi/processing/TextureBuilder.java +232 -0
- data/src/toxi/processing/Textures.java +110 -0
- data/src/toxi/processing/ToxiclibsSupport.java +1239 -0
- data/src/toxi/processing/Tracing.java +25 -0
- data/src/toxi/processing/XYZNormalMapper.java +30 -0
- data/src/toxi/sim/automata/CAMatrix.java +297 -0
- data/src/toxi/sim/automata/CARule.java +76 -0
- data/src/toxi/sim/automata/CARule2D.java +354 -0
- data/src/toxi/sim/automata/CAWolfram1D.java +309 -0
- data/src/toxi/sim/automata/EvolvableMatrix.java +61 -0
- data/src/toxi/sim/automata/MatrixEvolver.java +42 -0
- data/src/toxi/sim/dla/BottomUpOrder.java +76 -0
- data/src/toxi/sim/dla/DLA.java +497 -0
- data/src/toxi/sim/dla/DLAConfiguration.java +364 -0
- data/src/toxi/sim/dla/DLAEventAdapter.java +64 -0
- data/src/toxi/sim/dla/DLAEventListener.java +57 -0
- data/src/toxi/sim/dla/DLAGuideLines.java +219 -0
- data/src/toxi/sim/dla/DLAParticle.java +102 -0
- data/src/toxi/sim/dla/DLASegment.java +88 -0
- data/src/toxi/sim/dla/PipelineOrder.java +50 -0
- data/src/toxi/sim/dla/RadialDistanceOrder.java +92 -0
- data/src/toxi/sim/erosion/ErosionFunction.java +122 -0
- data/src/toxi/sim/erosion/TalusAngleErosion.java +145 -0
- data/src/toxi/sim/erosion/ThermalErosion.java +75 -0
- data/src/toxi/sim/fluids/FluidSolver2D.java +762 -0
- data/src/toxi/sim/fluids/FluidSolver3D.java +326 -0
- data/src/toxi/sim/grayscott/GrayScott.java +469 -0
- data/src/toxi/util/DateUtils.java +141 -0
- data/src/toxi/util/FileSequenceDescriptor.java +181 -0
- data/src/toxi/util/FileUtils.java +467 -0
- data/src/toxi/util/datatypes/ArraySet.java +128 -0
- data/src/toxi/util/datatypes/ArrayUtil.java +404 -0
- data/src/toxi/util/datatypes/BiasedDoubleRange.java +141 -0
- data/src/toxi/util/datatypes/BiasedFloatRange.java +141 -0
- data/src/toxi/util/datatypes/BiasedIntegerRange.java +141 -0
- data/src/toxi/util/datatypes/DoubleRange.java +251 -0
- data/src/toxi/util/datatypes/FloatRange.java +251 -0
- data/src/toxi/util/datatypes/GenericSet.java +215 -0
- data/src/toxi/util/datatypes/IntegerRange.java +247 -0
- data/src/toxi/util/datatypes/IntegerSet.java +149 -0
- data/src/toxi/util/datatypes/ItemIndex.java +72 -0
- data/src/toxi/util/datatypes/SingletonRegistry.java +91 -0
- data/src/toxi/util/datatypes/TypedProperties.java +291 -0
- data/src/toxi/util/datatypes/UndirectedGraph.java +134 -0
- data/src/toxi/util/datatypes/UniqueItemIndex.java +223 -0
- data/src/toxi/util/datatypes/WeightedRandomEntry.java +76 -0
- data/src/toxi/util/datatypes/WeightedRandomSet.java +125 -0
- data/src/toxi/util/events/EventDispatcher.java +86 -0
- data/src/toxi/volume/AdditiveBrush.java +19 -0
- data/src/toxi/volume/ArrayIsoSurface.java +297 -0
- data/src/toxi/volume/BoxBrush.java +100 -0
- data/src/toxi/volume/BrushMode.java +16 -0
- data/src/toxi/volume/HashIsoSurface.java +354 -0
- data/src/toxi/volume/IsoSurface.java +59 -0
- data/src/toxi/volume/MarchingCubesIndex.java +312 -0
- data/src/toxi/volume/MeshLatticeBuilder.java +358 -0
- data/src/toxi/volume/MeshVoxelizer.java +216 -0
- data/src/toxi/volume/MultiplyBrush.java +20 -0
- data/src/toxi/volume/PeakBrush.java +21 -0
- data/src/toxi/volume/ReplaceBrush.java +19 -0
- data/src/toxi/volume/RoundBrush.java +113 -0
- data/src/toxi/volume/VolumetricBrush.java +160 -0
- data/src/toxi/volume/VolumetricHashMap.java +179 -0
- data/src/toxi/volume/VolumetricSpace.java +195 -0
- data/src/toxi/volume/VolumetricSpaceArray.java +214 -0
- data/toxiclibs.gemspec +28 -0
- metadata +442 -31
@@ -0,0 +1,45 @@
|
|
1
|
+
package toxi.newmesh;
|
2
|
+
|
3
|
+
import toxi.util.datatypes.ItemIndex;
|
4
|
+
|
5
|
+
/**
|
6
|
+
*
|
7
|
+
* @author tux
|
8
|
+
*/
|
9
|
+
public abstract class MeshAttributeCompiler {
|
10
|
+
|
11
|
+
/**
|
12
|
+
*
|
13
|
+
*/
|
14
|
+
protected IndexedTriangleMesh mesh;
|
15
|
+
|
16
|
+
/**
|
17
|
+
*
|
18
|
+
* @param f
|
19
|
+
* @param index
|
20
|
+
* @param buf
|
21
|
+
* @param offset
|
22
|
+
*/
|
23
|
+
public abstract void compileFace(AttributedFace f, ItemIndex<?> index,
|
24
|
+
float[] buf, int offset);
|
25
|
+
|
26
|
+
/**
|
27
|
+
*
|
28
|
+
* @return
|
29
|
+
*/
|
30
|
+
public abstract ItemIndex<?> getIndex();
|
31
|
+
|
32
|
+
/**
|
33
|
+
*
|
34
|
+
* @return
|
35
|
+
*/
|
36
|
+
public abstract int getStride();
|
37
|
+
|
38
|
+
/**
|
39
|
+
*
|
40
|
+
* @param mesh
|
41
|
+
*/
|
42
|
+
public void setMesh(IndexedTriangleMesh mesh) {
|
43
|
+
this.mesh = mesh;
|
44
|
+
}
|
45
|
+
}
|
@@ -0,0 +1,52 @@
|
|
1
|
+
package toxi.newmesh;
|
2
|
+
|
3
|
+
import toxi.geom.Vec3D;
|
4
|
+
import toxi.util.datatypes.ItemIndex;
|
5
|
+
|
6
|
+
/**
|
7
|
+
*
|
8
|
+
* @author tux
|
9
|
+
*/
|
10
|
+
public class MeshFaceNormalCompiler extends MeshAttributeCompiler {
|
11
|
+
|
12
|
+
/**
|
13
|
+
*
|
14
|
+
* @param f
|
15
|
+
* @param index
|
16
|
+
* @param buf
|
17
|
+
* @param offset
|
18
|
+
*/
|
19
|
+
@Override
|
20
|
+
public void compileFace(AttributedFace f, ItemIndex<?> index, float[] buf,
|
21
|
+
int offset) {
|
22
|
+
Vec3D v = (Vec3D) index.forID(f.normal);
|
23
|
+
buf[offset++] = v.x;
|
24
|
+
buf[offset++] = v.y;
|
25
|
+
buf[offset++] = v.z;
|
26
|
+
buf[offset++] = v.x;
|
27
|
+
buf[offset++] = v.y;
|
28
|
+
buf[offset++] = v.z;
|
29
|
+
buf[offset++] = v.x;
|
30
|
+
buf[offset++] = v.y;
|
31
|
+
buf[offset++] = v.z;
|
32
|
+
}
|
33
|
+
|
34
|
+
/**
|
35
|
+
*
|
36
|
+
* @return
|
37
|
+
*/
|
38
|
+
@Override
|
39
|
+
public ItemIndex<?> getIndex() {
|
40
|
+
return mesh.fnormals;
|
41
|
+
}
|
42
|
+
|
43
|
+
/**
|
44
|
+
*
|
45
|
+
* @return
|
46
|
+
*/
|
47
|
+
@Override
|
48
|
+
public int getStride() {
|
49
|
+
return 3;
|
50
|
+
}
|
51
|
+
|
52
|
+
}
|
@@ -0,0 +1,52 @@
|
|
1
|
+
package toxi.newmesh;
|
2
|
+
|
3
|
+
import toxi.geom.Vec2D;
|
4
|
+
import toxi.util.datatypes.ItemIndex;
|
5
|
+
|
6
|
+
/**
|
7
|
+
*
|
8
|
+
* @author tux
|
9
|
+
*/
|
10
|
+
public class MeshUVCompiler extends MeshAttributeCompiler {
|
11
|
+
|
12
|
+
/**
|
13
|
+
*
|
14
|
+
* @param f
|
15
|
+
* @param index
|
16
|
+
* @param buf
|
17
|
+
* @param offset
|
18
|
+
*/
|
19
|
+
@Override
|
20
|
+
public void compileFace(AttributedFace f, ItemIndex<?> index, float[] buf,
|
21
|
+
int offset) {
|
22
|
+
int[] vn = f.attribs.get(IndexedTriangleMesh.ATTR_UVCOORDS);
|
23
|
+
Vec2D v = (Vec2D) index.forID(vn[0]);
|
24
|
+
buf[offset++] = v.x;
|
25
|
+
buf[offset++] = v.y;
|
26
|
+
v = (Vec2D) index.forID(vn[1]);
|
27
|
+
buf[offset++] = v.x;
|
28
|
+
buf[offset++] = v.y;
|
29
|
+
v = (Vec2D) index.forID(vn[2]);
|
30
|
+
buf[offset++] = v.x;
|
31
|
+
buf[offset++] = v.y;
|
32
|
+
}
|
33
|
+
|
34
|
+
/**
|
35
|
+
*
|
36
|
+
* @return
|
37
|
+
*/
|
38
|
+
@Override
|
39
|
+
public ItemIndex<?> getIndex() {
|
40
|
+
return mesh.attributes.get(IndexedTriangleMesh.ATTR_UVCOORDS);
|
41
|
+
}
|
42
|
+
|
43
|
+
/**
|
44
|
+
*
|
45
|
+
* @return
|
46
|
+
*/
|
47
|
+
@Override
|
48
|
+
public int getStride() {
|
49
|
+
return 2;
|
50
|
+
}
|
51
|
+
|
52
|
+
}
|
@@ -0,0 +1,49 @@
|
|
1
|
+
package toxi.newmesh;
|
2
|
+
|
3
|
+
import toxi.color.ReadonlyTColor;
|
4
|
+
import toxi.util.datatypes.ItemIndex;
|
5
|
+
|
6
|
+
/**
|
7
|
+
*
|
8
|
+
* @author tux
|
9
|
+
*/
|
10
|
+
public class MeshVertexColorCompiler extends MeshAttributeCompiler {
|
11
|
+
|
12
|
+
/**
|
13
|
+
*
|
14
|
+
* @param f
|
15
|
+
* @param index
|
16
|
+
* @param buf
|
17
|
+
* @param offset
|
18
|
+
*/
|
19
|
+
@Override
|
20
|
+
public void compileFace(AttributedFace f, ItemIndex<?> index, float[] buf,
|
21
|
+
int offset) {
|
22
|
+
int[] vn = f.attribs.get(IndexedTriangleMesh.ATTR_VCOLORS);
|
23
|
+
ReadonlyTColor c = (ReadonlyTColor) index.forID(vn[0]);
|
24
|
+
c.toRGBAArray(buf, offset);
|
25
|
+
c = (ReadonlyTColor) index.forID(vn[1]);
|
26
|
+
c.toRGBAArray(buf, offset + 4);
|
27
|
+
c = (ReadonlyTColor) index.forID(vn[2]);
|
28
|
+
c.toRGBAArray(buf, offset + 8);
|
29
|
+
}
|
30
|
+
|
31
|
+
/**
|
32
|
+
*
|
33
|
+
* @return
|
34
|
+
*/
|
35
|
+
@Override
|
36
|
+
public ItemIndex<?> getIndex() {
|
37
|
+
return mesh.attributes.get(IndexedTriangleMesh.ATTR_VCOLORS);
|
38
|
+
}
|
39
|
+
|
40
|
+
/**
|
41
|
+
*
|
42
|
+
* @return
|
43
|
+
*/
|
44
|
+
@Override
|
45
|
+
public int getStride() {
|
46
|
+
return 4;
|
47
|
+
}
|
48
|
+
|
49
|
+
}
|
@@ -0,0 +1,54 @@
|
|
1
|
+
package toxi.newmesh;
|
2
|
+
|
3
|
+
import toxi.geom.Vec3D;
|
4
|
+
import toxi.util.datatypes.ItemIndex;
|
5
|
+
|
6
|
+
/**
|
7
|
+
*
|
8
|
+
* @author tux
|
9
|
+
*/
|
10
|
+
public class MeshVertexCompiler extends MeshAttributeCompiler {
|
11
|
+
|
12
|
+
/**
|
13
|
+
*
|
14
|
+
* @param f
|
15
|
+
* @param index
|
16
|
+
* @param buf
|
17
|
+
* @param offset
|
18
|
+
*/
|
19
|
+
@Override
|
20
|
+
public void compileFace(AttributedFace f, ItemIndex<?> index, float[] buf,
|
21
|
+
int offset) {
|
22
|
+
Vec3D v = (Vec3D) index.forID(f.a);
|
23
|
+
buf[offset++] = v.x;
|
24
|
+
buf[offset++] = v.y;
|
25
|
+
buf[offset++] = v.z;
|
26
|
+
v = (Vec3D) index.forID(f.b);
|
27
|
+
buf[offset++] = v.x;
|
28
|
+
buf[offset++] = v.y;
|
29
|
+
buf[offset++] = v.z;
|
30
|
+
v = (Vec3D) index.forID(f.c);
|
31
|
+
buf[offset++] = v.x;
|
32
|
+
buf[offset++] = v.y;
|
33
|
+
buf[offset++] = v.z;
|
34
|
+
}
|
35
|
+
|
36
|
+
/**
|
37
|
+
*
|
38
|
+
* @return
|
39
|
+
*/
|
40
|
+
@Override
|
41
|
+
public ItemIndex<?> getIndex() {
|
42
|
+
return mesh.vertices;
|
43
|
+
}
|
44
|
+
|
45
|
+
/**
|
46
|
+
*
|
47
|
+
* @return
|
48
|
+
*/
|
49
|
+
@Override
|
50
|
+
public int getStride() {
|
51
|
+
return 3;
|
52
|
+
}
|
53
|
+
|
54
|
+
}
|
@@ -0,0 +1,55 @@
|
|
1
|
+
package toxi.newmesh;
|
2
|
+
|
3
|
+
import toxi.geom.Vec3D;
|
4
|
+
import toxi.util.datatypes.ItemIndex;
|
5
|
+
|
6
|
+
/**
|
7
|
+
*
|
8
|
+
* @author tux
|
9
|
+
*/
|
10
|
+
public class MeshVertexNormalCompiler extends MeshAttributeCompiler {
|
11
|
+
|
12
|
+
/**
|
13
|
+
*
|
14
|
+
* @param f
|
15
|
+
* @param index
|
16
|
+
* @param buf
|
17
|
+
* @param offset
|
18
|
+
*/
|
19
|
+
@Override
|
20
|
+
public void compileFace(AttributedFace f, ItemIndex<?> index, float[] buf,
|
21
|
+
int offset) {
|
22
|
+
int[] vn = f.attribs.get(IndexedTriangleMesh.ATTR_VNORMALS);
|
23
|
+
Vec3D v = (Vec3D) index.forID(vn[0]);
|
24
|
+
buf[offset++] = v.x;
|
25
|
+
buf[offset++] = v.y;
|
26
|
+
buf[offset++] = v.z;
|
27
|
+
v = (Vec3D) index.forID(vn[1]);
|
28
|
+
buf[offset++] = v.x;
|
29
|
+
buf[offset++] = v.y;
|
30
|
+
buf[offset++] = v.z;
|
31
|
+
v = (Vec3D) index.forID(vn[2]);
|
32
|
+
buf[offset++] = v.x;
|
33
|
+
buf[offset++] = v.y;
|
34
|
+
buf[offset++] = v.z;
|
35
|
+
}
|
36
|
+
|
37
|
+
/**
|
38
|
+
*
|
39
|
+
* @return
|
40
|
+
*/
|
41
|
+
@Override
|
42
|
+
public ItemIndex<?> getIndex() {
|
43
|
+
return mesh.attributes.get(IndexedTriangleMesh.ATTR_VNORMALS);
|
44
|
+
}
|
45
|
+
|
46
|
+
/**
|
47
|
+
*
|
48
|
+
* @return
|
49
|
+
*/
|
50
|
+
@Override
|
51
|
+
public int getStride() {
|
52
|
+
return 3;
|
53
|
+
}
|
54
|
+
|
55
|
+
}
|
@@ -0,0 +1,78 @@
|
|
1
|
+
package toxi.newmesh;
|
2
|
+
|
3
|
+
import toxi.geom.Vec3D;
|
4
|
+
import toxi.util.datatypes.UniqueItemIndex;
|
5
|
+
|
6
|
+
/**
|
7
|
+
*
|
8
|
+
* @author tux
|
9
|
+
*/
|
10
|
+
public class SpatialIndex extends UniqueItemIndex<Vec3D> {
|
11
|
+
|
12
|
+
public float delta,
|
13
|
+
|
14
|
+
/**
|
15
|
+
*
|
16
|
+
*/
|
17
|
+
|
18
|
+
/**
|
19
|
+
*
|
20
|
+
*/
|
21
|
+
deltaSq;
|
22
|
+
|
23
|
+
/**
|
24
|
+
*
|
25
|
+
* @param delta
|
26
|
+
*/
|
27
|
+
public SpatialIndex(float delta) {
|
28
|
+
setDelta(delta);
|
29
|
+
}
|
30
|
+
|
31
|
+
private int getClosestIndexed(Vec3D item) {
|
32
|
+
int c = -1;
|
33
|
+
float minD = deltaSq;
|
34
|
+
for (int i = 0, num = index.size(); i < num; i++) {
|
35
|
+
float d = index.get(i).distanceToSquared(item);
|
36
|
+
if (d < minD) {
|
37
|
+
minD = d;
|
38
|
+
c = i;
|
39
|
+
}
|
40
|
+
}
|
41
|
+
return c;
|
42
|
+
}
|
43
|
+
|
44
|
+
/**
|
45
|
+
*
|
46
|
+
* @return
|
47
|
+
*/
|
48
|
+
public float getDelta() {
|
49
|
+
return delta;
|
50
|
+
}
|
51
|
+
|
52
|
+
/**
|
53
|
+
*
|
54
|
+
* @param item
|
55
|
+
* @return
|
56
|
+
*/
|
57
|
+
@Override
|
58
|
+
public int index(Vec3D item) {
|
59
|
+
int id = getID(item);
|
60
|
+
if (id == -1) {
|
61
|
+
id = getClosestIndexed(item);
|
62
|
+
}
|
63
|
+
if (id != -1) {
|
64
|
+
return id;
|
65
|
+
} else {
|
66
|
+
return super.index(item);
|
67
|
+
}
|
68
|
+
}
|
69
|
+
|
70
|
+
/**
|
71
|
+
*
|
72
|
+
* @param delta
|
73
|
+
*/
|
74
|
+
public final void setDelta(float delta) {
|
75
|
+
this.delta = delta;
|
76
|
+
this.deltaSq = delta * delta;
|
77
|
+
}
|
78
|
+
}
|
@@ -0,0 +1,100 @@
|
|
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.physics2d;
|
29
|
+
|
30
|
+
import java.util.ArrayList;
|
31
|
+
import java.util.List;
|
32
|
+
|
33
|
+
import toxi.geom.Spline2D;
|
34
|
+
import toxi.geom.Vec2D;
|
35
|
+
|
36
|
+
/**
|
37
|
+
* This class is used as a builder to dynamically construct a
|
38
|
+
* {@link ParticleString2D} following a given spline path, sampled at a fixed
|
39
|
+
* frequency/step distance. This functionality is needed especially when working
|
40
|
+
* with various obstacles/mechanic constraints which the string should flow/wrap
|
41
|
+
* around.
|
42
|
+
*/
|
43
|
+
public class ParticlePath2D extends Spline2D {
|
44
|
+
|
45
|
+
List<VerletParticle2D> particles = new ArrayList<>();
|
46
|
+
|
47
|
+
/**
|
48
|
+
*
|
49
|
+
*/
|
50
|
+
public ParticlePath2D() {
|
51
|
+
super();
|
52
|
+
}
|
53
|
+
|
54
|
+
/**
|
55
|
+
*
|
56
|
+
* @param points
|
57
|
+
*/
|
58
|
+
public ParticlePath2D(List<Vec2D> points) {
|
59
|
+
super(points);
|
60
|
+
}
|
61
|
+
|
62
|
+
/**
|
63
|
+
* Creates particles along the spline at the fixed interval given. The
|
64
|
+
* precision of this interval will largely depend on the number of
|
65
|
+
* subdivision vertices created, but can be adjusted via the related
|
66
|
+
* parameter.
|
67
|
+
*
|
68
|
+
* @param physics
|
69
|
+
* physics instance
|
70
|
+
* @param subDiv
|
71
|
+
* number spline segment subdivisions
|
72
|
+
* @param step
|
73
|
+
* desired rest length between particles
|
74
|
+
* @param mass
|
75
|
+
* desired particle mass
|
76
|
+
* @return list of particles
|
77
|
+
*/
|
78
|
+
public List<VerletParticle2D> createParticles(VerletPhysics2D physics,
|
79
|
+
int subDiv, float step, float mass) {
|
80
|
+
particles.clear();
|
81
|
+
for (Vec2D v : toLineStrip2D(subDiv).getDecimatedVertices(step, true)) {
|
82
|
+
VerletParticle2D p = createSingleParticle(v, mass);
|
83
|
+
particles.add(p);
|
84
|
+
physics.addParticle(p);
|
85
|
+
}
|
86
|
+
return particles;
|
87
|
+
}
|
88
|
+
|
89
|
+
/**
|
90
|
+
* Extension point for creating a custom/sub-classed VerletParticle
|
91
|
+
* instance.
|
92
|
+
*
|
93
|
+
* @param pos
|
94
|
+
* @param mass
|
95
|
+
* @return particle
|
96
|
+
*/
|
97
|
+
protected VerletParticle2D createSingleParticle(Vec2D pos, float mass) {
|
98
|
+
return new VerletParticle2D(pos, mass);
|
99
|
+
}
|
100
|
+
}
|