toxiclibs 1.0.0 → 2.0.0
Sign up to get free protection for your applications and to get access to all the features.
- 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
|
}
|