{{ message }}

# korlibs / korma

Mathematics library focused on geometry for Multiplatform Kotlin 1.3

Switch branches/tags
Nothing to show

## Files

Failed to load latest commit information.
Type
Name
Commit time

# Korma

Korma is a Mathematical Library mostly focused on geometry for Multiplatform Kotlin 1.3

## Support korma

in addition to ensure the continuity of the project, you will get exclusive content.

## Info:

It includes structures for Points and Matrices (2D and 3D), Typed Angles, Rectangles, BoundsBuilder, Anchors, Vector graphics with Bezier curves support and Context2D-like API for building vectors, Interpolation facilities, Easing, Triangulation, BinPacking and Path Finding in Bidimensional arrays and Triangulated Spatial Meshes.

### Some samples:

```val vector = VectorPath {
// Here we can use moveTo, lineTo, quadTo, cubicTo, circle, ellipse, arc...
rect(0, 0, 100, 100)
rect(300, 0, 100, 100)
}.triangulate().toString()
// "[[Triangle((0, 100), (100, 0), (100, 100)), Triangle((0, 100), (0, 0), (100, 0))], [Triangle((300, 100), (400, 0), (400, 100)), Triangle((300, 100), (300, 0), (400, 0))]]"

// Angles
val angle = 90.degrees

// Matrices
val a = Matrix(2, 1, 1, 2, 10, 10)
val b = a.inverted()
assertEquals(identity, a * b)

// Rectangle + ScaleMode + Anchor
assertEquals(Rectangle(0, -150, 600, 600), Size(100, 100).applyScaleMode(Rectangle(0, 0, 600, 300), ScaleMode.COVER, Anchor.MIDDLE_CENTER))

// PathFinding (Matrix)
val points = AStar.find(
board = Array2("""
.#....
.#.##.
.#.#..
...#..
""") { c, x, y -> c == '#' },
x0 = 0,
y0 = 0,
x1 = 4,
y1 = 2,
findClosest = false
)
println(points)
// [(0, 0), (0, 1), (0, 2), (0, 3), (1, 3), (2, 3), (2, 2), (2, 1), (2, 0), (3, 0), (4, 0), (5, 0), (5, 1), (5, 2), (4, 2)]

// PathFinding (Shape)
assertEquals(
"[(10, 10), (100, 50), (120, 52)]",
(Rectangle(0, 0, 100, 100).toShape() + Rectangle(100, 50, 50, 50).toShape()).pathFind(
IPoint(10, 10),
IPoint(120, 52)
).toString()
)```

```def kormaVersion = "1.9.1"

repositories {
maven { url "https://dl.bintray.com/korlibs/korlibs" }
}

dependencies {
// For multiplatform projects
implementation "com.soywiz.korlibs.korma:korma:\$kormaVersion"

// For JVM/Android only
implementation "com.soywiz.korlibs.korma:korma-jvm:\$kormaVersion"
// For JS only
implementation "com.soywiz.korlibs.korma:korma-js:\$kormaVersion"
}

dependencies {
implementation "com.soywiz.korlibs.korma:korma-shape:\$kormaVersion"
}

Mathematics library focused on geometry for Multiplatform Kotlin 1.3

v2.1.1 Latest
May 14, 2021