-
Notifications
You must be signed in to change notification settings - Fork 13
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
1.4.0 #75
Conversation
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
other small things
Kudos, SonarCloud Quality Gate passed! 1 Bug No Coverage information |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Added
sobolLDS()
toPGS_PointSet
. Generates a set of 2D deterministic stratified points from the Sobol low discrepancy sequence.cluster()
toPGS_PointSet
. Clusters a collection points into N groups (using k-means).double[][]
conversion methods toPGS_Conversion
. Converts simple PShapes to and from theirdouble[p1, p2, ...][x, y]
representation.weightedMedian()
toPGS_PointSet
. Finds the geometric median point of a set of weighted sample points.median()
toPGS_ShapePredicates
. Computes the geometric median location of a shape's vertices.isConformingMesh()
toPGS_ShapePredicates
. Determines whether a GROUP shape forms a conforming mesh / valid coverage.createRandomSFCurve()
toPGS_Construction
. Creates a random space-filling curve.createTaijitu()
toPGS_Construction
. Creates a Taijitu shape (a geometric representation of the Taoist symbol of yin and yang).createArbelos()
toPGS_Construction
. Creates an arbelos figure.createTeardrop()
toPGS_Construction
. Creates a teardrop figure.createGear()
toPGS_Construction
. Creates a gear figure.createSponge()
toPGS_Construction
. Creates a sponge-like porous structure.createRandomBezierPolygon()
toPGS_Construction
. Generates a smooth or spiky random polygon comprising Bezier curves.createSuperRandomPolygon()
toPGS_Construction
. Generates a highly customisable random polygon based on a square grid of cells.maximumPerimeterSquare()
toPGS_Optimisation
. Finds the largest square whose 4 vertices each lie on the perimeter of a shape.rectPack()
toPGS_Optimisation
. Packs a collection of rectangles into rectangular 2D bin(s).reorderChildren()
toPGS_Conversion
. Reorders the child shapes of a shape according to given comparator.scaleAreaTo()
toPGS_Transformation
. Scales a given shape to a target shape area.scaleArea()
toPGS_Transformation
. Scales the area of a given shape by a specified scale factor.circleCoverage()
toPGS_Optimisation
. Covers a polygon with n circles.PGS_Conversion.fromPVector()
that accepts a list of holes, each defined a list of by PVectors.simpleSubtract()
toPGS_ShapeBoolean
. Subtracts inner holes that lie within a given shell from the shell, without geometric processing.fromQuadraticBezier()
andfromCubicBezier()
toPGS_Conversion
. Makes a PATH shape representing a bezier curve (having equidistant sampling) given by its parameters.simplifyHobby()
toPGS_Morphology
. Creates a smooth Hobby Curve from the vertices of a shape.toPShape()
toPGS_Triangulation
. Converts a triangulated mesh object to a PShape representing the triangulation -- helpful when working with the raw mesh.extractHoles()
toPGS_Processing
. Extracts all the holes from a shape.PGS_Processing.fromPVector()
that accepts a random seed.visibilityPolygon()
toPGS_Optimisation
. Computes the area visible from a given point in a space, considering occlusions caused by obstacles.PGS_CirclePacking.stochasticPack()
that accepts a random seed.filterChildren()
toPGS_Processing
. Filters the children of a shape object based on a given Predicate function.fromGraph()
toPGS_Conversion
. Converts a graph consisting of PVectors and PEdges into a PShape by polygonizing its edges.smoothMesh()
toPGS_Meshing
. Smoothes a mesh via iterative weighted Laplacian smoothing.stochasticMerge()
toPGS_Meshing
. Randomly merges together adjacent faces of a mesh.areaMerge()
toPGS_Meshing
. Merges/dissolves small faces of a mesh into their neighboring faces.simplifyMesh()
toPGS_Meshing
. Simplifies the boundaries of the faces in a mesh while preserving the original mesh topology.nodeNonMesh()
toPGS_Meshing
. Transforms a non-conforming mesh shape into a conforming mesh via "noding".splitEdges()
toPGS_Meshing
. Splits each edge of a given mesh shape into a specified number of equal parts.subdivideMesh()
toPGS_Meshing
. Subdivides the faces of a mesh using the simple Catmull-Clark split approach.toCircles()
toPGS_Conversion
. Creates a PShape having circle geometries representing a collection of circles.fromPShape()
toPGS_SegmentSet
. Extracts a list of unique PEdge segments representing the given shape.stretch()
toPGS_SegmentSet
. Stretches segments in a list by a specified factor.nest()
toPGS_Processing
. Creates a nested shape having n levels of inner polygons.largestEmptyCircles()
toPGS_Optimisation
. Finds the N largest empty circles amongst a set of obstacle geometries within a boundary.PGS_CirclePacking.maximumInscribedPack()
that accepts a minimum radius threshold.getPolygonInteriorSegments()
toPGS_SegmentSet
. Retains line segments from a set of line segments that are wholly contained within a given shape.minimumAreaRectangle()
toPGS_Optimisation
. Computes the minimum-area rectangle that encloses a shape.binPack()
toPGS_Optimisation
. Packs irregular polygonal shapes into rectangular containers (bins).smoothEllipticFourier()
toPGS_Morphology
. Smoothes a shape using its elliptic fourier descriptors.efdSimilarity()
toPGS_ShapePredicates
. Quantifies the similarity between two shapes, using elliptic fourier descriptors.dissolve()
toPGS_SegmentSet
. Dissolves a collection of edges into a set of maximal-length linestrings.toCentroidDualGraph()
toPGS_Conversion
. Converts a mesh-like PShape into its centroid-based undirected dual-graph.isValid()
toPGS_ShapePredicates
. Checks if a PShape is valid, and reports the validation error if it is invalid.obstaclePack()
toPGS_CirclePacking
. Packs circles of varying radii within a given shape, whilst respecting pointal obstacles.align()
toPGS_Transformation
. Aligns one polygon shape to another, by finding the optimal transformation.extractInnerEdges()
toPGS_Meshing
. Extracts all inner edges from a mesh.centerLine()
toPGS_Contour
. Determines the longest center line passing through a given shape.PGS_Conversion.toWKB()
and.fromWKB()
that write/read the binary shape representation into a file.pointOnExteriorByDistance()
toPGS_Processing
. Extracts a point from the perimeter (exterior) of the given shape at some distance along its perimeter.RLF_BRUTE_FORCE_4COLOR
. Repeatedly calls (upto 250 times) the recursive largest-first (RLF) algorithm until a 4-coloring is found.Changed
PGS_Processing.equalParition()
. New algorithm is ~2x faster. Also removedprecise
parameter from method signature (no longer necessary).PGS_Processing.simplifyDCE()
. New algorithm is much faster, particularly on large inputs.PGS_Processing.cleanCoverage()
. New algorithm is much faster, particularly on large inputs.toPVector()
now works on GROUP shapes (returning vertices from all child shapes).PGS_ShapePredicates.holes()
now supports GROUP shapes.PGS_Morphology.smoothGaussian()
now supports GROUP shapes.PGS_Hull.convexHull()
. New algorithm is faster, and particularly so on large input sizes.relaxations
parameter toinnerVoronoi()
methods inPGS_Voronoi
. Performs Lloyd's relaxations leading to centroidal voronoi.System.currentTimeMillis()
withSystem.nanoTime()
. Helps the randomness of outputs when called quickly within a loop.PGS_ShapePredicates.maximumInteriorAngle()
.PGS_ShapeBoolean
methods now preserve the style of input shapea
in their output.PGS_createRandomPolygon
can now accept a random seed.PGS_CirclePacking.maximumInscribedPack()
. New algorithm is faster, particularly so on higher circle counts.miniumumBoundingRectangle()
tominimumWidthRectangle()
.intersectMesh()
andsubtractMesh()
now fully preserve the styling of original mesh faces.PGS_Contour.medialAxis()
now returns dissolved maximal-length lines, rather than line segments only.PGS_Processing.tangentAngle()
values correspond to the angle that the tangent line makes with the positive x-axis (east), orientated clockwise, regardless of polygon orientation.Fixed
prunePointsWithinDistance()
was making it much slower than it should have been.fromJava2D()
conversion.from
andto
arguments forinterpolate()
were the wrong way round.PGS_Construction.createHeart()
were slightly squished in the vertical direction.PGS_ShapeBoolean.unionMesh()
now handles meshes with holes correctly (holes were filled in previously).PGS_Processing.extractPerimeter()
now behaves as expected when perimeter location values are negative.point[s]OnExterior()
methods could incorrectly produce offsets towards the interior of a shape. Such values will now always correspond to offset away from a shape's interior.PGS_ShapePredicates.holes()
now identifies and counts gaps in meshes as holes.splitQuadrangulation
were unclosed and are now closed polygons.PGS_Conversion.toGraph()
no longer adds a spurious closing edges on LINE shapes.