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.
- checksums.yaml +4 -4
- data/.mvn/extensions.xml +1 -1
- data/.travis.yml +3 -4
- data/CHANGELOG.md +3 -0
- data/README.md +2 -2
- data/Rakefile +0 -1
- data/examples/attract_repel/attractor.rb +1 -1
- data/examples/attract_repel/particle.rb +1 -1
- data/examples/boolean_shapes.rb +9 -5
- data/examples/force_directed/node.rb +1 -1
- data/examples/inflate_mesh.rb +1 -1
- data/examples/model_align.rb +1 -1
- data/examples/physics_type.rb +1 -1
- data/examples/povmesh/ftest.rb +3 -3
- data/examples/toxiclibs_color_theme.rb +91 -0
- data/lib/toxiclibs.rb +52 -37
- data/lib/toxiclibs/version.rb +1 -1
- data/pom.rb +22 -26
- data/pom.xml +42 -64
- data/src/{toxi → main/java/toxi}/color/AccessCriteria.java +0 -0
- data/src/{toxi → main/java/toxi}/color/AlphaAccessor.java +0 -0
- data/src/{toxi → main/java/toxi}/color/CMYKAccessor.java +0 -0
- data/src/{toxi → main/java/toxi}/color/CMYKDistanceProxy.java +0 -0
- data/src/{toxi → main/java/toxi}/color/ColorGradient.java +0 -0
- data/src/{toxi → main/java/toxi}/color/ColorList.java +2 -4
- data/src/{toxi → main/java/toxi}/color/ColorRange.java +0 -0
- data/src/{toxi → main/java/toxi}/color/ColorTheme.java +0 -0
- data/src/{toxi → main/java/toxi}/color/DistanceProxy.java +0 -0
- data/src/{toxi → main/java/toxi}/color/HSVAccessor.java +0 -0
- data/src/{toxi → main/java/toxi}/color/HSVDistanceProxy.java +0 -0
- data/src/{toxi → main/java/toxi}/color/HistEntry.java +0 -0
- data/src/{toxi → main/java/toxi}/color/Histogram.java +0 -0
- data/src/{toxi → main/java/toxi}/color/Hue.java +0 -0
- data/src/{toxi → main/java/toxi}/color/LuminanceAccessor.java +0 -0
- data/src/{toxi → main/java/toxi}/color/NamedColor.java +0 -0
- data/src/{toxi → main/java/toxi}/color/ProximityComparator.java +0 -0
- data/src/{toxi → main/java/toxi}/color/RGBAccessor.java +0 -0
- data/src/{toxi → main/java/toxi}/color/RGBDistanceProxy.java +0 -0
- data/src/{toxi → main/java/toxi}/color/ReadonlyTColor.java +0 -0
- data/src/{toxi → main/java/toxi}/color/TColor.java +0 -0
- data/src/{toxi → main/java/toxi}/color/TColorAdapter.java +4 -4
- data/src/{toxi → main/java/toxi}/color/ToneMap.java +0 -0
- data/src/{toxi → main/java/toxi}/color/theory/AnalogousStrategy.java +0 -0
- data/src/{toxi → main/java/toxi}/color/theory/ColorTheoryRegistry.java +0 -0
- data/src/{toxi → main/java/toxi}/color/theory/ColorTheoryStrategy.java +0 -0
- data/src/{toxi → main/java/toxi}/color/theory/ComplementaryStrategy.java +0 -0
- data/src/{toxi → main/java/toxi}/color/theory/CompoundTheoryStrategy.java +0 -0
- data/src/{toxi → main/java/toxi}/color/theory/LeftSplitComplementaryStrategy.java +0 -0
- data/src/{toxi → main/java/toxi}/color/theory/MonochromeTheoryStrategy.java +0 -0
- data/src/{toxi → main/java/toxi}/color/theory/RightSplitComplementaryStrategy.java +0 -0
- data/src/{toxi → main/java/toxi}/color/theory/SingleComplementStrategy.java +0 -0
- data/src/{toxi → main/java/toxi}/color/theory/SplitComplementaryStrategy.java +0 -0
- data/src/{toxi → main/java/toxi}/color/theory/TetradTheoryStrategy.java +0 -0
- data/src/{toxi → main/java/toxi}/color/theory/TriadTheoryStrategy.java +0 -0
- data/src/{toxi → main/java/toxi}/data/csv/CSVAdapter.java +0 -0
- data/src/{toxi → main/java/toxi}/data/csv/CSVFieldMapper.java +0 -0
- data/src/{toxi → main/java/toxi}/data/csv/CSVListener.java +0 -0
- data/src/{toxi → main/java/toxi}/data/csv/CSVParser.java +0 -0
- data/src/{toxi → main/java/toxi}/data/feeds/AtomAuthor.java +2 -2
- data/src/{toxi → main/java/toxi}/data/feeds/AtomContent.java +3 -4
- data/src/{toxi → main/java/toxi}/data/feeds/AtomEntry.java +9 -13
- data/src/main/java/toxi/data/feeds/AtomFeed.java +91 -0
- data/src/{toxi → main/java/toxi}/data/feeds/AtomLink.java +3 -2
- data/src/{toxi → main/java/toxi}/data/feeds/RSSChannel.java +10 -11
- data/src/{toxi → main/java/toxi}/data/feeds/RSSEnclosure.java +3 -3
- data/src/{toxi → main/java/toxi}/data/feeds/RSSItem.java +11 -13
- data/src/{toxi → main/java/toxi}/data/feeds/util/EntityStripper.java +0 -0
- data/src/{toxi → main/java/toxi}/data/feeds/util/Iso8601DateAdapter.java +6 -7
- data/src/{toxi → main/java/toxi}/data/feeds/util/Rfc822DateAdapter.java +5 -6
- data/src/{toxi → main/java/toxi}/geom/AABB.java +8 -9
- data/src/{toxi → main/java/toxi}/geom/Axis3D.java +0 -0
- data/src/{toxi → main/java/toxi}/geom/AxisAlignedCylinder.java +0 -0
- data/src/{toxi → main/java/toxi}/geom/BernsteinPolynomial.java +0 -0
- data/src/{toxi → main/java/toxi}/geom/BezierCurve2D.java +0 -0
- data/src/{toxi → main/java/toxi}/geom/BezierCurve3D.java +0 -0
- data/src/{toxi → main/java/toxi}/geom/BooleanShapeBuilder.java +0 -0
- data/src/{toxi → main/java/toxi}/geom/BoxIntersector.java +0 -0
- data/src/{toxi → main/java/toxi}/geom/Circle.java +2 -2
- data/src/{toxi → main/java/toxi}/geom/CircleIntersector.java +0 -0
- data/src/{toxi → main/java/toxi}/geom/Cone.java +0 -0
- data/src/{toxi → main/java/toxi}/geom/ConvexPolygonClipper.java +0 -0
- data/src/{toxi → main/java/toxi}/geom/CoordinateExtractor.java +0 -0
- data/src/{toxi → main/java/toxi}/geom/Ellipse.java +0 -0
- data/src/{toxi → main/java/toxi}/geom/GMatrix.java +0 -0
- data/src/{toxi → main/java/toxi}/geom/GVector.java +0 -0
- data/src/{toxi → main/java/toxi}/geom/GlobalGridTesselator.java +0 -0
- data/src/{toxi → main/java/toxi}/geom/GridTesselator.java +0 -0
- data/src/{toxi → main/java/toxi}/geom/Intersector2D.java +0 -0
- data/src/{toxi → main/java/toxi}/geom/Intersector3D.java +0 -0
- data/src/{toxi → main/java/toxi}/geom/IsectData2D.java +0 -0
- data/src/{toxi → main/java/toxi}/geom/IsectData3D.java +0 -0
- data/src/{toxi → main/java/toxi}/geom/Line2D.java +1 -2
- data/src/{toxi → main/java/toxi}/geom/Line3D.java +1 -2
- data/src/{toxi → main/java/toxi}/geom/LineStrip2D.java +2 -2
- data/src/{toxi → main/java/toxi}/geom/LineStrip3D.java +2 -2
- data/src/{toxi → main/java/toxi}/geom/LocalGridTesselator.java +0 -0
- data/src/{toxi → main/java/toxi}/geom/Matrix3d.java +0 -0
- data/src/{toxi → main/java/toxi}/geom/Matrix4f.java +0 -0
- data/src/{toxi → main/java/toxi}/geom/Matrix4x4.java +0 -0
- data/src/{toxi → main/java/toxi}/geom/MatrixSizeException.java +0 -0
- data/src/{toxi → main/java/toxi}/geom/OctreeVisitor.java +0 -0
- data/src/{toxi → main/java/toxi}/geom/Origin3D.java +12 -6
- data/src/{toxi → main/java/toxi}/geom/Plane.java +3 -5
- data/src/{toxi → main/java/toxi}/geom/PlaneIntersector.java +0 -0
- data/src/{toxi → main/java/toxi}/geom/PointCloud3D.java +15 -12
- data/src/{toxi → main/java/toxi}/geom/PointOctree.java +0 -0
- data/src/{toxi → main/java/toxi}/geom/PointQuadtree.java +0 -0
- data/src/{toxi → main/java/toxi}/geom/Polygon2D.java +34 -45
- data/src/{toxi → main/java/toxi}/geom/PolygonClipper2D.java +0 -0
- data/src/{toxi → main/java/toxi}/geom/PolygonTesselator.java +0 -0
- data/src/{toxi → main/java/toxi}/geom/QuadtreeVisitor.java +0 -0
- data/src/{toxi → main/java/toxi}/geom/Quaternion.java +3 -5
- data/src/{toxi → main/java/toxi}/geom/Ray2D.java +4 -5
- data/src/{toxi → main/java/toxi}/geom/Ray3D.java +3 -5
- data/src/{toxi → main/java/toxi}/geom/Ray3DIntersector.java +0 -0
- data/src/{toxi → main/java/toxi}/geom/ReadonlyVec2D.java +0 -0
- data/src/{toxi → main/java/toxi}/geom/ReadonlyVec3D.java +0 -0
- data/src/{toxi → main/java/toxi}/geom/ReadonlyVec4D.java +0 -0
- data/src/{toxi → main/java/toxi}/geom/Rect.java +3 -5
- data/src/{toxi → main/java/toxi}/geom/Reflector3D.java +0 -0
- data/src/{toxi → main/java/toxi}/geom/Shape2D.java +0 -0
- data/src/{toxi → main/java/toxi}/geom/Shape3D.java +0 -0
- data/src/{toxi → main/java/toxi}/geom/SingularMatrixException.java +0 -0
- data/src/{toxi → main/java/toxi}/geom/SpatialBins.java +0 -0
- data/src/{toxi → main/java/toxi}/geom/SpatialIndex.java +0 -0
- data/src/{toxi → main/java/toxi}/geom/Sphere.java +3 -5
- data/src/{toxi → main/java/toxi}/geom/SphereIntersectorReflector.java +0 -0
- data/src/{toxi → main/java/toxi}/geom/Spline2D.java +12 -16
- data/src/{toxi → main/java/toxi}/geom/Spline3D.java +12 -16
- data/src/{toxi → main/java/toxi}/geom/SutherlandHodgemanClipper.java +0 -0
- data/src/{toxi → main/java/toxi}/geom/Triangle2D.java +4 -7
- data/src/{toxi → main/java/toxi}/geom/Triangle3D.java +5 -8
- data/src/{toxi → main/java/toxi}/geom/TriangleIntersector.java +0 -0
- data/src/{toxi → main/java/toxi}/geom/Vec2D.java +3 -3
- data/src/{toxi → main/java/toxi}/geom/Vec3D.java +4 -4
- data/src/{toxi → main/java/toxi}/geom/Vec4D.java +5 -5
- data/src/{toxi → main/java/toxi}/geom/VecMathUtil.java +0 -0
- data/src/{toxi → main/java/toxi}/geom/XAxisCylinder.java +0 -0
- data/src/{toxi → main/java/toxi}/geom/YAxisCylinder.java +0 -0
- data/src/{toxi → main/java/toxi}/geom/ZAxisCylinder.java +0 -0
- data/src/{toxi → main/java/toxi}/geom/mesh/BezierPatch.java +0 -0
- data/src/{toxi → main/java/toxi}/geom/mesh/BoxSelector.java +0 -0
- data/src/{toxi → main/java/toxi}/geom/mesh/DefaultSTLColorModel.java +0 -0
- data/src/{toxi → main/java/toxi}/geom/mesh/DefaultSelector.java +0 -0
- data/src/{toxi → main/java/toxi}/geom/mesh/Face.java +0 -0
- data/src/{toxi → main/java/toxi}/geom/mesh/LaplacianSmooth.java +0 -0
- data/src/{toxi → main/java/toxi}/geom/mesh/MaterialiseSTLColorModel.java +0 -0
- data/src/{toxi → main/java/toxi}/geom/mesh/Mesh3D.java +0 -0
- data/src/{toxi → main/java/toxi}/geom/mesh/MeshIntersector.java +0 -0
- data/src/{toxi → main/java/toxi}/geom/mesh/OBJWriter.java +0 -0
- data/src/{toxi → main/java/toxi}/geom/mesh/PLYWriter.java +0 -0
- data/src/{toxi → main/java/toxi}/geom/mesh/PlaneSelector.java +0 -0
- data/src/{toxi → main/java/toxi}/geom/mesh/STLColorModel.java +0 -0
- data/src/{toxi → main/java/toxi}/geom/mesh/STLReader.java +0 -0
- data/src/{toxi → main/java/toxi}/geom/mesh/STLWriter.java +0 -0
- data/src/{toxi → main/java/toxi}/geom/mesh/SphereFunction.java +0 -0
- data/src/{toxi → main/java/toxi}/geom/mesh/SphericalHarmonics.java +0 -0
- data/src/{toxi → main/java/toxi}/geom/mesh/SuperEllipsoid.java +0 -0
- data/src/{toxi → main/java/toxi}/geom/mesh/SurfaceFunction.java +0 -0
- data/src/{toxi → main/java/toxi}/geom/mesh/SurfaceMeshBuilder.java +0 -0
- data/src/{toxi → main/java/toxi}/geom/mesh/Terrain.java +0 -0
- data/src/{toxi → main/java/toxi}/geom/mesh/TriangleMesh.java +0 -0
- data/src/{toxi → main/java/toxi}/geom/mesh/Vertex.java +0 -0
- data/src/{toxi → main/java/toxi}/geom/mesh/VertexSelector.java +0 -0
- data/src/{toxi → main/java/toxi}/geom/mesh/WEFace.java +0 -0
- data/src/{toxi → main/java/toxi}/geom/mesh/WEMeshFilterStrategy.java +0 -0
- data/src/{toxi → main/java/toxi}/geom/mesh/WETriangleMesh.java +0 -0
- data/src/{toxi → main/java/toxi}/geom/mesh/WEVertex.java +0 -0
- data/src/{toxi → main/java/toxi}/geom/mesh/WingedEdge.java +2 -2
- data/src/{toxi → main/java/toxi}/geom/mesh/subdiv/CentroidSubdiv.java +0 -0
- data/src/{toxi → main/java/toxi}/geom/mesh/subdiv/DisplacementSubdivision.java +0 -0
- data/src/{toxi → main/java/toxi}/geom/mesh/subdiv/DualDisplacementSubdivision.java +0 -0
- data/src/{toxi → main/java/toxi}/geom/mesh/subdiv/DualSubdivision.java +0 -0
- data/src/{toxi → main/java/toxi}/geom/mesh/subdiv/EdgeLengthComparator.java +0 -0
- data/src/{toxi → main/java/toxi}/geom/mesh/subdiv/FaceCountComparator.java +0 -0
- data/src/{toxi → main/java/toxi}/geom/mesh/subdiv/MidpointDisplacementSubdivision.java +0 -0
- data/src/{toxi → main/java/toxi}/geom/mesh/subdiv/MidpointSubdiv.java +0 -0
- data/src/{toxi → main/java/toxi}/geom/mesh/subdiv/MidpointSubdivision.java +0 -0
- data/src/{toxi → main/java/toxi}/geom/mesh/subdiv/NewSubdivStrategy.java +0 -0
- data/src/{toxi → main/java/toxi}/geom/mesh/subdiv/NormalDisplacementSubdivision.java +0 -0
- data/src/{toxi → main/java/toxi}/geom/mesh/subdiv/SubdivisionStrategy.java +0 -0
- data/src/{toxi → main/java/toxi}/geom/mesh/subdiv/TriSubdivision.java +0 -0
- data/src/{toxi → main/java/toxi}/geom/mesh2d/DelaunayTriangle.java +0 -0
- data/src/{toxi → main/java/toxi}/geom/mesh2d/DelaunayTriangulation.java +5 -7
- data/src/{toxi → main/java/toxi}/geom/mesh2d/DelaunayVertex.java +0 -0
- data/src/{toxi → main/java/toxi}/geom/mesh2d/Voronoi.java +0 -0
- data/src/{toxi → main/java/toxi}/geom/nurbs/BasicNurbsCurve.java +0 -0
- data/src/{toxi → main/java/toxi}/geom/nurbs/BasicNurbsSurface.java +0 -0
- data/src/{toxi → main/java/toxi}/geom/nurbs/ControlNet.java +0 -0
- data/src/{toxi → main/java/toxi}/geom/nurbs/CurveCreator.java +0 -0
- data/src/{toxi → main/java/toxi}/geom/nurbs/CurveUtils.java +0 -0
- data/src/{toxi → main/java/toxi}/geom/nurbs/InterpolationException.java +0 -0
- data/src/{toxi → main/java/toxi}/geom/nurbs/KnotVector.java +0 -0
- data/src/{toxi → main/java/toxi}/geom/nurbs/NurbsCreator.java +2 -2
- data/src/{toxi → main/java/toxi}/geom/nurbs/NurbsCurve.java +0 -0
- data/src/{toxi → main/java/toxi}/geom/nurbs/NurbsMeshCreator.java +0 -0
- data/src/{toxi → main/java/toxi}/geom/nurbs/NurbsSurface.java +0 -0
- data/src/{toxi → main/java/toxi}/image/util/Filter8bit.java +0 -0
- data/src/{toxi → main/java/toxi}/image/util/TiledFrameExporter.java +0 -0
- data/src/{toxi → main/java/toxi}/math/BezierInterpolation.java +0 -0
- data/src/{toxi → main/java/toxi}/math/CircularInterpolation.java +0 -0
- data/src/{toxi → main/java/toxi}/math/CosineInterpolation.java +0 -0
- data/src/{toxi → main/java/toxi}/math/DecimatedInterpolation.java +0 -0
- data/src/{toxi → main/java/toxi}/math/ExponentialInterpolation.java +0 -0
- data/src/{toxi → main/java/toxi}/math/InterpolateStrategy.java +0 -0
- data/src/{toxi → main/java/toxi}/math/Interpolation2D.java +0 -0
- data/src/{toxi → main/java/toxi}/math/LinearInterpolation.java +0 -0
- data/src/{toxi → main/java/toxi}/math/MathUtils.java +0 -0
- data/src/{toxi → main/java/toxi}/math/NonLinearScaleMap.java +0 -0
- data/src/{toxi → main/java/toxi}/math/ScaleMap.java +0 -0
- data/src/{toxi → main/java/toxi}/math/SigmoidInterpolation.java +0 -0
- data/src/{toxi → main/java/toxi}/math/SinCosLUT.java +0 -0
- data/src/{toxi → main/java/toxi}/math/ThresholdInterpolation.java +0 -0
- data/src/{toxi → main/java/toxi}/math/ZoomLensInterpolation.java +0 -0
- data/src/{toxi → main/java/toxi}/math/conversion/UnitTranslator.java +0 -0
- data/src/{toxi → main/java/toxi}/math/noise/PerlinNoise.java +0 -0
- data/src/{toxi → main/java/toxi}/math/noise/SimplexNoise.java +0 -0
- data/src/{toxi → main/java/toxi}/math/waves/AMFMSineWave.java +0 -0
- data/src/{toxi → main/java/toxi}/math/waves/AbstractWave.java +0 -0
- data/src/{toxi → main/java/toxi}/math/waves/ConstantWave.java +0 -0
- data/src/{toxi → main/java/toxi}/math/waves/FMHarmonicSquareWave.java +0 -0
- data/src/{toxi → main/java/toxi}/math/waves/FMSawtoothWave.java +0 -0
- data/src/{toxi → main/java/toxi}/math/waves/FMSineWave.java +0 -0
- data/src/{toxi → main/java/toxi}/math/waves/FMSquareWave.java +0 -0
- data/src/{toxi → main/java/toxi}/math/waves/FMTriangleWave.java +0 -0
- data/src/{toxi → main/java/toxi}/math/waves/SineWave.java +2 -2
- data/src/{toxi → main/java/toxi}/math/waves/Wave2D.java +0 -0
- data/src/{toxi → main/java/toxi}/math/waves/WaveState.java +0 -0
- data/src/{toxi → main/java/toxi}/music/scale/AbstractScale.java +0 -0
- data/src/{toxi → main/java/toxi}/music/scale/GenericScale.java +0 -0
- data/src/{toxi → main/java/toxi}/music/scale/MajorScale.java +0 -0
- data/src/{toxi → main/java/toxi}/newmesh/AttributedEdge.java +0 -0
- data/src/{toxi → main/java/toxi}/newmesh/AttributedFace.java +0 -0
- data/src/{toxi → main/java/toxi}/newmesh/IndexedTriangleMesh.java +70 -69
- data/src/{toxi → main/java/toxi}/newmesh/MeshAttributeCompiler.java +0 -0
- data/src/{toxi → main/java/toxi}/newmesh/MeshFaceNormalCompiler.java +0 -0
- data/src/{toxi → main/java/toxi}/newmesh/MeshUVCompiler.java +0 -0
- data/src/{toxi → main/java/toxi}/newmesh/MeshVertexColorCompiler.java +0 -0
- data/src/{toxi → main/java/toxi}/newmesh/MeshVertexCompiler.java +0 -0
- data/src/{toxi → main/java/toxi}/newmesh/MeshVertexNormalCompiler.java +0 -0
- data/src/{toxi → main/java/toxi}/newmesh/SpatialIndex.java +0 -0
- data/src/{toxi → main/java/toxi}/physics2d/ParticlePath2D.java +4 -3
- data/src/{toxi → main/java/toxi}/physics2d/ParticleString2D.java +2 -2
- data/src/{toxi → main/java/toxi}/physics2d/PullBackSpring2D.java +0 -0
- data/src/{toxi → main/java/toxi}/physics2d/VerletConstrainedSpring2D.java +0 -0
- data/src/{toxi → main/java/toxi}/physics2d/VerletMinDistanceSpring2D.java +0 -0
- data/src/main/java/toxi/physics2d/VerletParticle2D.java +449 -0
- data/src/main/java/toxi/physics2d/VerletPhysics2D.java +440 -0
- data/src/{toxi → main/java/toxi}/physics2d/VerletSpring2D.java +0 -0
- data/src/main/java/toxi/physics2d/behaviors/AttractionBehavior2D.java +211 -0
- data/src/{toxi → main/java/toxi}/physics2d/behaviors/ConstantForceBehavior2D.java +0 -0
- data/src/{toxi → main/java/toxi}/physics2d/behaviors/GravityBehavior2D.java +0 -0
- data/src/{toxi → main/java/toxi}/physics2d/behaviors/ParticleBehavior2D.java +0 -0
- data/src/{toxi → main/java/toxi}/physics2d/constraints/AngularConstraint.java +0 -0
- data/src/{toxi → main/java/toxi}/physics2d/constraints/AxisConstraint.java +0 -0
- data/src/{toxi → main/java/toxi}/physics2d/constraints/CircularConstraint.java +0 -0
- data/src/{toxi → main/java/toxi}/physics2d/constraints/MaxConstraint.java +0 -0
- data/src/{toxi → main/java/toxi}/physics2d/constraints/MinConstraint.java +0 -0
- data/src/{toxi → main/java/toxi}/physics2d/constraints/ParticleConstraint2D.java +0 -0
- data/src/{toxi → main/java/toxi}/physics2d/constraints/PolygonConstraint.java +0 -0
- data/src/{toxi → main/java/toxi}/physics2d/constraints/RectConstraint.java +0 -0
- data/src/{toxi → main/java/toxi}/physics3d/ParticlePath3D.java +4 -3
- data/src/{toxi → main/java/toxi}/physics3d/ParticleString3D.java +2 -2
- data/src/{toxi → main/java/toxi}/physics3d/PullBackSpring3D.java +0 -0
- data/src/{toxi → main/java/toxi}/physics3d/VerletConstrainedSpring3D.java +0 -0
- data/src/{toxi → main/java/toxi}/physics3d/VerletMinDistanceSpring3D.java +0 -0
- data/src/main/java/toxi/physics3d/VerletParticle3D.java +377 -0
- data/src/{toxi → main/java/toxi}/physics3d/VerletPhysics3D.java +0 -0
- data/src/{toxi → main/java/toxi}/physics3d/VerletSpring3D.java +0 -0
- data/src/{toxi → main/java/toxi}/physics3d/behaviors/AttractionBehavior3D.java +0 -0
- data/src/{toxi → main/java/toxi}/physics3d/behaviors/ConstantForceBehavior3D.java +0 -0
- data/src/{toxi → main/java/toxi}/physics3d/behaviors/GravityBehavior3D.java +0 -0
- data/src/{toxi → main/java/toxi}/physics3d/behaviors/ParticleBehavior3D.java +0 -0
- data/src/{toxi → main/java/toxi}/physics3d/constraints/AxisConstraint.java +1 -0
- data/src/{toxi → main/java/toxi}/physics3d/constraints/BoxConstraint.java +0 -0
- data/src/{toxi → main/java/toxi}/physics3d/constraints/CylinderConstraint.java +1 -0
- data/src/{toxi → main/java/toxi}/physics3d/constraints/MaxConstraint.java +1 -0
- data/src/{toxi → main/java/toxi}/physics3d/constraints/MinConstraint.java +1 -0
- data/src/{toxi → main/java/toxi}/physics3d/constraints/ParticleConstraint3D.java +0 -0
- data/src/{toxi → main/java/toxi}/physics3d/constraints/PlaneConstraint.java +0 -0
- data/src/{toxi → main/java/toxi}/physics3d/constraints/SoftBoxConstraint.java +38 -38
- data/src/{toxi → main/java/toxi}/physics3d/constraints/SphereConstraint.java +1 -0
- data/src/{toxi → main/java/toxi}/processing/ArrowModifier.java +0 -0
- data/src/{toxi → main/java/toxi}/processing/DashedLineModifier.java +0 -0
- data/src/{toxi → main/java/toxi}/processing/DeltaOrientationMapper.java +0 -0
- data/src/{toxi → main/java/toxi}/processing/Line2DRenderModifier.java +0 -0
- data/src/{toxi → main/java/toxi}/processing/MeshToVBO.java +0 -0
- data/src/{toxi → main/java/toxi}/processing/NormalMapper.java +0 -0
- data/src/{toxi → main/java/toxi}/processing/POVInterface.java +0 -0
- data/src/{toxi → main/java/toxi}/processing/POVMesh.java +0 -0
- data/src/{toxi → main/java/toxi}/processing/POVWriter.java +0 -0
- data/src/{toxi → main/java/toxi}/processing/RCOpaque.java +0 -0
- data/src/{toxi → main/java/toxi}/processing/RCTransp.java +0 -0
- data/src/{toxi → main/java/toxi}/processing/TextureBuilder.java +0 -0
- data/src/{toxi → main/java/toxi}/processing/Textures.java +0 -0
- data/src/{toxi → main/java/toxi}/processing/ToxiclibsSupport.java +0 -0
- data/src/{toxi → main/java/toxi}/processing/Tracing.java +0 -0
- data/src/{toxi → main/java/toxi}/processing/XYZNormalMapper.java +0 -0
- data/src/{toxi → main/java/toxi}/sim/automata/CAMatrix.java +0 -0
- data/src/{toxi → main/java/toxi}/sim/automata/CARule.java +0 -0
- data/src/{toxi → main/java/toxi}/sim/automata/CARule2D.java +0 -0
- data/src/{toxi → main/java/toxi}/sim/automata/CAWolfram1D.java +0 -0
- data/src/{toxi → main/java/toxi}/sim/automata/EvolvableMatrix.java +0 -0
- data/src/{toxi → main/java/toxi}/sim/automata/MatrixEvolver.java +0 -0
- data/src/{toxi → main/java/toxi}/sim/dla/BottomUpOrder.java +0 -0
- data/src/{toxi → main/java/toxi}/sim/dla/DLA.java +0 -0
- data/src/{toxi → main/java/toxi}/sim/dla/DLAConfiguration.java +0 -0
- data/src/{toxi → main/java/toxi}/sim/dla/DLAEventAdapter.java +0 -0
- data/src/{toxi → main/java/toxi}/sim/dla/DLAEventListener.java +0 -0
- data/src/{toxi → main/java/toxi}/sim/dla/DLAGuideLines.java +0 -0
- data/src/{toxi → main/java/toxi}/sim/dla/DLAParticle.java +0 -0
- data/src/{toxi → main/java/toxi}/sim/dla/DLASegment.java +0 -0
- data/src/{toxi → main/java/toxi}/sim/dla/PipelineOrder.java +0 -0
- data/src/{toxi → main/java/toxi}/sim/dla/RadialDistanceOrder.java +0 -0
- data/src/{toxi → main/java/toxi}/sim/erosion/ErosionFunction.java +0 -0
- data/src/{toxi → main/java/toxi}/sim/erosion/TalusAngleErosion.java +0 -0
- data/src/{toxi → main/java/toxi}/sim/erosion/ThermalErosion.java +0 -0
- data/src/{toxi → main/java/toxi}/sim/fluids/FluidSolver2D.java +0 -0
- data/src/{toxi → main/java/toxi}/sim/fluids/FluidSolver3D.java +0 -0
- data/src/{toxi → main/java/toxi}/sim/grayscott/GrayScott.java +0 -0
- data/src/{toxi → main/java/toxi}/util/DateUtils.java +0 -0
- data/src/{toxi → main/java/toxi}/util/FileSequenceDescriptor.java +0 -0
- data/src/main/java/toxi/util/FileUtils.java +443 -0
- data/src/{toxi → main/java/toxi}/util/datatypes/ArraySet.java +0 -0
- data/src/{toxi → main/java/toxi}/util/datatypes/ArrayUtil.java +0 -0
- data/src/{toxi → main/java/toxi}/util/datatypes/BiasedDoubleRange.java +3 -3
- data/src/{toxi → main/java/toxi}/util/datatypes/BiasedFloatRange.java +2 -3
- data/src/{toxi → main/java/toxi}/util/datatypes/BiasedIntegerRange.java +3 -3
- data/src/{toxi → main/java/toxi}/util/datatypes/DoubleRange.java +3 -3
- data/src/{toxi → main/java/toxi}/util/datatypes/FloatRange.java +3 -3
- data/src/{toxi → main/java/toxi}/util/datatypes/GenericSet.java +0 -0
- data/src/{toxi → main/java/toxi}/util/datatypes/IntegerRange.java +3 -3
- data/src/{toxi → main/java/toxi}/util/datatypes/IntegerSet.java +0 -0
- data/src/{toxi → main/java/toxi}/util/datatypes/ItemIndex.java +0 -0
- data/src/{toxi → main/java/toxi}/util/datatypes/SingletonRegistry.java +0 -0
- data/src/{toxi → main/java/toxi}/util/datatypes/TypedProperties.java +0 -0
- data/src/{toxi → main/java/toxi}/util/datatypes/UndirectedGraph.java +0 -0
- data/src/{toxi → main/java/toxi}/util/datatypes/UniqueItemIndex.java +0 -0
- data/src/{toxi → main/java/toxi}/util/datatypes/WeightedRandomEntry.java +0 -0
- data/src/{toxi → main/java/toxi}/util/datatypes/WeightedRandomSet.java +0 -0
- data/src/{toxi → main/java/toxi}/util/events/EventDispatcher.java +0 -0
- data/src/{toxi → main/java/toxi}/volume/AdditiveBrush.java +0 -0
- data/src/{toxi → main/java/toxi}/volume/ArrayIsoSurface.java +0 -0
- data/src/{toxi → main/java/toxi}/volume/BoxBrush.java +0 -0
- data/src/{toxi → main/java/toxi}/volume/BrushMode.java +0 -0
- data/src/{toxi → main/java/toxi}/volume/HashIsoSurface.java +0 -0
- data/src/{toxi → main/java/toxi}/volume/IsoSurface.java +0 -0
- data/src/{toxi → main/java/toxi}/volume/MarchingCubesIndex.java +0 -0
- data/src/{toxi → main/java/toxi}/volume/MeshLatticeBuilder.java +0 -0
- data/src/{toxi → main/java/toxi}/volume/MeshVoxelizer.java +0 -0
- data/src/{toxi → main/java/toxi}/volume/MultiplyBrush.java +0 -0
- data/src/{toxi → main/java/toxi}/volume/PeakBrush.java +0 -0
- data/src/{toxi → main/java/toxi}/volume/ReplaceBrush.java +0 -0
- data/src/{toxi → main/java/toxi}/volume/RoundBrush.java +0 -0
- data/src/{toxi → main/java/toxi}/volume/VolumetricBrush.java +0 -0
- data/src/{toxi → main/java/toxi}/volume/VolumetricHashMap.java +0 -0
- data/src/{toxi → main/java/toxi}/volume/VolumetricSpace.java +0 -0
- data/src/{toxi → main/java/toxi}/volume/VolumetricSpaceArray.java +0 -0
- data/src/{BooleanShapes.java → test/java/BooleanShapes.java} +0 -0
- data/toxiclibs.gemspec +6 -7
- metadata +345 -347
- data/src/toxi/data/feeds/AtomFeed.java +0 -129
- data/src/toxi/data/feeds/RSSFeed.java +0 -99
- data/src/toxi/physics2d/VerletParticle2D.java +0 -457
- data/src/toxi/physics2d/VerletPhysics2D.java +0 -448
- data/src/toxi/physics2d/behaviors/AttractionBehavior2D.java +0 -212
- data/src/toxi/physics3d/VerletParticle3D.java +0 -385
- data/src/toxi/util/FileUtils.java +0 -467
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
@@ -108,12 +108,18 @@ public class Origin3D {
|
|
|
108
108
|
this.zAxis = dir.getNormalized();
|
|
109
109
|
Vec3D av = null;
|
|
110
110
|
Axis a = zAxis.getClosestAxis();
|
|
111
|
-
if (a
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
111
|
+
if (null != a) switch (a) {
|
|
112
|
+
case X:
|
|
113
|
+
av = Vec3D.Axis.Z.getVector().getInverted();
|
|
114
|
+
break;
|
|
115
|
+
case Y:
|
|
116
|
+
av = Vec3D.Axis.Z.getVector().getInverted();
|
|
117
|
+
break;
|
|
118
|
+
case Z:
|
|
119
|
+
av = Vec3D.Axis.X.getVector().getInverted();
|
|
120
|
+
break;
|
|
121
|
+
default:
|
|
122
|
+
break;
|
|
117
123
|
}
|
|
118
124
|
if (av == null) {
|
|
119
125
|
throw new IllegalArgumentException(
|
|
@@ -27,9 +27,7 @@
|
|
|
27
27
|
|
|
28
28
|
package toxi.geom;
|
|
29
29
|
|
|
30
|
-
|
|
31
|
-
import javax.xml.bind.annotation.XmlAccessorType;
|
|
32
|
-
import javax.xml.bind.annotation.XmlElement;
|
|
30
|
+
|
|
33
31
|
|
|
34
32
|
import toxi.geom.mesh.Mesh3D;
|
|
35
33
|
import toxi.geom.mesh.TriangleMesh;
|
|
@@ -39,7 +37,7 @@ import toxi.math.MathUtils;
|
|
|
39
37
|
* Class to describe and work with infinite generic 3D planes. Useful for
|
|
40
38
|
* intersection problems and classifying points.
|
|
41
39
|
*/
|
|
42
|
-
|
|
40
|
+
|
|
43
41
|
public class Plane extends Vec3D implements Shape3D {
|
|
44
42
|
|
|
45
43
|
/**
|
|
@@ -81,7 +79,7 @@ public class Plane extends Vec3D implements Shape3D {
|
|
|
81
79
|
/**
|
|
82
80
|
*
|
|
83
81
|
*/
|
|
84
|
-
|
|
82
|
+
|
|
85
83
|
public Vec3D normal;
|
|
86
84
|
|
|
87
85
|
/**
|
|
File without changes
|
|
@@ -87,9 +87,9 @@ public class PointCloud3D implements Iterable<Vec3D> {
|
|
|
87
87
|
* @return
|
|
88
88
|
*/
|
|
89
89
|
public PointCloud3D addAll(List<? extends Vec3D> plist) {
|
|
90
|
-
|
|
90
|
+
plist.forEach((p) -> {
|
|
91
91
|
addPoint(p);
|
|
92
|
-
}
|
|
92
|
+
});
|
|
93
93
|
return this;
|
|
94
94
|
}
|
|
95
95
|
|
|
@@ -116,9 +116,9 @@ public class PointCloud3D implements Iterable<Vec3D> {
|
|
|
116
116
|
* @return itself
|
|
117
117
|
*/
|
|
118
118
|
public PointCloud3D applyMatrix(Matrix4x4 m) {
|
|
119
|
-
|
|
119
|
+
points.forEach((p) -> {
|
|
120
120
|
p.set(m.applyTo(p));
|
|
121
|
-
}
|
|
121
|
+
});
|
|
122
122
|
updateBounds();
|
|
123
123
|
return this;
|
|
124
124
|
}
|
|
@@ -145,9 +145,9 @@ public class PointCloud3D implements Iterable<Vec3D> {
|
|
|
145
145
|
getCentroid();
|
|
146
146
|
Vec3D delta = origin != null ? origin.sub(centroid) : centroid
|
|
147
147
|
.getInverted();
|
|
148
|
-
|
|
148
|
+
points.forEach((p) -> {
|
|
149
149
|
p.addSelf(delta);
|
|
150
|
-
}
|
|
150
|
+
});
|
|
151
151
|
min.addSelf(delta);
|
|
152
152
|
max.addSelf(delta);
|
|
153
153
|
centroid.addSelf(delta);
|
|
@@ -174,9 +174,9 @@ public class PointCloud3D implements Iterable<Vec3D> {
|
|
|
174
174
|
*/
|
|
175
175
|
public PointCloud3D copy() {
|
|
176
176
|
PointCloud3D c = new PointCloud3D(points.size());
|
|
177
|
-
|
|
177
|
+
points.forEach((p) -> {
|
|
178
178
|
c.addPoint(p.copy());
|
|
179
|
-
}
|
|
179
|
+
});
|
|
180
180
|
return c;
|
|
181
181
|
}
|
|
182
182
|
|
|
@@ -208,6 +208,7 @@ public class PointCloud3D implements Iterable<Vec3D> {
|
|
|
208
208
|
*
|
|
209
209
|
* @see java.lang.Iterable#iterator()
|
|
210
210
|
*/
|
|
211
|
+
@Override
|
|
211
212
|
public Iterator<Vec3D> iterator() {
|
|
212
213
|
return points.iterator();
|
|
213
214
|
}
|
|
@@ -238,16 +239,18 @@ public class PointCloud3D implements Iterable<Vec3D> {
|
|
|
238
239
|
public PointCloud3D updateBounds() {
|
|
239
240
|
min = Vec3D.MAX_VALUE.copy();
|
|
240
241
|
max = Vec3D.NEG_MAX_VALUE.copy();
|
|
241
|
-
|
|
242
|
+
points.stream().map((p) -> {
|
|
242
243
|
min.minSelf(p);
|
|
244
|
+
return p;
|
|
245
|
+
}).forEachOrdered((p) -> {
|
|
243
246
|
max.maxSelf(p);
|
|
244
|
-
}
|
|
247
|
+
});
|
|
245
248
|
centroid.set(min.add(max).scaleSelf(0.5f));
|
|
246
249
|
radiusSquared = 0;
|
|
247
|
-
|
|
250
|
+
points.forEach((p) -> {
|
|
248
251
|
radiusSquared = MathUtils.max(radiusSquared,
|
|
249
252
|
p.distanceToSquared(centroid));
|
|
250
|
-
}
|
|
253
|
+
});
|
|
251
254
|
return this;
|
|
252
255
|
}
|
|
253
256
|
}
|
|
File without changes
|
|
File without changes
|
|
@@ -32,7 +32,7 @@ import java.util.Collections;
|
|
|
32
32
|
import java.util.Iterator;
|
|
33
33
|
import java.util.List;
|
|
34
34
|
|
|
35
|
-
|
|
35
|
+
|
|
36
36
|
|
|
37
37
|
import toxi.geom.Line2D.LineIntersection;
|
|
38
38
|
import toxi.geom.Line2D.LineIntersection.Type;
|
|
@@ -105,8 +105,8 @@ public class Polygon2D implements Shape2D, Iterable<Vec2D> {
|
|
|
105
105
|
/**
|
|
106
106
|
*
|
|
107
107
|
*/
|
|
108
|
-
|
|
109
|
-
public List<Vec2D> vertices = new ArrayList
|
|
108
|
+
|
|
109
|
+
public List<Vec2D> vertices = new ArrayList<>();
|
|
110
110
|
|
|
111
111
|
/**
|
|
112
112
|
*
|
|
@@ -119,9 +119,9 @@ public class Polygon2D implements Shape2D, Iterable<Vec2D> {
|
|
|
119
119
|
* @param points
|
|
120
120
|
*/
|
|
121
121
|
public Polygon2D(List<Vec2D> points) {
|
|
122
|
-
|
|
122
|
+
points.forEach((p) -> {
|
|
123
123
|
add(p.copy());
|
|
124
|
-
}
|
|
124
|
+
});
|
|
125
125
|
}
|
|
126
126
|
|
|
127
127
|
/**
|
|
@@ -152,7 +152,7 @@ public class Polygon2D implements Shape2D, Iterable<Vec2D> {
|
|
|
152
152
|
* vertex point to add
|
|
153
153
|
* @return itself
|
|
154
154
|
*/
|
|
155
|
-
public Polygon2D add(Vec2D p) {
|
|
155
|
+
public final Polygon2D add(Vec2D p) {
|
|
156
156
|
if (!vertices.contains(p)) {
|
|
157
157
|
vertices.add(p);
|
|
158
158
|
}
|
|
@@ -178,12 +178,13 @@ public class Polygon2D implements Shape2D, Iterable<Vec2D> {
|
|
|
178
178
|
public Polygon2D center(ReadonlyVec2D origin) {
|
|
179
179
|
Vec2D centroid = getCentroid();
|
|
180
180
|
Vec2D delta = origin != null ? origin.sub(centroid) : centroid.invert();
|
|
181
|
-
|
|
181
|
+
vertices.forEach((v) -> {
|
|
182
182
|
v.addSelf(delta);
|
|
183
|
-
}
|
|
183
|
+
});
|
|
184
184
|
return this;
|
|
185
185
|
}
|
|
186
186
|
|
|
187
|
+
@Override
|
|
187
188
|
public boolean containsPoint(ReadonlyVec2D p) {
|
|
188
189
|
int num = vertices.size();
|
|
189
190
|
int i, j = num - 1;
|
|
@@ -209,12 +210,7 @@ public class Polygon2D implements Shape2D, Iterable<Vec2D> {
|
|
|
209
210
|
* @return
|
|
210
211
|
*/
|
|
211
212
|
public boolean containsPolygon(Polygon2D poly) {
|
|
212
|
-
|
|
213
|
-
if (!containsPoint(p)) {
|
|
214
|
-
return false;
|
|
215
|
-
}
|
|
216
|
-
}
|
|
217
|
-
return true;
|
|
213
|
+
return poly.vertices.stream().noneMatch((p) -> (!containsPoint(p)));
|
|
218
214
|
}
|
|
219
215
|
|
|
220
216
|
/**
|
|
@@ -270,6 +266,7 @@ public class Polygon2D implements Shape2D, Iterable<Vec2D> {
|
|
|
270
266
|
*
|
|
271
267
|
* @return polygon area
|
|
272
268
|
*/
|
|
269
|
+
@Override
|
|
273
270
|
public float getArea() {
|
|
274
271
|
float area = 0;
|
|
275
272
|
for (int i = 0, num = vertices.size(); i < num; i++) {
|
|
@@ -282,6 +279,7 @@ public class Polygon2D implements Shape2D, Iterable<Vec2D> {
|
|
|
282
279
|
return area;
|
|
283
280
|
}
|
|
284
281
|
|
|
282
|
+
@Override
|
|
285
283
|
public Circle getBoundingCircle() {
|
|
286
284
|
return Circle.newBoundingCircle(vertices);
|
|
287
285
|
}
|
|
@@ -292,6 +290,7 @@ public class Polygon2D implements Shape2D, Iterable<Vec2D> {
|
|
|
292
290
|
* @return bounding rect
|
|
293
291
|
* @see toxi.geom.Shape2D#getBounds()
|
|
294
292
|
*/
|
|
293
|
+
@Override
|
|
295
294
|
public Rect getBounds() {
|
|
296
295
|
return Rect.getBoundingRect(vertices);
|
|
297
296
|
}
|
|
@@ -321,6 +320,7 @@ public class Polygon2D implements Shape2D, Iterable<Vec2D> {
|
|
|
321
320
|
*
|
|
322
321
|
* @see toxi.geom.Shape2D#getCircumference()
|
|
323
322
|
*/
|
|
323
|
+
@Override
|
|
324
324
|
public float getCircumference() {
|
|
325
325
|
float circ = 0;
|
|
326
326
|
for (int i = 0, num = vertices.size(); i < num; i++) {
|
|
@@ -371,9 +371,10 @@ public class Polygon2D implements Shape2D, Iterable<Vec2D> {
|
|
|
371
371
|
*
|
|
372
372
|
* @return list of lines
|
|
373
373
|
*/
|
|
374
|
+
@Override
|
|
374
375
|
public List<Line2D> getEdges() {
|
|
375
376
|
int num = vertices.size();
|
|
376
|
-
List<Line2D> edges = new ArrayList
|
|
377
|
+
List<Line2D> edges = new ArrayList<>(num);
|
|
377
378
|
for (int i = 0; i < num; i++) {
|
|
378
379
|
edges.add(new Line2D(vertices.get(i), vertices.get((i + 1) % num)));
|
|
379
380
|
}
|
|
@@ -404,6 +405,7 @@ public class Polygon2D implements Shape2D, Iterable<Vec2D> {
|
|
|
404
405
|
*
|
|
405
406
|
* @return Vec2D
|
|
406
407
|
*/
|
|
408
|
+
@Override
|
|
407
409
|
public Vec2D getRandomPoint() {
|
|
408
410
|
List<Line2D> edges = getEdges();
|
|
409
411
|
int numEdges = edges.size();
|
|
@@ -459,13 +461,7 @@ public class Polygon2D implements Shape2D, Iterable<Vec2D> {
|
|
|
459
461
|
* @return
|
|
460
462
|
*/
|
|
461
463
|
protected boolean intersectsLine(Line2D l, List<Line2D> edges) {
|
|
462
|
-
|
|
463
|
-
final Type isec = l.intersectLine(e).getType();
|
|
464
|
-
if (isec == Type.INTERSECTING || isec == Type.COINCIDENT) {
|
|
465
|
-
return true;
|
|
466
|
-
}
|
|
467
|
-
}
|
|
468
|
-
return false;
|
|
464
|
+
return edges.stream().map((e) -> l.intersectLine(e).getType()).anyMatch((isec) -> (isec == Type.INTERSECTING || isec == Type.COINCIDENT));
|
|
469
465
|
}
|
|
470
466
|
|
|
471
467
|
/**
|
|
@@ -477,12 +473,7 @@ public class Polygon2D implements Shape2D, Iterable<Vec2D> {
|
|
|
477
473
|
*/
|
|
478
474
|
public boolean intersectsPolygon(Polygon2D poly) {
|
|
479
475
|
List<Line2D> edgesB = poly.getEdges();
|
|
480
|
-
|
|
481
|
-
if (intersectsLine(ea, edgesB)) {
|
|
482
|
-
return true;
|
|
483
|
-
}
|
|
484
|
-
}
|
|
485
|
-
return false;
|
|
476
|
+
return getEdges().stream().anyMatch((ea) -> (intersectsLine(ea, edgesB)));
|
|
486
477
|
}
|
|
487
478
|
|
|
488
479
|
/**
|
|
@@ -492,12 +483,7 @@ public class Polygon2D implements Shape2D, Iterable<Vec2D> {
|
|
|
492
483
|
*/
|
|
493
484
|
public boolean intersectsRect(Rect r) {
|
|
494
485
|
List<Line2D> edges = r.getEdges();
|
|
495
|
-
|
|
496
|
-
if (intersectsLine(ea, edges)) {
|
|
497
|
-
return true;
|
|
498
|
-
}
|
|
499
|
-
}
|
|
500
|
-
return false;
|
|
486
|
+
return getEdges().stream().anyMatch((ea) -> (intersectsLine(ea, edges)));
|
|
501
487
|
}
|
|
502
488
|
|
|
503
489
|
/**
|
|
@@ -539,6 +525,7 @@ public class Polygon2D implements Shape2D, Iterable<Vec2D> {
|
|
|
539
525
|
*
|
|
540
526
|
* @return
|
|
541
527
|
*/
|
|
528
|
+
@Override
|
|
542
529
|
public Iterator<Vec2D> iterator() {
|
|
543
530
|
return vertices.iterator();
|
|
544
531
|
}
|
|
@@ -653,7 +640,7 @@ public class Polygon2D implements Shape2D, Iterable<Vec2D> {
|
|
|
653
640
|
*/
|
|
654
641
|
public Polygon2D reduceVertices(float minEdgeLen) {
|
|
655
642
|
minEdgeLen *= minEdgeLen;
|
|
656
|
-
List<Vec2D> reduced = new ArrayList
|
|
643
|
+
List<Vec2D> reduced = new ArrayList<>();
|
|
657
644
|
Vec2D prev = vertices.get(0);
|
|
658
645
|
reduced.add(prev);
|
|
659
646
|
int num = vertices.size() - 1;
|
|
@@ -705,9 +692,9 @@ public class Polygon2D implements Shape2D, Iterable<Vec2D> {
|
|
|
705
692
|
* @return
|
|
706
693
|
*/
|
|
707
694
|
public Polygon2D rotate(float theta) {
|
|
708
|
-
|
|
695
|
+
vertices.forEach((v) -> {
|
|
709
696
|
v.rotate(theta);
|
|
710
|
-
}
|
|
697
|
+
});
|
|
711
698
|
return this;
|
|
712
699
|
}
|
|
713
700
|
|
|
@@ -727,9 +714,9 @@ public class Polygon2D implements Shape2D, Iterable<Vec2D> {
|
|
|
727
714
|
* @return
|
|
728
715
|
*/
|
|
729
716
|
public Polygon2D scale(float x, float y) {
|
|
730
|
-
|
|
717
|
+
vertices.forEach((v) -> {
|
|
731
718
|
v.scaleSelf(x, y);
|
|
732
|
-
}
|
|
719
|
+
});
|
|
733
720
|
return this;
|
|
734
721
|
}
|
|
735
722
|
|
|
@@ -759,9 +746,9 @@ public class Polygon2D implements Shape2D, Iterable<Vec2D> {
|
|
|
759
746
|
*/
|
|
760
747
|
public Polygon2D scaleSize(float x, float y) {
|
|
761
748
|
Vec2D centroid = getCentroid();
|
|
762
|
-
|
|
749
|
+
vertices.forEach((v) -> {
|
|
763
750
|
v.subSelf(centroid).scaleSelf(x, y).addSelf(centroid);
|
|
764
|
-
}
|
|
751
|
+
});
|
|
765
752
|
return this;
|
|
766
753
|
}
|
|
767
754
|
|
|
@@ -794,7 +781,7 @@ public class Polygon2D implements Shape2D, Iterable<Vec2D> {
|
|
|
794
781
|
public Polygon2D smooth(float amount, float baseWeight) {
|
|
795
782
|
Vec2D centroid = getCentroid();
|
|
796
783
|
int num = vertices.size();
|
|
797
|
-
List<Vec2D> filtered = new ArrayList
|
|
784
|
+
List<Vec2D> filtered = new ArrayList<>(num);
|
|
798
785
|
for (int i = 0, j = num - 1, k = 1; i < num; i++) {
|
|
799
786
|
Vec2D a = vertices.get(i);
|
|
800
787
|
Vec2D dir = vertices.get(j).sub(a).addSelf(vertices.get(k).sub(a))
|
|
@@ -863,7 +850,7 @@ public class Polygon2D implements Shape2D, Iterable<Vec2D> {
|
|
|
863
850
|
public boolean toOutline() {
|
|
864
851
|
int corners = vertices.size();
|
|
865
852
|
int maxSegs = corners * 3;
|
|
866
|
-
List<Vec2D> newVerts = new ArrayList
|
|
853
|
+
List<Vec2D> newVerts = new ArrayList<>(corners);
|
|
867
854
|
Vec2D[] segments = new Vec2D[maxSegs];
|
|
868
855
|
Vec2D[] segEnds = new Vec2D[maxSegs];
|
|
869
856
|
float[] segAngles = new float[maxSegs];
|
|
@@ -995,6 +982,7 @@ public class Polygon2D implements Shape2D, Iterable<Vec2D> {
|
|
|
995
982
|
*
|
|
996
983
|
* @return itself
|
|
997
984
|
*/
|
|
985
|
+
@Override
|
|
998
986
|
public Polygon2D toPolygon2D() {
|
|
999
987
|
return this;
|
|
1000
988
|
}
|
|
@@ -1003,6 +991,7 @@ public class Polygon2D implements Shape2D, Iterable<Vec2D> {
|
|
|
1003
991
|
*
|
|
1004
992
|
* @return
|
|
1005
993
|
*/
|
|
994
|
+
@Override
|
|
1006
995
|
public String toString() {
|
|
1007
996
|
StringBuilder buf = new StringBuilder();
|
|
1008
997
|
for (Iterator<Vec2D> i = vertices.iterator(); i.hasNext();) {
|
|
@@ -1021,9 +1010,9 @@ public class Polygon2D implements Shape2D, Iterable<Vec2D> {
|
|
|
1021
1010
|
* @return
|
|
1022
1011
|
*/
|
|
1023
1012
|
public Polygon2D translate(float x, float y) {
|
|
1024
|
-
|
|
1013
|
+
vertices.forEach((v) -> {
|
|
1025
1014
|
v.addSelf(x, y);
|
|
1026
|
-
}
|
|
1015
|
+
});
|
|
1027
1016
|
return this;
|
|
1028
1017
|
}
|
|
1029
1018
|
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
@@ -26,9 +26,7 @@
|
|
|
26
26
|
*/
|
|
27
27
|
package toxi.geom;
|
|
28
28
|
|
|
29
|
-
|
|
30
|
-
import javax.xml.bind.annotation.XmlAccessorType;
|
|
31
|
-
import javax.xml.bind.annotation.XmlAttribute;
|
|
29
|
+
|
|
32
30
|
|
|
33
31
|
import toxi.math.InterpolateStrategy;
|
|
34
32
|
import toxi.math.MathUtils;
|
|
@@ -36,7 +34,7 @@ import toxi.math.MathUtils;
|
|
|
36
34
|
/**
|
|
37
35
|
* Quaternion implementation with SLERP based on http://is.gd/2n9s
|
|
38
36
|
*/
|
|
39
|
-
|
|
37
|
+
|
|
40
38
|
public class Quaternion {
|
|
41
39
|
|
|
42
40
|
/**
|
|
@@ -173,7 +171,7 @@ public class Quaternion {
|
|
|
173
171
|
return createFromAxisAngle(axis, angle);
|
|
174
172
|
}
|
|
175
173
|
|
|
176
|
-
|
|
174
|
+
|
|
177
175
|
public float x,
|
|
178
176
|
/**
|
|
179
177
|
*
|
|
@@ -27,20 +27,18 @@
|
|
|
27
27
|
|
|
28
28
|
package toxi.geom;
|
|
29
29
|
|
|
30
|
-
|
|
31
|
-
import javax.xml.bind.annotation.XmlAccessorType;
|
|
32
|
-
import javax.xml.bind.annotation.XmlElement;
|
|
30
|
+
|
|
33
31
|
|
|
34
32
|
/**
|
|
35
33
|
* A simple 2D ray datatype
|
|
36
34
|
*/
|
|
37
|
-
|
|
35
|
+
|
|
38
36
|
public class Ray2D extends Vec2D {
|
|
39
37
|
|
|
40
38
|
/**
|
|
41
39
|
*
|
|
42
40
|
*/
|
|
43
|
-
|
|
41
|
+
|
|
44
42
|
protected Vec2D dir;
|
|
45
43
|
|
|
46
44
|
/**
|
|
@@ -140,6 +138,7 @@ public class Ray2D extends Vec2D {
|
|
|
140
138
|
*
|
|
141
139
|
* @return
|
|
142
140
|
*/
|
|
141
|
+
@Override
|
|
143
142
|
public String toString() {
|
|
144
143
|
return "origin: " + super.toString() + " dir: " + dir;
|
|
145
144
|
}
|