{
	"name": "@mapbox/martini",
	"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"
			},
			"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,
			"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": "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"
			},
			"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,
			"contributors": []
		}
	},
	"time": {
		"created": "2019-08-19T16:11:54.275Z",
		"0.1.0": "2019-08-19T16:11:54.527Z",
		"modified": "2020-01-31T21:30:45.066Z",
		"0.2.0": "2020-01-31T21:30:42.729Z"
	},
	"users": {},
	"dist-tags": {
		"latest": "0.2.0"
	},
	"_uplinks": {
		"npmjs": {
			"etag": "W/\"9691c2548765ba3289fef120d28c0a75\"",
			"fetched": 1600326187521
		}
	},
	"_distfiles": {
		"martini-0.1.0.tgz": {
			"url": "https://registry.npmjs.org/@mapbox/martini/-/martini-0.1.0.tgz",
			"sha": "1801b9234140e1136f37939157ba647d46f1ea30",
			"registry": "npmjs"
		},
		"martini-0.2.0.tgz": {
			"url": "https://registry.npmjs.org/@mapbox/martini/-/martini-0.2.0.tgz",
			"sha": "1af70211fbe994abf26e37f1388ca69c02cd43b4",
			"registry": "npmjs"
		}
	},
	"_attachments": {
		"martini-0.2.0.tgz": {
			"shasum": "1af70211fbe994abf26e37f1388ca69c02cd43b4"
		}
	},
	"_rev": "2-deba058d24a63afb",
	"_id": "@mapbox/martini",
	"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```"
}