WhatsNew for Tektosyne 6.3.2
This file contains the version history for the Tektosyne Library, starting with the initial release for Java. Please refer to the ReadMe file for general information. Entries link to weblog posts with further details where available.
Version 6.3.2 (released 2021-07-18)
Another bugfix release. Thanks again to Jeff Lockhart! See announcement for more information.
- MultiLineIntersection.Status.handle: Fixed rare search structure corruption when sweep line indices converging at intersection points were ordered inversely to their slope ordering.
- MultiLineIntersectionTest: Added method testSearch with sample polygon provided by Jeff Lockhart to test for this search structure corruption.
Version 6.3.1 (released 2021-07-10)
Small bugfix release. Thanks to Jeff Lockhart for reporting this bug! See announcement for more information.
- Updated build environment to IntelliJ IDEA 2021.1.3. This changes the path to the JUnit library.
- MultiLineIntersection.split: Fixed assertion on line 264 that would misfire for lines intersecting only at start and end points, i.e.
points.size() == 2
.
- MultiLineIntersectionTest.findBoth: Added call to
split
which had not previously been covered by unit tests, only by the interactive test in Tektosyne.Demo.
Version 6.3.0 (released 2019-04-10)
Complete rewrite of Tektosyne Demo in Java Swing to avoid dependency on stand-alone JavaFX distribution as of Java SE 11. No functional library changes. See announcement for more information.
- Updated to Java SE 10.0.2. The precompiled library JAR still targets Java SE 8.
- LineD/I, LineIntersection, MultiLinePoint, PointD/I, RectD/I, RectLocation, SizeD/I, SubdivisionEdge/Element/Face, VoronoiEdge: Removed redundant null checks from
equals
methods.
- PointD.fromDoubles/toDoubles: Removed Javadoc references to JavaFX API documentation.
- QuadTree.remove(key, value): Removed erroneous
unchecked
suppression.
Tektosyne Demo
- Changed required GUI framework from JavaFX to Java Swing.
- Lowered minimum requirement to Java SE 8, same as for the library, but note that Swing only supports high DPI scaling on Java SE 9 and later.
- Added minimum size constraints to all dialogs (with some flickering, see ReadMe).
- Planar Subdivision Test: Fixed duplicate shortcut keys.
- Regular Polygon Test: Automatically resize polygon with dialog window.
Tektosyne User’s Guide
- Updated to reflect new Swing implementation of demo application.
- Added source code changes in previous releases: new methods in
GeoUtils
, default methods in SubdivisionMap
, and new interface SubdivisionFullMap
.
- Most UML diagrams were also revised to account for taller element boxes, caused by improved leading in the current Class Diagrammer release.
Version 6.2.0 (released 2018-03-25)
See Tektosyne 6.2.0 Released 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.
Version 6.1.0 (released 2018-03-01)
See Tektosyne 6.1.0 Released 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.
- Source: Changed project from NetBeans to IntelliJ IDEA.
- Source: Fixed minor issues detected by IntelliJ IDEA.
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.
Version 6.0.1 (released 2017-04-08)
Fixed several FindBugs complaints.
- PointDComparator/X/Y: Implemented Serializable interface for compatibility with serializable collections. This also required default constructors that leave epsilon at zero.
- MultiLineIntersection: Added exceptions for illegal MultiLinePoint.Line location values.
- PolygonGrid: Changed switch/case statements without default to simpler if/else statements.
- RegularPolygon.inscribe: Clarified intentional truncating integer division.
- SubdivisionSearch: Several small changes to shut up FindBugs, no functional differences.
Version 6.0.0 (released 2016-12-14)
Complete rewrite in Java SE 8u112 with JavaFX demo application.
Version 1.0.0 (released 2002-05-27)
Initial release for the .NET Framework, updated through version 5.6.6 (2015-09-30). See the WhatsNew file packaged with the .NET edition for a complete version history of that edition.