math.gl is a toolbox that offers a range of modules for
|Basic 3D math classes (vectors, matrices etc) and utilities (|
|Bounding volumes and intersection testing.|
|Ellipsoidal geospatial math, primarily for WGS84 cartesian to cartographic transformations.|
|Web Mercator projection utilities|
math.gl module is now deprecated. It is still available as an "alias" for
math.gl/core but should not be used in new applications.
viewport-mercator-project module was consolidated with math.gl in Oct 2019. It was orignally developed indendently in the [https://github.com/uber-common/viewport-mercator-project] repository.
Core Library Features
- Classes for gl-matrix - math.gl classes are built on top of
- Array-Based - math.gl classes (like
Array which enables applications to use them interchangeably with plain (or typed) arrays.
- Debug Friendly - math.gl offers optional error checking after every math operation which makes quick work of locating coding errors and bad input data. Printing support for objects (
toString) also simplifies debugging.
- Documentation - If you are new to 3D programming it can be hard to know where to start. math.gl comes with articles to show you the big picture and get you up-to-speed on the mathematical concepts and the corresponding classes.
- Size Conscious - math.gl is published as multiple modules to let applications cherry-pick required functionality, and is optimizes dependencies for tree-shaking to make sure you only pay for (bundle) what you use.
Supported Browsers and Node Versions
math.gl is fully supported on:
- Evergreen browsers: Recent versions of Chrome, Safari, Firefox, Edge etc.
- Node.js: Active and Maintenance LTS releases
- IE11: Supported (with certain performance caveats) using math.gl's fully transpiled
es5 distribution and
Note that Internet Explorer < 10 will not work. If your application needs to support older browsers, an option could be to use
Key Design Ideas
- gl-matrix provides high-performance math that works directly on arrays.
- The core classes were originally developed as part of luma.gl v4 to provide a basic 3D math library for the luma.gl and deck.gl frameworks.
- math.gl was then broken out into its own module to allow it to mature in terms of functionality and stability.
- Through a collaboration with the Cesium team, parts of the Cesium math library are ported and published as independently usable math.gl modules (geospatial and culling).
- The intention is that math.gl should be able to serve a general purpose 3D math library.
- math.gl modules (such as geospatial math) should be usable by applications using other frameworks, without having to use the core math.gl classes.
gl-matrix - math.gl classes use gl-matrix under the hood
- THREE.js math library - math.gl classes are API-compatible with a subset of the THREE.js classes and pass THREE.js test suites.
- Cesium math library (Apache2) - The geospatial and culling modules were ported from Cesium code base.
MIT license. The libraries that the core
math.gl module are built on (e.g. gl-matrix) are also all open source and MIT licensed.
@math.gl/culling include Cesium-derived code which is Apache2 licensed.