toxiclibs 0.2-java → 0.5.0-java
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.gitignore +16 -0
- data/CHANGELOG.md +4 -0
- data/LICENSE +675 -0
- data/README.md +12 -5
- data/Rakefile +25 -82
- 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/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 +75 -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 +44 -0
- data/examples/povmesh/ftest.rb +46 -0
- data/examples/povmesh/tentacle.rb +73 -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/lib/toxiclibs.jar +0 -0
- data/lib/toxiclibs.rb +91 -32
- data/lib/toxiclibs/version.rb +1 -1
- data/pom.xml +122 -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/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 +94 -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 +34 -0
- metadata +424 -27
|
@@ -0,0 +1,628 @@
|
|
|
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.geom;
|
|
29
|
+
|
|
30
|
+
import toxi.geom.Vec3D.Axis;
|
|
31
|
+
import toxi.math.InterpolateStrategy;
|
|
32
|
+
import toxi.math.MathUtils;
|
|
33
|
+
import toxi.math.ScaleMap;
|
|
34
|
+
|
|
35
|
+
/**
|
|
36
|
+
* Readonly, immutable interface wrapper for Vec3D instances. Used throughout
|
|
37
|
+
* the library for safety purposes.
|
|
38
|
+
*/
|
|
39
|
+
public interface ReadonlyVec3D {
|
|
40
|
+
|
|
41
|
+
/**
|
|
42
|
+
* Adds vector {a,b,c} and returns result as new vector.
|
|
43
|
+
*
|
|
44
|
+
* @param a
|
|
45
|
+
* X coordinate
|
|
46
|
+
* @param b
|
|
47
|
+
* Y coordinate
|
|
48
|
+
* @param c
|
|
49
|
+
* Z coordinate
|
|
50
|
+
*
|
|
51
|
+
* @return result as new vector
|
|
52
|
+
*/
|
|
53
|
+
public Vec3D add(float a, float b, float c);
|
|
54
|
+
|
|
55
|
+
/**
|
|
56
|
+
*
|
|
57
|
+
* @param v
|
|
58
|
+
* @return
|
|
59
|
+
*/
|
|
60
|
+
public Vec3D add(ReadonlyVec3D v);
|
|
61
|
+
|
|
62
|
+
/**
|
|
63
|
+
* Add vector v and returns result as new vector.
|
|
64
|
+
*
|
|
65
|
+
* @param v
|
|
66
|
+
* vector to add
|
|
67
|
+
*
|
|
68
|
+
* @return result as new vector
|
|
69
|
+
*/
|
|
70
|
+
public Vec3D add(Vec3D v);
|
|
71
|
+
|
|
72
|
+
/**
|
|
73
|
+
* Computes the angle between this vector and vector V. This function
|
|
74
|
+
* assumes both vectors are normalized, if this can't be guaranteed, use the
|
|
75
|
+
* alternative implementation {@link #angleBetween(ReadonlyVec3D, boolean)}
|
|
76
|
+
*
|
|
77
|
+
* @param v
|
|
78
|
+
* vector
|
|
79
|
+
*
|
|
80
|
+
* @return angle in radians, or NaN if vectors are parallel
|
|
81
|
+
*/
|
|
82
|
+
public float angleBetween(ReadonlyVec3D v);
|
|
83
|
+
|
|
84
|
+
/**
|
|
85
|
+
* Computes the angle between this vector and vector V.
|
|
86
|
+
*
|
|
87
|
+
* @param v
|
|
88
|
+
* vector
|
|
89
|
+
* @param forceNormalize
|
|
90
|
+
* true, if normalized versions of the vectors are to be used
|
|
91
|
+
* (Note: only copies will be used, original vectors will not be
|
|
92
|
+
* altered by this method)
|
|
93
|
+
*
|
|
94
|
+
* @return angle in radians, or NaN if vectors are parallel
|
|
95
|
+
*/
|
|
96
|
+
public float angleBetween(ReadonlyVec3D v, boolean forceNormalize);
|
|
97
|
+
|
|
98
|
+
/**
|
|
99
|
+
* Compares the length of the vector with another one.
|
|
100
|
+
*
|
|
101
|
+
* @param v
|
|
102
|
+
* vector to compare with
|
|
103
|
+
*
|
|
104
|
+
* @return -1 if other vector is longer, 0 if both are equal or else +1
|
|
105
|
+
*/
|
|
106
|
+
public int compareTo(ReadonlyVec3D v);
|
|
107
|
+
|
|
108
|
+
/**
|
|
109
|
+
* Copy.
|
|
110
|
+
*
|
|
111
|
+
* @return a new independent instance/copy of a given vector
|
|
112
|
+
*/
|
|
113
|
+
public Vec3D copy();
|
|
114
|
+
|
|
115
|
+
/**
|
|
116
|
+
* Calculates cross-product with vector v. The resulting vector is
|
|
117
|
+
* perpendicular to both the current and supplied vector.
|
|
118
|
+
*
|
|
119
|
+
* @param v
|
|
120
|
+
* vector to cross
|
|
121
|
+
*
|
|
122
|
+
* @return cross-product as new vector
|
|
123
|
+
*/
|
|
124
|
+
public Vec3D cross(ReadonlyVec3D v);
|
|
125
|
+
|
|
126
|
+
/**
|
|
127
|
+
* Calculates cross-product with vector v. The resulting vector is
|
|
128
|
+
* perpendicular to both the current and supplied vector and stored in the
|
|
129
|
+
* supplied result vector.
|
|
130
|
+
*
|
|
131
|
+
* @param v
|
|
132
|
+
* vector to cross
|
|
133
|
+
* @param result
|
|
134
|
+
* result vector
|
|
135
|
+
*
|
|
136
|
+
* @return result vector
|
|
137
|
+
*/
|
|
138
|
+
public Vec3D crossInto(ReadonlyVec3D v, Vec3D result);
|
|
139
|
+
|
|
140
|
+
/**
|
|
141
|
+
* Calculates distance to another vector.
|
|
142
|
+
*
|
|
143
|
+
* @param v
|
|
144
|
+
* non-null vector
|
|
145
|
+
*
|
|
146
|
+
* @return distance or Float.NaN if v=null
|
|
147
|
+
*/
|
|
148
|
+
public float distanceTo(ReadonlyVec3D v);
|
|
149
|
+
|
|
150
|
+
/**
|
|
151
|
+
* Calculates the squared distance to another vector.
|
|
152
|
+
*
|
|
153
|
+
* @param v
|
|
154
|
+
* non-null vector
|
|
155
|
+
*
|
|
156
|
+
* @return distance or NaN if v=null
|
|
157
|
+
*
|
|
158
|
+
* @see #magSquared()
|
|
159
|
+
*/
|
|
160
|
+
public float distanceToSquared(ReadonlyVec3D v);
|
|
161
|
+
|
|
162
|
+
/**
|
|
163
|
+
* Computes the scalar product (dot product) with the given vector.
|
|
164
|
+
*
|
|
165
|
+
* @param v
|
|
166
|
+
* the v
|
|
167
|
+
*
|
|
168
|
+
* @return dot product
|
|
169
|
+
*
|
|
170
|
+
* @see <a href="http://en.wikipedia.org/wiki/Dot_product">Wikipedia
|
|
171
|
+
* entry</a>
|
|
172
|
+
*/
|
|
173
|
+
public float dot(ReadonlyVec3D v);
|
|
174
|
+
|
|
175
|
+
/*
|
|
176
|
+
* (non-Javadoc)
|
|
177
|
+
*
|
|
178
|
+
* @see java.lang.Object#equals(java.lang.Object)
|
|
179
|
+
*/
|
|
180
|
+
|
|
181
|
+
/**
|
|
182
|
+
*
|
|
183
|
+
* @param obj
|
|
184
|
+
* @return
|
|
185
|
+
*/
|
|
186
|
+
|
|
187
|
+
@Override
|
|
188
|
+
public boolean equals(Object obj);
|
|
189
|
+
|
|
190
|
+
/**
|
|
191
|
+
* Compares this vector with the one given. The vectors are deemed equal if
|
|
192
|
+
* the individual differences of all component values are within the given
|
|
193
|
+
* tolerance.
|
|
194
|
+
*
|
|
195
|
+
* @param v
|
|
196
|
+
* the v
|
|
197
|
+
* @param tolerance
|
|
198
|
+
* the tolerance
|
|
199
|
+
*
|
|
200
|
+
* @return true, if equal
|
|
201
|
+
*/
|
|
202
|
+
public boolean equalsWithTolerance(ReadonlyVec3D v, float tolerance);
|
|
203
|
+
|
|
204
|
+
/**
|
|
205
|
+
* Gets the abs.
|
|
206
|
+
*
|
|
207
|
+
* @return the abs
|
|
208
|
+
*/
|
|
209
|
+
public Vec3D getAbs();
|
|
210
|
+
|
|
211
|
+
/**
|
|
212
|
+
* Converts the spherical vector back into cartesian coordinates.
|
|
213
|
+
*
|
|
214
|
+
* @return new vector
|
|
215
|
+
*/
|
|
216
|
+
public Vec3D getCartesian();
|
|
217
|
+
|
|
218
|
+
/**
|
|
219
|
+
*
|
|
220
|
+
* @return
|
|
221
|
+
*/
|
|
222
|
+
public Axis getClosestAxis();
|
|
223
|
+
|
|
224
|
+
/**
|
|
225
|
+
*
|
|
226
|
+
* @param id
|
|
227
|
+
* @return
|
|
228
|
+
*/
|
|
229
|
+
public float getComponent(Axis id);
|
|
230
|
+
|
|
231
|
+
/**
|
|
232
|
+
*
|
|
233
|
+
* @param id
|
|
234
|
+
* @return
|
|
235
|
+
*/
|
|
236
|
+
public float getComponent(int id);
|
|
237
|
+
|
|
238
|
+
/**
|
|
239
|
+
* Creates a copy of the vector which forcefully fits in the given AABB.
|
|
240
|
+
*
|
|
241
|
+
* @param box
|
|
242
|
+
* the box
|
|
243
|
+
*
|
|
244
|
+
* @return fitted vector
|
|
245
|
+
*/
|
|
246
|
+
public Vec3D getConstrained(AABB box);
|
|
247
|
+
|
|
248
|
+
/**
|
|
249
|
+
* Creates a new vector whose components are the integer value of their
|
|
250
|
+
* current values.
|
|
251
|
+
*
|
|
252
|
+
* @return result as new vector
|
|
253
|
+
*/
|
|
254
|
+
public Vec3D getFloored();
|
|
255
|
+
|
|
256
|
+
/**
|
|
257
|
+
* Creates a new vector whose components are the fractional part of their
|
|
258
|
+
* current values.
|
|
259
|
+
*
|
|
260
|
+
* @return result as new vector
|
|
261
|
+
*/
|
|
262
|
+
public Vec3D getFrac();
|
|
263
|
+
|
|
264
|
+
/**
|
|
265
|
+
* Scales vector uniformly by factor -1 ( v = -v ).
|
|
266
|
+
*
|
|
267
|
+
* @return result as new vector
|
|
268
|
+
*/
|
|
269
|
+
public Vec3D getInverted();
|
|
270
|
+
|
|
271
|
+
/**
|
|
272
|
+
* Creates a copy of the vector with its magnitude limited to the length
|
|
273
|
+
* given.
|
|
274
|
+
*
|
|
275
|
+
* @param lim
|
|
276
|
+
* new maximum magnitude
|
|
277
|
+
*
|
|
278
|
+
* @return result as new vector
|
|
279
|
+
*/
|
|
280
|
+
public Vec3D getLimited(float lim);
|
|
281
|
+
|
|
282
|
+
/**
|
|
283
|
+
* Produces a new vector with its coordinates passed through the given
|
|
284
|
+
* {@link ScaleMap}.
|
|
285
|
+
*
|
|
286
|
+
* @param map
|
|
287
|
+
* @return mapped vector
|
|
288
|
+
*/
|
|
289
|
+
public Vec3D getMapped(ScaleMap map);
|
|
290
|
+
|
|
291
|
+
/**
|
|
292
|
+
* Produces the normalized version as a new vector.
|
|
293
|
+
*
|
|
294
|
+
* @return new vector
|
|
295
|
+
*/
|
|
296
|
+
public Vec3D getNormalized();
|
|
297
|
+
|
|
298
|
+
/**
|
|
299
|
+
* Produces a new vector normalized to the given length.
|
|
300
|
+
*
|
|
301
|
+
* @param len
|
|
302
|
+
* new desired length
|
|
303
|
+
*
|
|
304
|
+
* @return new vector
|
|
305
|
+
*/
|
|
306
|
+
public Vec3D getNormalizedTo(float len);
|
|
307
|
+
|
|
308
|
+
/**
|
|
309
|
+
* Returns a multiplicative inverse copy of the vector.
|
|
310
|
+
*
|
|
311
|
+
* @return new vector
|
|
312
|
+
*/
|
|
313
|
+
public Vec3D getReciprocal();
|
|
314
|
+
|
|
315
|
+
/**
|
|
316
|
+
*
|
|
317
|
+
* @param normal
|
|
318
|
+
* @return
|
|
319
|
+
*/
|
|
320
|
+
public Vec3D getReflected(ReadonlyVec3D normal);
|
|
321
|
+
|
|
322
|
+
/**
|
|
323
|
+
* Gets the rotated around axis.
|
|
324
|
+
*
|
|
325
|
+
* @param axis
|
|
326
|
+
* the axis
|
|
327
|
+
* @param theta
|
|
328
|
+
* the theta
|
|
329
|
+
*
|
|
330
|
+
* @return new result vector
|
|
331
|
+
*/
|
|
332
|
+
public Vec3D getRotatedAroundAxis(ReadonlyVec3D axis, float theta);
|
|
333
|
+
|
|
334
|
+
/**
|
|
335
|
+
* Creates a new vector rotated by the given angle around the X axis.
|
|
336
|
+
*
|
|
337
|
+
* @param theta
|
|
338
|
+
* the theta
|
|
339
|
+
*
|
|
340
|
+
* @return rotated vector
|
|
341
|
+
*/
|
|
342
|
+
public Vec3D getRotatedX(float theta);
|
|
343
|
+
|
|
344
|
+
/**
|
|
345
|
+
* Creates a new vector rotated by the given angle around the Y axis.
|
|
346
|
+
*
|
|
347
|
+
* @param theta
|
|
348
|
+
* the theta
|
|
349
|
+
*
|
|
350
|
+
* @return rotated vector
|
|
351
|
+
*/
|
|
352
|
+
public Vec3D getRotatedY(float theta);
|
|
353
|
+
|
|
354
|
+
/**
|
|
355
|
+
* Creates a new vector rotated by the given angle around the Z axis.
|
|
356
|
+
*
|
|
357
|
+
* @param theta
|
|
358
|
+
* the theta
|
|
359
|
+
*
|
|
360
|
+
* @return rotated vector
|
|
361
|
+
*/
|
|
362
|
+
public Vec3D getRotatedZ(float theta);
|
|
363
|
+
|
|
364
|
+
/**
|
|
365
|
+
* Creates a new vector with its coordinates rounded to the given precision
|
|
366
|
+
* (grid alignment).
|
|
367
|
+
*
|
|
368
|
+
* @param prec
|
|
369
|
+
* @return grid aligned vector
|
|
370
|
+
*/
|
|
371
|
+
public Vec3D getRoundedTo(float prec);
|
|
372
|
+
|
|
373
|
+
/**
|
|
374
|
+
* Creates a new vector in which all components are replaced with the signum
|
|
375
|
+
* of their original values. In other words if a components value was
|
|
376
|
+
* negative its new value will be -1, if zero => 0, if positive => +1
|
|
377
|
+
*
|
|
378
|
+
* @return result vector
|
|
379
|
+
*/
|
|
380
|
+
public Vec3D getSignum();
|
|
381
|
+
|
|
382
|
+
/**
|
|
383
|
+
* Converts the vector into spherical coordinates. After the conversion the
|
|
384
|
+
* vector components are to be interpreted as:
|
|
385
|
+
* <ul>
|
|
386
|
+
* <li>x = radius</li>
|
|
387
|
+
* <li>y = azimuth</li>
|
|
388
|
+
* <li>z = theta</li>
|
|
389
|
+
* </ul>
|
|
390
|
+
*
|
|
391
|
+
* @return new vector
|
|
392
|
+
*/
|
|
393
|
+
public Vec3D getSpherical();
|
|
394
|
+
|
|
395
|
+
/**
|
|
396
|
+
* Computes the vector's direction in the XY plane (for example for 2D
|
|
397
|
+
* points). The positive X axis equals 0 degrees.
|
|
398
|
+
*
|
|
399
|
+
* @return rotation angle
|
|
400
|
+
*/
|
|
401
|
+
public float headingXY();
|
|
402
|
+
|
|
403
|
+
/**
|
|
404
|
+
* Computes the vector's direction in the XZ plane. The positive X axis
|
|
405
|
+
* equals 0 degrees.
|
|
406
|
+
*
|
|
407
|
+
* @return rotation angle
|
|
408
|
+
*/
|
|
409
|
+
public float headingXZ();
|
|
410
|
+
|
|
411
|
+
/**
|
|
412
|
+
* Computes the vector's direction in the YZ plane. The positive Z axis
|
|
413
|
+
* equals 0 degrees.
|
|
414
|
+
*
|
|
415
|
+
* @return rotation angle
|
|
416
|
+
*/
|
|
417
|
+
public float headingYZ();
|
|
418
|
+
|
|
419
|
+
/**
|
|
420
|
+
* Interpolates the vector towards the given target vector, using linear
|
|
421
|
+
* interpolation.
|
|
422
|
+
*
|
|
423
|
+
* @param v
|
|
424
|
+
* target vector
|
|
425
|
+
* @param f
|
|
426
|
+
* interpolation factor (should be in the range 0..1)
|
|
427
|
+
*
|
|
428
|
+
* @return result as new vector
|
|
429
|
+
*/
|
|
430
|
+
public Vec3D interpolateTo(ReadonlyVec3D v, float f);
|
|
431
|
+
|
|
432
|
+
/**
|
|
433
|
+
* Interpolates the vector towards the given target vector, using the given
|
|
434
|
+
* {@link InterpolateStrategy}.
|
|
435
|
+
*
|
|
436
|
+
* @param v
|
|
437
|
+
* target vector
|
|
438
|
+
* @param f
|
|
439
|
+
* interpolation factor (should be in the range 0..1)
|
|
440
|
+
* @param s
|
|
441
|
+
* InterpolateStrategy instance
|
|
442
|
+
*
|
|
443
|
+
* @return result as new vector
|
|
444
|
+
*/
|
|
445
|
+
public Vec3D interpolateTo(ReadonlyVec3D v, float f, InterpolateStrategy s);
|
|
446
|
+
|
|
447
|
+
/**
|
|
448
|
+
* Checks if the point is inside the given AABB.
|
|
449
|
+
*
|
|
450
|
+
* @param box
|
|
451
|
+
* bounding box to check
|
|
452
|
+
*
|
|
453
|
+
* @return true, if point is inside
|
|
454
|
+
*/
|
|
455
|
+
public boolean isInAABB(AABB box);
|
|
456
|
+
|
|
457
|
+
/**
|
|
458
|
+
* Checks if the point is inside the given axis-aligned bounding box.
|
|
459
|
+
*
|
|
460
|
+
* @param boxOrigin
|
|
461
|
+
* bounding box origin/center
|
|
462
|
+
* @param boxExtent
|
|
463
|
+
* bounding box extends (half measure)
|
|
464
|
+
*
|
|
465
|
+
* @return true, if point is inside the box
|
|
466
|
+
*/
|
|
467
|
+
|
|
468
|
+
public boolean isInAABB(Vec3D boxOrigin, Vec3D boxExtent);
|
|
469
|
+
|
|
470
|
+
/**
|
|
471
|
+
* Checks if the vector is parallel with either the X or Y axis (any
|
|
472
|
+
* direction).
|
|
473
|
+
*
|
|
474
|
+
* @param tolerance
|
|
475
|
+
* @return true, if parallel within the given tolerance
|
|
476
|
+
*/
|
|
477
|
+
public boolean isMajorAxis(float tolerance);
|
|
478
|
+
|
|
479
|
+
/**
|
|
480
|
+
* Checks if vector has a magnitude equals or close to zero (tolerance used
|
|
481
|
+
* is {@link MathUtils#EPS}).
|
|
482
|
+
*
|
|
483
|
+
* @return true, if zero vector
|
|
484
|
+
*/
|
|
485
|
+
public boolean isZeroVector();
|
|
486
|
+
|
|
487
|
+
/**
|
|
488
|
+
* Calculates the magnitude/eucledian length of the vector.
|
|
489
|
+
*
|
|
490
|
+
* @return vector length
|
|
491
|
+
*/
|
|
492
|
+
public float magnitude();
|
|
493
|
+
|
|
494
|
+
/**
|
|
495
|
+
* Calculates only the squared magnitude/length of the vector. Useful for
|
|
496
|
+
* inverse square law applications and/or for speed reasons or if the real
|
|
497
|
+
* eucledian distance is not required (e.g. sorting).
|
|
498
|
+
*
|
|
499
|
+
* @return squared magnitude (x^2 + y^2 + z^2)
|
|
500
|
+
*/
|
|
501
|
+
public float magSquared();
|
|
502
|
+
|
|
503
|
+
/**
|
|
504
|
+
* Scales vector uniformly and returns result as new vector.
|
|
505
|
+
*
|
|
506
|
+
* @param s
|
|
507
|
+
* scale factor
|
|
508
|
+
*
|
|
509
|
+
* @return new vector
|
|
510
|
+
*/
|
|
511
|
+
public Vec3D scale(float s);
|
|
512
|
+
|
|
513
|
+
/**
|
|
514
|
+
* Scales vector non-uniformly and returns result as new vector.
|
|
515
|
+
*
|
|
516
|
+
* @param a
|
|
517
|
+
* scale factor for X coordinate
|
|
518
|
+
* @param b
|
|
519
|
+
* scale factor for Y coordinate
|
|
520
|
+
* @param c
|
|
521
|
+
* scale factor for Z coordinate
|
|
522
|
+
*
|
|
523
|
+
* @return new vector
|
|
524
|
+
*/
|
|
525
|
+
public Vec3D scale(float a, float b, float c);
|
|
526
|
+
|
|
527
|
+
/**
|
|
528
|
+
* Scales vector non-uniformly by vector v and returns result as new vector.
|
|
529
|
+
*
|
|
530
|
+
* @param s
|
|
531
|
+
* scale vector
|
|
532
|
+
*
|
|
533
|
+
* @return new vector
|
|
534
|
+
*/
|
|
535
|
+
public Vec3D scale(ReadonlyVec3D s);
|
|
536
|
+
|
|
537
|
+
/**
|
|
538
|
+
* Subtracts vector {a,b,c} and returns result as new vector.
|
|
539
|
+
*
|
|
540
|
+
* @param a
|
|
541
|
+
* X coordinate
|
|
542
|
+
* @param b
|
|
543
|
+
* Y coordinate
|
|
544
|
+
* @param c
|
|
545
|
+
* Z coordinate
|
|
546
|
+
*
|
|
547
|
+
* @return result as new vector
|
|
548
|
+
*/
|
|
549
|
+
public Vec3D sub(float a, float b, float c);
|
|
550
|
+
|
|
551
|
+
/**
|
|
552
|
+
* Subtracts vector v and returns result as new vector.
|
|
553
|
+
*
|
|
554
|
+
* @param v
|
|
555
|
+
* vector to be subtracted
|
|
556
|
+
*
|
|
557
|
+
* @return result as new vector
|
|
558
|
+
*/
|
|
559
|
+
public Vec3D sub(ReadonlyVec3D v);
|
|
560
|
+
|
|
561
|
+
/**
|
|
562
|
+
* Creates a new 2D vector of the XY components.
|
|
563
|
+
*
|
|
564
|
+
* @return new vector
|
|
565
|
+
*/
|
|
566
|
+
public Vec2D to2DXY();
|
|
567
|
+
|
|
568
|
+
/**
|
|
569
|
+
* Creates a new 2D vector of the XZ components.
|
|
570
|
+
*
|
|
571
|
+
* @return new vector
|
|
572
|
+
*/
|
|
573
|
+
public Vec2D to2DXZ();
|
|
574
|
+
|
|
575
|
+
/**
|
|
576
|
+
* Creates a new 2D vector of the YZ components.
|
|
577
|
+
*
|
|
578
|
+
* @return new vector
|
|
579
|
+
*/
|
|
580
|
+
public Vec2D to2DYZ();
|
|
581
|
+
|
|
582
|
+
/**
|
|
583
|
+
* Creates a Vec4D instance of this vector with the w component set to 1.0
|
|
584
|
+
*
|
|
585
|
+
* @return 4d vector
|
|
586
|
+
*/
|
|
587
|
+
public Vec4D to4D();
|
|
588
|
+
|
|
589
|
+
/**
|
|
590
|
+
* Creates a Vec4D instance of this vector with it w component set to the
|
|
591
|
+
* given value.
|
|
592
|
+
*
|
|
593
|
+
* @param w
|
|
594
|
+
* @return weighted 4d vector
|
|
595
|
+
*/
|
|
596
|
+
public Vec4D to4D(float w);
|
|
597
|
+
|
|
598
|
+
/**
|
|
599
|
+
*
|
|
600
|
+
* @return
|
|
601
|
+
*/
|
|
602
|
+
public float[] toArray();
|
|
603
|
+
|
|
604
|
+
/**
|
|
605
|
+
*
|
|
606
|
+
* @param w
|
|
607
|
+
* @return
|
|
608
|
+
*/
|
|
609
|
+
public float[] toArray4(float w);
|
|
610
|
+
|
|
611
|
+
/**
|
|
612
|
+
*
|
|
613
|
+
* @return
|
|
614
|
+
*/
|
|
615
|
+
public float x();
|
|
616
|
+
|
|
617
|
+
/**
|
|
618
|
+
*
|
|
619
|
+
* @return
|
|
620
|
+
*/
|
|
621
|
+
public float y();
|
|
622
|
+
|
|
623
|
+
/**
|
|
624
|
+
*
|
|
625
|
+
* @return
|
|
626
|
+
*/
|
|
627
|
+
public float z();
|
|
628
|
+
}
|