Releases: TwoRingSoft/FastMath
Releases · TwoRingSoft/FastMath
[2.1.0] 2018-09-23
Added
- Add function to
LocationGraphNode
to assign a "color" to each leaf node (in the form of anInt
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
andVertex.x
/.y
. - Renamed a function to correctly capitalize a word:
assignNewtriangleNeighbors
becomesassignNewTriangleNeighbors
. LocationGraphNode.getTriangles()
is no longer optional. It will just return an empty set if no leaf nodes are found.
Added
Edge
,Triangle
andVertex
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 returnSet<Vertex>
and aString
description of a sorted list of brief descriptions of all containedTriangle
s. - Typealiases for
Degree
andRadian
. enum
s:TrigonometricRatio
definingcos
,sin
etc and some helper functions.Quadrant
defining the four parts of the Cartesian plane and some query functions.
struct
s:PolarCoordinate2D
.CartesianCoordinate2D
.Angle
(with anAngleOrientation
enum
that needs to be reconciled withPlanarOrientation
).
- 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
Triangle
s adjacent on a commonEdge
, the remaining fourEdges
between them are now used to propagate edge legalization. - During edge legality testing, an
Edge
and anotherVertex
are used to construct aTriangle
whose circumscribed circle is queried to contain anotherVertex
(call itx
here). Previously, the endpoints of theEdge
were treated specially for ghost points, and if none were there, execution proceeded directly to the incircle test. Ifx
is a ghost point, the calculation is nonsensical. Inserted a new check to see ifx
is a ghost point before proceeding to the actual incircle test.
- After an edge flip, not all of the necessary edges of the new pair of neighboring triangles received propagated legality testing. For two
- Querying
LocationGraphNode
for all leafTriangle
instances would leave all its nodes'visited
property set totrue
, so subsequent queries would return the empty set. Reset all nodes'visited
property tofalse
before returning the results of the query ingetTriangles()
. - Comparisons of
Triangle
now consider equality between sets of itsVertex
instances, instead of sets of itsEdge
s.