Skip to content

Version 6.2.0 (originally released 2018-03-25)

Latest
Compare
Choose a tag to compare
@PixelBumper PixelBumper released this 03 Apr 18:59
· 4 commits to master since this release

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.