Skip to content

DangerInteractive/Skeid

Repository files navigation

Skeið

a linear algebra library for game graphics and physics

Is this ready to use in my project?

There are more rational alternatives, but it's getting there.

The library has tests to verify that the bulk of the functionality present works as expected, and the library has many working features that can be used if you're interested.

However take note that the API is not and will not be stable until 1.0, for which there is no planned release date. Until then, I can and will be changing load-bearing parts of the library until I'm happy enough with the architecture to make a commitment to it.

Also make sure that you read LICENSE and understand the license terms and disclaimers of liability before you make use of this library.

What features does Skeið provide right now?

  • Generic Matrix and Vector structs
  • Vector-Vector addition, subtract, dot-product, and cross-product
  • Vector-Scalar addition, subtraction, multiplication, and division
  • Matrix-Matrix addition and subtraction
  • Matrix-Scalar multiplication
  • Matrix-Vector multiplication
  • WebAssembly compatibility

What features are planned for the future?

  • Generic Quaternion struct
  • Quaternion math
  • Methods specifically for creating transformation and projection matrices
  • Portable SIMD (when stable in rustc)

How is Skeið pronounced?

While the name can be anglicized to skeid, the original Old Norse word would have been pronounced like the English word scathe, which is also how the name of this library should be pronounced.

What does Skeið mean?

A skeið is a type of Scandinavian viking-age warship. They were the largest type of longship, having 30 or more rowing benches.

The name skeið means "slider" in Old Norse, possibly referring to the high speed of these ships. This word is cognate with the modern English word sheath, via Old English word scēaþ meaning the same as the modern english, and having the Proto-Indo-European root *skei- meaning "to cut or split".

It is named as such because I thought it's a cool word, because other components of the TimberWolf game engine have Norse-inspired names, and because I want this math to move easily and quickly just like the eponymous ship.

How to Use

This is a Rust library, available through crates.io. To install in your project, add it to your Cargo.toml as a dependency:

[dependencies]
skeid = "0.20.2"

Or run the following command from within your project directory:

cargo add skeid