This is an alternative site for discovering Elm packages. You may be looking for the official Elm package site instead.
Interop support for ianmackenzie/elm-geometry and elm-community/linear-algebra
version 1.0.0
license MPL-2.0
native-modules False
elm-version 0.18.0 <= v < 0.19.0
Tag 1.0.0
Committed At 2018-07-01 17:19:55 UTC
ianmackenzie/elm-geometry 1.0.0 <= v < 2.0.0 1.3.0
elm-lang/core 5.1.1 <= v < 6.0.0 5.1.1
elm-community/linear-algebra 3.1.2 <= v < 4.0.0 3.1.2



This package supports interop between ianmackenzie/elm-geometry and elm-community/linear-algebra. You can:

  • Convert elm-geometry Point2d, Point3d, Vector2d, Vector3d, Direction2d and Direction3d values to and from linear-algebra Vec2, Vec3 and Vec4 values
  • Convert elm-geometry Frame3d values to the equivalent linear-algebra Mat4 transformation matrices
  • Transform elm-geometry Point3d and Vector3d values using linear-algebra Mat4 transformation matrices

This is important for working with WebGL, since the elm-community/webgl package requires using linear-algebra types when defining meshes and shaders. This package may also be useful when using other packages that accept or return linear-algebra types, such as mkovacs/quaternion. However, you shouldn't need this package for general use - you should be able to do most geometric transformations you need (rotations, translations etc.) using elm-geometry itself.


elm package install ianmackenzie/elm-geometry-linear-algebra-interop


Full API documentation is available.

Usage details

The modules in this package are all designed to be imported using as to 'merge' them with the base elm-geometry modules; for example, using

import Point3d exposing (Point3d)
import Geometry.Interop.LinearAlgebra.Point3d as Point3d

will let you use functions from both modules as if they were part of one big Point3d module. For example, you could use the toVec3 function from this package's Point3d module with the origin value from the base Point3d module as if they were part of the same module:

Point3d.toVec3 Point3d.origin
--> Math.Vector3.vec3 0 0 0

Questions? Comments?

Please open a new issue if you run into a bug, if any documentation is missing/incorrect/confusing, or if there's a new feature that you would find useful. For general questions about using this package, try:

  • Joining the #geometry channel on the Elm Slack, or sending me (@ianmackenzie) a message - even if you don't have any particular questions right now, it would be great to know what you're hoping to do with the package!
  • Posting to the Elm Discourse forums
  • Or if you happen to be in the New York area, come on out to the Elm NYC meetup =)

You can also find me on Twitter (@ianemackenzie), where I occasionally post elm-geometry-related stuff like demos or new releases. Have fun, and don't be afraid to ask for help!