AIK is yet another one AI library for multi-platform Kotlin (primarily for JVM).
Grid-based pathfinding algorithms with support for different movement patterns and cost functions.
[T] Path finding for an open map (A*, Dijkstra)
[T] Path finding for a partially open map (A* with obstacles)
[T] Path finding for a limited range of movements (A* with max range, reachable cells calculation)
AIK Geometry is a 2D Euclidean geometry library.
Initially forked from Korma, I found their hierarchy quite inconvenient and decided to make it convenient for my goals.
All coordinates are stored as Double, so for geometric operations, the approximation with the Epsillon value is used.
For some operations, objects with integer points will be declared.
Planned geometric shapes and geometric operations
☐ - TODO, [T] - need testing, ☑ - done
I chose the geometric shapes that I used and the most popular in my opinion from the wiki list.
[T] Point. Also it is Vector1D
[T] Line
[T] Polyline
[T] Ray - half-open directed line segment
[T] LineSegment - closed line segment. Also it is Vector2D
[T] Rectangle
[T] Parallelogram
[T] Trapezoid
[T] Polygon (topics) - simple convex polygons
[T] Vertex
[T] Triangle Vertex - vertex with additional information about the triangle (angles, bisectors, medians, altitudes)
[T] Circle
[T] Circular sector
[T] Circular segment
[T] Ring
[T] Ellipse
[T] Stadium (previously listed as "Oval")
[T] Rhombus
[T] Kite