Table of Contents
Chevron DownDeveloper Guide
Chevron DownAPI Reference

Introduction is a JavaScript class library focused on 3D and geospatial math. It provides a core module with traditional 3D library classes for vectors, matrices etc, and additional, optional modules providing geospatial math and .

Modules is a toolbox that offers a range of modules for

ModuleDescription 3D math classes (vectors, matrices etc) and utilities (equals, toRadians etc) volumes and intersection testing. geospatial math, primarily for WGS84 cartesian to cartographic transformations. solar position and direction. for 3D / perspective Web Mercator projections.

There are also some legacy modules that are not recommended for new code, but are provided to avoid breaking older applications:

Legacy ModuleDescription
math.glRe-exports the API from The module is now considered deprecated. It is still available as an "alias" for but should not be used in new applications.
viewport-mercator-projectRe-exports the Web Mercator projection utilities in This code was orignally developed indendently in the [] repository, however the module was consolidated with in Oct 2019.

Core Library Features

  • Classes for gl-matrix - classes are built on top of gl-matrix. gl-matrix has a reputation for being the most performant and battle-tested JavaScript math library around.
  • Array-Based - classes (like Vector3, Matrix4) are subclasses of the built-in JavaScript Array which enables applications to use them interchangeably with plain (or typed) arrays.
  • Debug Friendly - 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. 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 - 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 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's fully transpiled es5 distribution and @babel/polyfills.

Note that Internet Explorer < 10 will not work. If your application needs to support older browsers, an option could be to use gl-matrix directly.

Key Design Ideas

  • ES6 allows JavaScript classes to be derived from the built-in arrays
  • gl-matrix provides high-performance math that works directly on arrays.
  • Geospatial frameworks like and mapbox-gl expect vectors to be supplied in the form of JavaScript arrays.


  • The core classes were originally developed as part of v4 to provide a basic 3D math library for the and frameworks.
  • 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 modules (geospatial and culling).

Attributions was inspired by and built upon some of the most proven open source JavaScript math libraries:

  • gl-matrix - classes use gl-matrix under the hood
  • THREE.js math library - 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 module are built on (e.g. gl-matrix) are also all open source and MIT licensed.

The and models include Cesium-derived code which is Apache2 licensed.