Home

Awesome

Euclid

euclid buildstatus

Minutiae

Licensing

This library is under the license Apache 2.0. Consult the license file for more information.

Compatibility

This library is compatible with Java 8+.

Dependency

This library sources depends on the matrix library EJML here, while the tests also on JUnit 5 and PIT mutation testing library here.

What is Euclid?

Euclid is a general library addressing vector math and geometry problems. The library is born from the need of having a base library for geometric applications that is well tested, flexible, and meant for real-time environment where garbage generation is not allowed. Euclid is composed of 5 modules.

This library is continuously being improved and will be extended in the near future as the result of migrating progressively content from the IHMC open source software here.

Who would use Euclid?

Any software developer manipulating geometry objects or dealing with 2D or 3D graphical UI is susceptible to use this library as the base of a more complex algorithm.

What is the goal of Euclid?

The goal for Euclid is to become the most flexible, easy to use, and fast library for geometry applications, so it results in great increase in development productivity.

How can I contribute to Euclid?

Please read CONTRIBUTING.md.

Content

Note that most of the modules define the following tools:

For more information about the static tools, see Wiki- Static tools summary.

Euclid

Euclid Geometry

Euclid Frame

Euclid Shape

Euclid Frame Shape

This module expands the shapes defined in the shape module to include the reference frame framework. The Gilbert-Johnson-Keerthi and Expanding polytope algorithms are also expanded to handle shapes expressed in different reference frames.

Using Euclid from .jar releases with Maven/Gradle

The releases .jars for Euclid are hosted on Maven repository. You can browse the IHMC release packages at https://mvnrepository.com/artifact/us.ihmc.

At a minimum, you will need to have the following repository declared in your build script to use the Euclid .jars:

repositories {
   mavenCentral()
}

Euclid currently publishes 5 distinct modules of interest. Here is an example for adding the dependency to each module of Euclid using your build script:

dependencies {
   compile group: "us.ihmc", name: "euclid", version: "x.x"
   compile group: "us.ihmc", name: "euclid-geometry", version: "x.x"
   compile group: "us.ihmc", name: "euclid-frame", version: "x.x"
   compile group: "us.ihmc", name: "euclid-shape", version: "x.x"
   compile group: "us.ihmc", name: "euclid-frame-shape", version: "x.x"
}