Skip to content

Latest commit

 

History

History
126 lines (77 loc) · 5.02 KB

CHANGELOG.md

File metadata and controls

126 lines (77 loc) · 5.02 KB

Changelog

The format is based on Keep a Changelog and this project adheres to Semantic Versioning.


[Unreleased]

Added

  • Function to calculate value of TrigonometricRatios.

[5.0.0] 2022-04-27

Breaking

  • Change sum() (a function) into sum (a computed property) and update their implementation.

Added

  • Provide conversion to binary numbers via arrays of 1s and 0s.
  • Sums of windows in collections.
  • Calculation of power sets of collection elements.
  • Protocols for Graph, Edge and Node. Implementations for edges and nodes, and an adjacency matrix based graph.
  • Line2D and LineSegment2D structs with functions for calculating intersection, perpendicular bisectors and midpoints, as well as solving for y given an x value.

[4.1.0] 2021-12-06

Added

  • Median calculations.
  • Conversion strings describing binary numbers to their integer value.
  • Compute the power set of a collection.

Fixes

  • Base case for exponentiation, where N^0=1. Fix its precedence and visibility.
  • Update some Gemfile depdencies.

[4.0.0] 2020-03-08

Changed

  • Update iOS deployment_target version to 12.0.

Fixed

  • Update PippinLibrary dependency version.

[3.0.1] 2020-03-08

Fixed

  • Update PippinLibrary dependency.

[3.0.0] 2019-12-12

Changed

  • Update to Swift 5.

[2.3.0] 2019-01-29

Added

  • Support for macOS starting with 10.12.

[2.2.1] 2019-01-18

Fixed

  • Histograms only key by the upper bound of each bucket, whereas previously it used the full string description (e.g. 10 versus 1..<10).

[2.2.0] 2019-01-09

Added

  • Functions that given collections of integer or floating point values calculate mean, variance, standard deviation and histogram, a z-score for each value, and a convenience function to return the histogram of a data set's z-scores as a normalized distribution.

[2.1.0] 2018-09-23

Added

  • Add function to LocationGraphNode to assign a "color" to each leaf node (in the form of an Int value) such that the resulting triangulation is 4-colored: no two triangles adjacent on a common edge have the same color.
  • New unit tests for delaunay triangulation.

Fixed

  • Various debugging improvements for Delaunay triangulation, like how edges and triangles created due to edge flips are named, and test Swift generation for Triangles.

[2.0.0] 2018-09-12

Changed

  • Removed function to sort a Set<Vertex> into counterclockwise order.
  • Converted IUO properties to nonoptional properties appropriately set before on init. Edge.a/.b, Triangle.a/.b/.c and Vertex.x/.y.
  • Renamed a function to correctly capitalize a word: assignNewtriangleNeighbors becomes assignNewTriangleNeighbors.
  • LocationGraphNode.getTriangles() is no longer optional. It will just return an empty set if no leaf nodes are found.

Added

  • Edge, Triangle and Vertex may now optionally have a name specified, or have one generated automatically on init. Helps read logs.
  • Show recursion depth in logs from recursive functions.
  • Bunches of comments and diagrams documenting innards of DelaunayTriangulator.
  • Add a function to Triangle to output Swift code to reconstruct it, for e.g. unit tests.
  • Add functions for Set<Triangle> to return Set<Vertex> and a String description of a sorted list of brief descriptions of all contained Triangles.
  • Typealiases for Degree and Radian.
  • enums:
    • TrigonometricRatio defining cos, sin etc and some helper functions.
    • Quadrant defining the four parts of the Cartesian plane and some query functions.
  • structs:
    • PolarCoordinate2D.
    • CartesianCoordinate2D.
    • Angle (with an AngleOrientation enum that needs to be reconciled with PlanarOrientation).
  • A function to compute distance between two CGPoints.

Fixed

  • In DelaunayTriangulator:
    • After an edge flip, not all of the necessary edges of the new pair of neighboring triangles received propagated legality testing. For two Triangles adjacent on a common Edge, the remaining four Edges between them are now used to propagate edge legalization.
    • During edge legality testing, an Edge and another Vertex are used to construct a Triangle whose circumscribed circle is queried to contain another Vertex (call it x here). Previously, the endpoints of the Edge were treated specially for ghost points, and if none were there, execution proceeded directly to the incircle test. If x is a ghost point, the calculation is nonsensical. Inserted a new check to see if x is a ghost point before proceeding to the actual incircle test.
  • Querying LocationGraphNode for all leaf Triangle instances would leave all its nodes' visited property set to true, so subsequent queries would return the empty set. Reset all nodes' visited property to false before returning the results of the query in getTriangles().
  • Comparisons of Triangle now consider equality between sets of its Vertex instances, instead of sets of its Edges.