Release of 6.2.0 and 6.1.0
This is a combined release of 6.2.0 and 6.1.0
Changes in Tektosyne 6.2.0 (see here for more information)
- GeoUtils & MathUtils: Updated Javadoc for use of ThreadLocalRandom since 6.1.0.
- GeoUtils:
- randomPoint: Added overload that takes a bounding RectD.
- Added method randomRect with a given bounding RectD.
Planar Subdivisions
-
Subdivision.intersection:
- Fixed output faces incorrectly mapping to the unbounded face of an input Subdivision. This happened when all incident edges of an output face were from the other input Subdivision.
- SplitEdgeResult.updateFaces: Fixed face mapping not being updated for twins of current edges.
- Added extensive unit tests, both random and non-random.
-
SubdivisionMap:
- from/toFace: Added default implementations that throw UnsupportedOperationException.
- Added interface SubdivisionFullMap that extends SubdivisionMap to support edges and vertices. The additional conversion methods also throw UnsupportedOperationException by default, allowing selective implementation by clients.
-
SubdivisionLinesTest: Added more factory methods to create subdivisions.
-
SubdivisionPolygonsTest: Actually added factory methods promised in Javadoc…
Voronoi Diagrams
- Allowed special case of only two generator sites, with a single edge separating them and no natural vertices.
- VoronoiResults.voronoiRegions:
- Fixed invalid result when edges exactly hit corners of the clipping rectangle.
- Source: Extensive rewrite for two-site support, bug fixes, and general legibility.
- VoronoiTest:
- Added tests for both cases described above.
- Random Voronoi test now also randomizes boundaries and runs repeatedly.
- Extracted generation of random Voronoi diagrams as factory method.
Changes in Tektosyne 6.1.0 (see here for more information)
- Updated to Java SE 9.0.4. The precompiled library JAR still targets Java SE 8.
- Added proper manifest to library JAR file.
- GeoUtils, MathUtils, Tests & Demo: Changed Random to faster ThreadLocalRandom.
- NodeList1/2Test: Changed deprecated “new Integer(…)” to Integer.valueOf(…).
- PointI.toString: Fixed coordinates being labeled “width/height” rather than “x/y.”
- Demo: Improved tooltips on numerical Spinner controls.
- ReadMe: Removed notes on Java and JavaFX issues which appear to be obsolete as of Java SE 9.
Float/Double.MIN_VALUE
- Float/Double.MIN_VALUE is the smallest positive value, not the smallest negative value as for integral types. NEGATIVE_INFINITY must be used instead, or algorithms will fail for negative arguments.
- Float/Double.MAX_VALUE works the same as for integral types but was also changed to POSITIVE_INFINITY where needed for symmetry.
- Fortran.max/min: Changed default values for Float/Double arguments from MIN/MAX_VALUE to NEGATIVE/POSITIVE_INFINITY.
- RectD.circumscribe(PointD...), SubdivisionSearch.Trapezoid (internal use): Changed search initializations from MIN/MAX_VALUE to NEGATIVE/POSITIVE_INFINITY.
- Changed unit tests for the cases described above to include negative values.
Voronoi Diagrams
- Fixed Voronoi edges being output twice when they do not touch any vertices, only the clipping bounds.
- VoronoiResults.voronoiRegions:
- Fixed invalid result when a Voronoi region must be closed over three corners of the clipping rectangle. Previously this case was mistakenly closed over the opposite single corner.
- Fixed open regions not being closed for exactly horizontal or vertical edges.
- Added unit tests for the cases described above.
- Upgraded some assertion failures to exceptions.