{"versions":{"0.1.0":{"name":"@mapbox/martini","version":"0.1.0","description":"A JavaScript library for real-time terrain mesh generation","main":"martini.js","unpkg":"martini.min.js","module":"index.js","scripts":{"pretest":"eslint index.js bench.js test","test":"node -r esm test/test.js","bench":"node -r esm bench.js","build":"rollup -c","prepublishOnly":"npm run test && npm run build"},"keywords":["terrain","rtin","mesh","3d","webgl"],"author":{"name":"Vladimir Agafonkin"},"license":"ISC","devDependencies":{"eslint":"^6.1.0","eslint-config-mourner":"^3.0.0","esm":"^3.2.25","pngjs":"^3.4.0","rollup":"^1.19.4","rollup-plugin-terser":"^5.1.1","tape":"^4.11.0"},"eslintConfig":{"extends":"mourner","rules":{"no-use-before-define":0}},"gitHead":"1ca5ca075a169231feb3357c513de774425ff1de","_id":"@mapbox/martini@0.1.0","_nodeVersion":"10.16.2","_npmVersion":"6.10.3","dist":{"integrity":"sha512-sAk7M4l1Zw0vIRIH1QpT+dy548w0Mh5fMP+r2sNPVzM9q8BV2nur76Qiv7cQ1NJzbYdCX182qUxbRnUljT4grg==","shasum":"1801b9234140e1136f37939157ba647d46f1ea30","tarball":"http://123.232.10.234:8212/nexus/content/groups/npm-public/@mapbox/martini/-/martini-0.1.0.tgz","fileCount":6,"unpackedSize":17948,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdWspLCRA9TVsSAnZWagAAfMgP/ivX1BjyQGCwSZzJwrkq\n6/yVkaW6gweTHe9cUwedKY6Q8o1AV2J1Yd0MGvHr/8xpI8C+4ExpHXlyWJS2\n8c7iqTqVnnL3sQdHD87TMOhn0C30dDiWv//IKLpkPviCs7K2CtV9tOq4yFUL\n2WfbuKGGsi8RNhUf1aM5RHblcn6jrWWP7IeNi+brk6jqJ5STEoXIgUJVhTDS\nWEb7/SoR/fy0yYEqOZoosRStLtpgZFKEJUNYDbsQ7ZHPr3O+l8u66RlRnt+K\nBLHPclcKTnyKuTewdsBNhPgdjMOyO7Vx/zPGQ9A1tnw1dBlru6m5/fT6JzwB\nby73kKlEt3SYl56iG6g0Ot5lCDSvhskh5enuTd1tWaQaKpBdhsM+UYbjVnHk\nY31y9nAMYJh+/HV9ay0/pqXLg+++7qRA3l/qgnYfOWczxZ+UU2Op8Mhw95Dj\n2/1IasERuH6HYSEY6Yr0OZD0AGdYW7Mo6sYKMTmqhNstd8RT3R0Mc4fUEhZC\nBy4VP6dW4BO38bsbEFN1lbFcbnzPfNZ6fPwJ76ThZWT/HF1MC7AHwNgsNYnF\nGGrRTpzm7fF1EDFF7LTm/7KRIBSSBrPTqR+IrAlzQ0bkjj90kFJLTcchJR2l\nuG2cAo0/CiI4YH2dPyA6LeKeV1A+kNuGrB9dw+UI9zSgNp1ECh58vXU8AtS0\n93o7\r\n=qztZ\r\n-----END PGP SIGNATURE-----\r\n"},"maintainers":[{"name":"anonymous","email":"accounts+npmjs-01@mapbox.com"},{"name":"anonymous","email":"accounts+npmjs-02@mapbox.com"},{"name":"anonymous","email":"accounts+npmjs-07@mapbox.com"},{"name":"anonymous","email":"accounts+npmjs-03@mapbox.com"},{"name":"anonymous","email":"accounts+npmjs-04@mapbox.com"},{"name":"anonymous","email":"accounts+npmjs-09@mapbox.com"},{"name":"anonymous","email":"accounts+npmjs-05@mapbox.com"},{"name":"anonymous","email":"accounts+npmjs-06@mapbox.com"},{"name":"anonymous","email":"accounts+npmjs-08@mapbox.com"},{"name":"anonymous","email":"accounts+npmjs-advanced-actions@mapbox.com"},{"name":"anonymous","email":"accounts+npmjs-npm-ci@mapbox.com"},{"name":"anonymous","email":"accounts+npmjs@mapbox.com"},{"name":"anonymous","email":"accounts@mapbox.com"},{"name":"anonymous","email":"accounts+npm-mapbox-machine-user@mapbox.com"}],"_npmUser":{"name":"anonymous","email":"accounts+npmjs@mapbox.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/martini_0.1.0_1566231114371_0.8480641150514483"},"_hasShrinkwrap":false,"contributors":[]},"0.2.0":{"name":"@mapbox/martini","version":"0.2.0","description":"A JavaScript library for real-time terrain mesh generation","main":"martini.js","unpkg":"martini.min.js","module":"index.js","scripts":{"pretest":"eslint index.js bench.js test","test":"node -r esm test/test.js","bench":"node -r esm bench.js","build":"rollup -c","prepublishOnly":"npm run test && npm run build"},"keywords":["terrain","rtin","mesh","3d","webgl"],"author":{"name":"Vladimir Agafonkin"},"license":"ISC","devDependencies":{"eslint":"^6.8.0","eslint-config-mourner":"^3.0.0","esm":"^3.2.25","pngjs":"^3.4.0","rollup":"^1.31.0","rollup-plugin-terser":"^5.2.0","tape":"^4.13.0"},"eslintConfig":{"extends":"mourner","rules":{"no-use-before-define":0}},"gitHead":"66124b64153c2b34f89c6551db8ceacaa0778c9a","_id":"@mapbox/martini@0.2.0","_nodeVersion":"10.18.1","_npmVersion":"6.13.6","dist":{"integrity":"sha512-7hFhtkb0KTLEls+TRw/rWayq5EeHtTaErgm/NskVoXmtgAQu/9D299aeyj6mzAR/6XUnYRp2lU+4IcrYRFjVsQ==","shasum":"1af70211fbe994abf26e37f1388ca69c02cd43b4","tarball":"http://123.232.10.234:8212/nexus/content/groups/npm-public/@mapbox/martini/-/martini-0.2.0.tgz","fileCount":6,"unpackedSize":17954,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeNJyDCRA9TVsSAnZWagAA/bEP/RUhaNBNbe8kfkV4lf4q\ncbA4F95XAyx6RS+xAGW0h6BBSUKFHdD6ZkAj2xEGmkJCeNxevxqDHrzNijyH\nQvyX4/83SSIUAP+Lgoq/PpXrA0Y3p0cO+csKUbIPtJkV36a4jhHHQiLhqDCp\n7CUMMfButFJKIQRiZyXxxAutSqiVR9R1y6ZYbg4fK/uv7ZNcOFdXhjVpHqbp\nFnfx3w9CvHcZ5sfJUBbyOt9SC4gJ+R425PvfvrH6Gnf5QmX2shxcsHii12mT\nESXT1A3A+TQEskRkdUc+NDl6NcEt7sWr2c22q9xSZp9/swR6TPTy/n6H0zVP\nwhH9TyOnXfxvSvhebvVODqlAanik+e+64lcAADpHWYxgZNfVUdhiLVLo0ywx\nMoCCZpK24jt3yOnS9yHLRIiXLMlVqS1YpbFnRmqgJcRGxKBbuMepyzhxml9G\nmRnJYgAln93zRP/QFC9A3krx5X8XekrExeMYiAt6G2uwafyylHXodVe4kFHZ\nVBsIfESZEw2OByaV5pvjP1FICEIL/9kQ8EKz8LlDs+CoaubQx8uuBCO//QKG\n3TXiC236ifdbEeWGAlxK5JyC9UVb+FxuJ4dkWm77/EhUqAU3vo2wxuSTq+w0\njZKnMROGmd54Iy95djk0GZ1vDU2Y/rSnzEzXiWbUW0yvI5pR5U5+qWDigapy\n6q54\r\n=NCjY\r\n-----END PGP SIGNATURE-----\r\n"},"maintainers":[{"name":"anonymous","email":"accounts@mapbox.com"},{"name":"anonymous","email":"accounts+npm-mapbox-machine-user@mapbox.com"},{"name":"anonymous","email":"accounts+npmjs@mapbox.com"},{"name":"anonymous","email":"accounts+npmjs-01@mapbox.com"},{"name":"anonymous","email":"accounts+npmjs-02@mapbox.com"},{"name":"anonymous","email":"accounts+npmjs-03@mapbox.com"},{"name":"anonymous","email":"accounts+npmjs-04@mapbox.com"},{"name":"anonymous","email":"accounts+npmjs-05@mapbox.com"},{"name":"anonymous","email":"accounts+npmjs-06@mapbox.com"},{"name":"anonymous","email":"accounts+npmjs-07@mapbox.com"},{"name":"anonymous","email":"accounts+npmjs-08@mapbox.com"},{"name":"anonymous","email":"accounts+npmjs-09@mapbox.com"},{"name":"anonymous","email":"accounts+npmjs-advanced-actions@mapbox.com"},{"name":"anonymous","email":"accounts+npmjs-npm-ci@mapbox.com"}],"_npmUser":{"name":"anonymous","email":"accounts+npmjs@mapbox.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/martini_0.2.0_1580506242597_0.6275119906825504"},"_hasShrinkwrap":false,"contributors":[]}},"dist-tags":{"latest":"0.2.0"},"name":"@mapbox/martini","time":{"created":"2022-01-27T08:40:26.792Z","0.1.0":"2019-08-19T16:11:54.527Z","modified":"2023-07-28T09:35:01.227Z","0.2.0":"2020-01-31T21:30:42.729Z"},"readme":"# MARTINI\n\n[![Build Status](https://travis-ci.com/mapbox/martini.svg?branch=master)](https://travis-ci.com/mapbox/martini) [![Simply Awesome](https://img.shields.io/badge/simply-awesome-brightgreen.svg)](https://github.com/mourner/projects)\n\nMARTINI stands for **Mapbox's Awesome Right-Triangulated Irregular Networks, Improved**.\n\nIt's an experimental JavaScript library for **real-time terrain mesh generation** from height data. Given a (2<sup>k</sup>+1) × (2<sup>k</sup>+1) terrain grid, it generates a hierarchy of triangular meshes of varying level of detail in milliseconds. _A work in progress._\n\nSee the algorithm in action and read more about how it works in [this interactive Observable notebook](https://observablehq.com/@mourner/martin-real-time-rtin-terrain-mesh).\n\nBased on the paper [\"Right-Triangulated Irregular Networks\" by Will Evans et. al. (1997)](https://www.cs.ubc.ca/~will/papers/rtin.pdf).\n\n![MARTINI terrain demo](martini.gif)\n\n## Example\n\n```js\n// set up mesh generator for a certain 2^k+1 grid size\nconst martini = new Martini(257);\n\n// generate RTIN hierarchy from terrain data (an array of size^2 length)\nconst tile = martini.createTile(terrain);\n\n// get a mesh (vertices and triangles indices) for a 10m error\nconst mesh = tile.getMesh(10);\n```\n\n## Install\n\n```bash\nnpm install @mapbox/martini\n```","users":{}}