{"_id":"@mapbox/martini","_rev":"7-12641ba48cfbbe67714ada8f0b6121c2","name":"@mapbox/martini","dist-tags":{"latest":"0.2.0"},"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":"https://registry.npmjs.org/@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","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGBQoWvo/OccUwZtPT/F1qMCmIe3seiUY9KGEmiYZFYoAiEA19KYX1VizwEP06FxpEWrFFDYZgxhzALNw+IhGnn4YJs="}]},"maintainers":[{"name":"mapbox-npm-01","email":"accounts+npmjs-01@mapbox.com"},{"name":"mapbox-npm-02","email":"accounts+npmjs-02@mapbox.com"},{"name":"mapbox-npm-07","email":"accounts+npmjs-07@mapbox.com"},{"name":"mapbox-npm-03","email":"accounts+npmjs-03@mapbox.com"},{"name":"mapbox-npm-04","email":"accounts+npmjs-04@mapbox.com"},{"name":"mapbox-npm-09","email":"accounts+npmjs-09@mapbox.com"},{"name":"mapbox-npm-05","email":"accounts+npmjs-05@mapbox.com"},{"name":"mapbox-npm-06","email":"accounts+npmjs-06@mapbox.com"},{"name":"mapbox-npm-08","email":"accounts+npmjs-08@mapbox.com"},{"name":"mapbox-npm-advanced-actions","email":"accounts+npmjs-advanced-actions@mapbox.com"},{"name":"mapbox-npm-ci","email":"accounts+npmjs-npm-ci@mapbox.com"},{"name":"mapbox-npm","email":"accounts+npmjs@mapbox.com"},{"name":"mapbox-admin","email":"accounts@mapbox.com"},{"name":"mapbox-machine-user","email":"accounts+npm-mapbox-machine-user@mapbox.com"}],"_npmUser":{"name":"mapbox-npm","email":"accounts+npmjs@mapbox.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/martini_0.1.0_1566231114371_0.8480641150514483"},"_hasShrinkwrap":false},"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":"https://registry.npmjs.org/@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","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICLZGBBdhFfkeIUONnhFcFm1qY1N3ovwh1MkxmeXokH6AiEAkhcX0o+qQlwHwNLisBCmFtpFgP6DaCH9CQvbhJFZQJA="}]},"maintainers":[{"name":"mapbox-admin","email":"accounts@mapbox.com"},{"name":"mapbox-machine-user","email":"accounts+npm-mapbox-machine-user@mapbox.com"},{"name":"mapbox-npm","email":"accounts+npmjs@mapbox.com"},{"name":"mapbox-npm-01","email":"accounts+npmjs-01@mapbox.com"},{"name":"mapbox-npm-02","email":"accounts+npmjs-02@mapbox.com"},{"name":"mapbox-npm-03","email":"accounts+npmjs-03@mapbox.com"},{"name":"mapbox-npm-04","email":"accounts+npmjs-04@mapbox.com"},{"name":"mapbox-npm-05","email":"accounts+npmjs-05@mapbox.com"},{"name":"mapbox-npm-06","email":"accounts+npmjs-06@mapbox.com"},{"name":"mapbox-npm-07","email":"accounts+npmjs-07@mapbox.com"},{"name":"mapbox-npm-08","email":"accounts+npmjs-08@mapbox.com"},{"name":"mapbox-npm-09","email":"accounts+npmjs-09@mapbox.com"},{"name":"mapbox-npm-advanced-actions","email":"accounts+npmjs-advanced-actions@mapbox.com"},{"name":"mapbox-npm-ci","email":"accounts+npmjs-npm-ci@mapbox.com"}],"_npmUser":{"name":"mapbox-npm","email":"accounts+npmjs@mapbox.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/martini_0.2.0_1580506242597_0.6275119906825504"},"_hasShrinkwrap":false}},"time":{"created":"2019-08-19T16:11:54.275Z","0.1.0":"2019-08-19T16:11:54.527Z","modified":"2023-01-12T12:36:07.927Z","0.2.0":"2020-01-31T21:30:42.729Z"},"maintainers":[{"email":"yannick.meeus+npm+production+ci@mapbox.com","name":"mbx-npm-ci-production"},{"email":"yannick.meeus+npm+staging+ci@mapbox.com","name":"mbx-npm-ci-staging"},{"email":"yannick.meeus+npm+prod+advanced+actions@mapbox.com","name":"mbx-npm-advanced-actions-production"},{"email":"yannick.meeus+npm+staging+advanced+actions@mapbox.com","name":"mbx-npm-advanced-actions-staging"},{"email":"yannick.meeus+npm+prod+09@mapbox.com","name":"mbx-npm-09-production"},{"email":"yannick.meeus+npm+prod+08@mapbox.com","name":"mbx-npm-08-production"},{"email":"yannick.meeus+npm+prod+07@mapbox.com","name":"mbx-npm-07-production"},{"email":"yannick.meeus+npm+prod+06@mapbox.com","name":"mbx-npm-06-production"},{"email":"yannick.meeus+npm+prod+05@mapbox.com","name":"mbx-npm-05-production"},{"email":"yannick.meeus+npm+prod+04@mapbox.com","name":"mbx-npm-04-production"},{"email":"yannick.meeus+npm+prod+03@mapbox.com","name":"mbx-npm-03-production"},{"email":"yannick.meeus+npm+prod+02@mapbox.com","name":"mbx-npm-02-production"},{"email":"yannick.meeus+npm+prod+01@mapbox.com","name":"mbx-npm-01-production"},{"email":"yannick.meeus@mapbox.com","name":"mbx-npm-02-staging"},{"email":"accounts+npmjs-01@mapbox.com","name":"mapbox-npm-01"},{"email":"accounts+npmjs-02@mapbox.com","name":"mapbox-npm-02"},{"email":"accounts+npmjs-07@mapbox.com","name":"mapbox-npm-07"},{"email":"accounts+npmjs-03@mapbox.com","name":"mapbox-npm-03"},{"email":"accounts+npmjs-04@mapbox.com","name":"mapbox-npm-04"},{"email":"accounts+npmjs-09@mapbox.com","name":"mapbox-npm-09"},{"email":"accounts+npmjs-05@mapbox.com","name":"mapbox-npm-05"},{"email":"accounts+npmjs-06@mapbox.com","name":"mapbox-npm-06"},{"email":"accounts+npmjs-08@mapbox.com","name":"mapbox-npm-08"},{"email":"accounts+npmjs-advanced-actions@mapbox.com","name":"mapbox-npm-advanced-actions"},{"email":"accounts+npmjs-npm-ci@mapbox.com","name":"mapbox-npm-ci"},{"email":"accounts+npmjs@mapbox.com","name":"mapbox-npm"},{"email":"accounts@mapbox.com","name":"mapbox-admin"},{"email":"accounts+npm-mapbox-machine-user@mapbox.com","name":"mapbox-machine-user"}],"description":"A JavaScript library for real-time terrain mesh generation","keywords":["terrain","rtin","mesh","3d","webgl"],"author":{"name":"Vladimir Agafonkin"},"license":"ISC","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```\n","readmeFilename":"README.md"}