{"id":20767752,"url":"https://github.com/dmnsgn/primitive-geometry","last_synced_at":"2025-04-09T19:18:48.525Z","repository":{"id":57330409,"uuid":"154018539","full_name":"dmnsgn/primitive-geometry","owner":"dmnsgn","description":"Geometries for 3D rendering, including normals, UVs and cell indices (faces). Perfect if you want to supercharge your dependency folder... with 30KB of geometries.","archived":false,"fork":false,"pushed_at":"2024-06-20T10:30:42.000Z","size":49187,"stargazers_count":100,"open_issues_count":4,"forks_count":7,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-04-09T19:18:40.897Z","etag":null,"topics":["box","capsule","circle","cone","cube","cylinder","ellipsoid","geometry","gl","glsl","icosphere","mesh","plane","primitive","quad","simplicial-complex","sphere","stackgl","torus","webgl"],"latest_commit_sha":null,"homepage":"https://dmnsgn.github.io/primitive-geometry/","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/dmnsgn.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null},"funding":{"custom":["https://paypal.me/dmnsgn","https://commerce.coinbase.com/checkout/56cbdf28-e323-48d8-9c98-7019e72c97f3"]}},"created_at":"2018-10-21T14:41:48.000Z","updated_at":"2024-12-27T10:10:05.000Z","dependencies_parsed_at":"2024-06-18T19:49:37.862Z","dependency_job_id":"a14aca0d-1cd9-4a51-b164-8adbc0fd2977","html_url":"https://github.com/dmnsgn/primitive-geometry","commit_stats":{"total_commits":70,"total_committers":3,"mean_commits":"23.333333333333332","dds":0.05714285714285716,"last_synced_commit":"b823fd8895b39a09fc2f117e72dc1f91748a0ccc"},"previous_names":[],"tags_count":17,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dmnsgn%2Fprimitive-geometry","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dmnsgn%2Fprimitive-geometry/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dmnsgn%2Fprimitive-geometry/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dmnsgn%2Fprimitive-geometry/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/dmnsgn","download_url":"https://codeload.github.com/dmnsgn/primitive-geometry/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248094990,"owners_count":21046770,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["box","capsule","circle","cone","cube","cylinder","ellipsoid","geometry","gl","glsl","icosphere","mesh","plane","primitive","quad","simplicial-complex","sphere","stackgl","torus","webgl"],"created_at":"2024-11-17T11:33:15.457Z","updated_at":"2025-04-09T19:18:48.501Z","avatar_url":"https://github.com/dmnsgn.png","language":"JavaScript","funding_links":["https://paypal.me/dmnsgn","https://commerce.coinbase.com/checkout/56cbdf28-e323-48d8-9c98-7019e72c97f3"],"categories":[],"sub_categories":[],"readme":"# primitive-geometry\n\n[![npm version](https://img.shields.io/npm/v/primitive-geometry)](https://www.npmjs.com/package/primitive-geometry)\n[![stability-stable](https://img.shields.io/badge/stability-stable-green.svg)](https://www.npmjs.com/package/primitive-geometry)\n[![npm minzipped size](https://img.shields.io/bundlephobia/minzip/primitive-geometry)](https://bundlephobia.com/package/primitive-geometry)\n[![dependencies](https://img.shields.io/librariesio/release/npm/primitive-geometry)](https://github.com/dmnsgn/primitive-geometry/blob/main/package.json)\n[![types](https://img.shields.io/npm/types/primitive-geometry)](https://github.com/microsoft/TypeScript)\n[![Conventional Commits](https://img.shields.io/badge/Conventional%20Commits-1.0.0-fa6673.svg)](https://conventionalcommits.org)\n[![styled with prettier](https://img.shields.io/badge/styled_with-Prettier-f8bc45.svg?logo=prettier)](https://github.com/prettier/prettier)\n[![linted with eslint](https://img.shields.io/badge/linted_with-ES_Lint-4B32C3.svg?logo=eslint)](https://github.com/eslint/eslint)\n[![license](https://img.shields.io/github/license/dmnsgn/primitive-geometry)](https://github.com/dmnsgn/primitive-geometry/blob/main/LICENSE.md)\n\nGeometries for 3D rendering, including normals, UVs and cell indices (faces). Perfect if you want to supercharge your dependency folder... with 30KB of geometries.\n\n[![paypal](https://img.shields.io/badge/donate-paypal-informational?logo=paypal)](https://paypal.me/dmnsgn)\n[![coinbase](https://img.shields.io/badge/donate-coinbase-informational?logo=coinbase)](https://commerce.coinbase.com/checkout/56cbdf28-e323-48d8-9c98-7019e72c97f3)\n[![twitter](https://img.shields.io/twitter/follow/dmnsgn?style=social)](https://twitter.com/dmnsgn)\n\n![](https://raw.githubusercontent.com/dmnsgn/primitive-geometry/main/screenshot.gif)\n\n## Installation\n\n```bash\nnpm install primitive-geometry\n```\n\n## Features\n\n- Common API: options object in, simplicial complex out\n- Outputs TypedArray (`Float32Array` for geometry data and `Uint8Array|Uint16Array|Uint32Array` for cells)\n- Zero dependency\n- Same parameters naming: radius (or rx/ry/rz), scale (or height/sx/sy/sz), segments (or nx/ny/nz) and a few specific parameters for icosphere/cylinder/cone/torus.\n- Different **Elliptical mappings**: see the [comparison images](examples/elliptical-mapping/elliptical-mapping.md) and the [demo](https://dmnsgn.github.io/primitive-geometry/?id=elliptical-mapping).\n\nSee difference with v1 [here](#License).\n\n## Usage\n\nSee the [example](https://dmnsgn.github.io/primitive-geometry/) and its [source](examples/index.js).\n\n```js\nimport Primitives from \"primitive-geometry\";\n\nconst quadGeometry = Primitives.quad({\n  scale: 0.5,\n});\nconsole.log(quadGeometry);\n// {\n//   positions: Float32Array [x, y, z, x, y, z,  ...],\n//   normals: Float32Array [x, y, z, x, y, z, ...]\n//   uvs: Float32Array [u, v, u, v, ...],\n//   cells: Uint8/16/32/Array [a, b, c, a, b, c, ...],\n// }\nconst planeGeometry = Primitives.plane({\n  sx: 1,\n  sy: 1,\n  nx: 1,\n  ny: 1,\n  direction: \"z\",\n  quads: false,\n});\nconst roundedRectangleGeometry = Primitives.roundedRectangle({\n  sx: 1,\n  sy: 1,\n  nx: 1,\n  ny: 1,\n  radius: 0.25,\n  roundSegments: 8,\n  edgeSegments: 1,\n});\nconst stadiumGeometry = Primitives.stadium({\n  sx: 1,\n  sy: 0.5,\n  nx: 1,\n  ny: 1,\n  roundSegments: 8,\n  edgeSegments: 1,\n});\n\nconst ellipseGeometry = Primitives.ellipse({\n  sx: 1,\n  sy: 0.5,\n  radius: 0.5,\n  segments: 32,\n  innerSegments: 16,\n  theta: Math.PI * 2,\n  thetaOffset: 0,\n  mapping: mappings.elliptical,\n});\nconst disc = Primitives.disc({\n  radius: 0.5,\n  segments: 32,\n  innerSegments: 16,\n  theta: Math.PI * 2,\n  thetaOffset: 0,\n  mapping: mappings.concentric,\n});\nconst superellipse = Primitives.superellipse({\n  sx: 1,\n  sy: 0.5,\n  radius: 0.5,\n  segments: 32,\n  innerSegments: 16,\n  theta: Math.PI * 2,\n  thetaOffset: 0,\n  mapping: mappings.lamé,\n  m: 2,\n  n: 2,\n});\nconst squircle = Primitives.squircle({\n  sx: 1,\n  sy: 1,\n  radius: 0.5,\n  segments: 128,\n  innerSegments: 16,\n  theta: Math.PI * 2,\n  thetaOffset: 0,\n  mapping: mappings.fgSquircular,\n  squareness: 0.95,\n});\nconst annulus = Primitives.annulus({\n  radius: 0.5,\n  segments: 32,\n  innerSegments: 16,\n  theta: Math.PI * 2,\n  thetaOffset: 0,\n  innerRadius: 0.25,\n  mapping: mappings.concentric,\n});\nconst reuleux = Primitives.reuleux({\n  radius: 0.5,\n  segments: 32,\n  innerSegments: 16,\n  theta: Math.PI * 2,\n  thetaOffset: 0,\n  mapping: mappings.concentric,\n  n: 3,\n});\n\nconst cubeGeometry = Primitives.cube({\n  sx: 1,\n  sy: 1,\n  sz: 1,\n  nx: 1,\n  ny: 1,\n  nz: 1,\n});\nconst roundedCubeGeometry = Primitives.roundedCube({\n  sx: 1,\n  sy: 1,\n  sz: 1,\n  nx: 1,\n  ny: 1,\n  nz: 1,\n  radius: 0.25,\n  roundSegments: 8,\n  edgeSegments: 1,\n});\n\nconst sphereGeometry = Primitives.sphere({\n  radius: 0.5,\n  nx: 32,\n  ny: 16,\n  theta: Math.PI,\n  thetaOffset: 0,\n  phi: Math.PI * 2,\n  phiOffset: 0,\n});\nconst icosphereGeometry = Primitives.icosphere({\n  radius: 0.5,\n  subdivisions: 2,\n});\nconst ellipsoidGeometry = Primitives.ellipsoid({\n  radius: 1,\n  nx: 32,\n  ny: 16,\n  rx: 0.5,\n  ry: 0.25,\n  rz: 0.25,\n  theta: Math.PI,\n  thetaOffset: 0,\n  phi: Math.PI * 2,\n  phiOffset: 0,\n});\n\nconst cylinderGeometry = Primitives.cylinder({\n  height: 1,\n  radius: 0.25,\n  nx: 16,\n  ny: 1,\n  radiusApex: 0.25,\n  capSegments: 1,\n  capApex: true,\n  capBase: true,\n  capBaseSegments: 1,\n  phi: Math.PI * 2,\n});\nconst coneGeometry = Primitives.cone({\n  height: 1,\n  radius: 0.25,\n  nx: 16,\n  ny: 1,\n  capSegments: 1,\n  capBase: true,\n  theta: Math.PI * 2,\n});\nconst capsuleGeometry = Primitives.capsule({\n  height: 0.5,\n  radius: 0.25,\n  nx: 16,\n  ny: 1,\n  roundSegments: 16,\n  theta: Math.PI * 2,\n});\nconst torusGeometry = Primitives.torus({\n  radius: 0.4,\n  segments: 64,\n  minorRadius: 0.1,\n  minorSegments: 32,\n  theta: Math.PI * 2,\n  thetaOffset: 0,\n  phi: Math.PI * 2,\n  phiOffset: 0,\n});\n\nconst tetrahedron = Primitives.tetrahedron({\n  radius: 0.5,\n});\nconst icosahedron = Primitives.icosahedron({\n  radius: 0.5,\n});\n\n// without normals/uvs\nconst boxGeometry = Primitives.box({\n  sx: 1,\n  sy: 1,\n  sz: 1,\n});\nconst circleGeometry = Primitives.circle({\n  radius: 0.5,\n  segments: 32,\n  closed: false,\n  theta: Math.PI * 2,\n  thetaOffset: 0,\n});\n```\n\n## API\n\n\u003c!-- api-start --\u003e\n\n## Modules\n\n\u003cdl\u003e\n\u003cdt\u003e\u003ca href=\"#module_index\"\u003eindex\u003c/a\u003e\u003c/dt\u003e\n\u003cdd\u003e\u003cp\u003eRe-export all geometries, UV mappings functions and utils.\u003c/p\u003e\n\u003c/dd\u003e\n\u003cdt\u003e\u003ca href=\"#module_annulus\"\u003eannulus\u003c/a\u003e\u003c/dt\u003e\n\u003cdd\u003e\u003c/dd\u003e\n\u003cdt\u003e\u003ca href=\"#module_box\"\u003ebox\u003c/a\u003e\u003c/dt\u003e\n\u003cdd\u003e\u003c/dd\u003e\n\u003cdt\u003e\u003ca href=\"#module_capsule\"\u003ecapsule\u003c/a\u003e\u003c/dt\u003e\n\u003cdd\u003e\u003c/dd\u003e\n\u003cdt\u003e\u003ca href=\"#module_circle\"\u003ecircle\u003c/a\u003e\u003c/dt\u003e\n\u003cdd\u003e\u003c/dd\u003e\n\u003cdt\u003e\u003ca href=\"#module_cone\"\u003econe\u003c/a\u003e\u003c/dt\u003e\n\u003cdd\u003e\u003c/dd\u003e\n\u003cdt\u003e\u003ca href=\"#module_cube\"\u003ecube\u003c/a\u003e\u003c/dt\u003e\n\u003cdd\u003e\u003c/dd\u003e\n\u003cdt\u003e\u003ca href=\"#module_cylinder\"\u003ecylinder\u003c/a\u003e\u003c/dt\u003e\n\u003cdd\u003e\u003c/dd\u003e\n\u003cdt\u003e\u003ca href=\"#module_disc\"\u003edisc\u003c/a\u003e\u003c/dt\u003e\n\u003cdd\u003e\u003c/dd\u003e\n\u003cdt\u003e\u003ca href=\"#module_ellipse\"\u003eellipse\u003c/a\u003e\u003c/dt\u003e\n\u003cdd\u003e\u003c/dd\u003e\n\u003cdt\u003e\u003ca href=\"#module_ellipsoid\"\u003eellipsoid\u003c/a\u003e\u003c/dt\u003e\n\u003cdd\u003e\u003c/dd\u003e\n\u003cdt\u003e\u003ca href=\"#module_icosahedron\"\u003eicosahedron\u003c/a\u003e\u003c/dt\u003e\n\u003cdd\u003e\u003c/dd\u003e\n\u003cdt\u003e\u003ca href=\"#module_icosphere\"\u003eicosphere\u003c/a\u003e\u003c/dt\u003e\n\u003cdd\u003e\u003c/dd\u003e\n\u003cdt\u003e\u003ca href=\"#module_mappings\"\u003emappings\u003c/a\u003e\u003c/dt\u003e\n\u003cdd\u003e\u003c/dd\u003e\n\u003cdt\u003e\u003ca href=\"#module_plane\"\u003eplane\u003c/a\u003e\u003c/dt\u003e\n\u003cdd\u003e\u003c/dd\u003e\n\u003cdt\u003e\u003ca href=\"#module_quad\"\u003equad\u003c/a\u003e\u003c/dt\u003e\n\u003cdd\u003e\u003c/dd\u003e\n\u003cdt\u003e\u003ca href=\"#module_reuleux\"\u003ereuleux\u003c/a\u003e\u003c/dt\u003e\n\u003cdd\u003e\u003c/dd\u003e\n\u003cdt\u003e\u003ca href=\"#module_roundedCube\"\u003eroundedCube\u003c/a\u003e\u003c/dt\u003e\n\u003cdd\u003e\u003c/dd\u003e\n\u003cdt\u003e\u003ca href=\"#module_roundedRectangle\"\u003eroundedRectangle\u003c/a\u003e\u003c/dt\u003e\n\u003cdd\u003e\u003c/dd\u003e\n\u003cdt\u003e\u003ca href=\"#module_sphere\"\u003esphere\u003c/a\u003e\u003c/dt\u003e\n\u003cdd\u003e\u003c/dd\u003e\n\u003cdt\u003e\u003ca href=\"#module_squircle\"\u003esquircle\u003c/a\u003e\u003c/dt\u003e\n\u003cdd\u003e\u003c/dd\u003e\n\u003cdt\u003e\u003ca href=\"#module_stadium\"\u003estadium\u003c/a\u003e\u003c/dt\u003e\n\u003cdd\u003e\u003c/dd\u003e\n\u003cdt\u003e\u003ca href=\"#module_superellipse\"\u003esuperellipse\u003c/a\u003e\u003c/dt\u003e\n\u003cdd\u003e\u003c/dd\u003e\n\u003cdt\u003e\u003ca href=\"#module_tetrahedron\"\u003etetrahedron\u003c/a\u003e\u003c/dt\u003e\n\u003cdd\u003e\u003c/dd\u003e\n\u003cdt\u003e\u003ca href=\"#module_torus\"\u003etorus\u003c/a\u003e\u003c/dt\u003e\n\u003cdd\u003e\u003c/dd\u003e\n\u003cdt\u003e\u003ca href=\"#module_utils\"\u003eutils\u003c/a\u003e\u003c/dt\u003e\n\u003cdd\u003e\u003c/dd\u003e\n\u003c/dl\u003e\n\n## Typedefs\n\n\u003cdl\u003e\n\u003cdt\u003e\u003ca href=\"#BasicSimplicialComplex\"\u003eBasicSimplicialComplex\u003c/a\u003e : \u003ccode\u003eobject\u003c/code\u003e\u003c/dt\u003e\n\u003cdd\u003e\u003cp\u003eGeometry definition without normals and UVs.\u003c/p\u003e\n\u003c/dd\u003e\n\u003cdt\u003e\u003ca href=\"#SimplicialComplex\"\u003eSimplicialComplex\u003c/a\u003e : \u003ccode\u003eobject\u003c/code\u003e\u003c/dt\u003e\n\u003cdd\u003e\u003cp\u003eGeometry definition.\u003c/p\u003e\n\u003c/dd\u003e\n\u003c/dl\u003e\n\n\u003ca name=\"module_index\"\u003e\u003c/a\u003e\n\n## index\n\nRe-export all geometries, UV mappings functions and utils.\n\n\u003ca name=\"module_annulus\"\u003e\u003c/a\u003e\n\n## annulus\n\n- [annulus](#module_annulus)\n  - [annulus([options])](#exp_module_annulus--annulus) ⇒ [\u003ccode\u003eSimplicialComplex\u003c/code\u003e](#SimplicialComplex) ⏏\n    - [~AnnulusOptions](#module_annulus--annulus..AnnulusOptions) : \u003ccode\u003eobject\u003c/code\u003e\n\n\u003ca name=\"exp_module_annulus--annulus\"\u003e\u003c/a\u003e\n\n### annulus([options]) ⇒ [\u003ccode\u003eSimplicialComplex\u003c/code\u003e](#SimplicialComplex) ⏏\n\n**Kind**: Exported function\n\n| Param     | Type                                                                    | Default         |\n| --------- | ----------------------------------------------------------------------- | --------------- |\n| [options] | [\u003ccode\u003eAnnulusOptions\u003c/code\u003e](#module_annulus--annulus..AnnulusOptions) | \u003ccode\u003e{}\u003c/code\u003e |\n\n\u003ca name=\"module_annulus--annulus..AnnulusOptions\"\u003e\u003c/a\u003e\n\n#### annulus~AnnulusOptions : \u003ccode\u003eobject\u003c/code\u003e\n\n**Kind**: inner typedef of [\u003ccode\u003eannulus\u003c/code\u003e](#exp_module_annulus--annulus)\n**Properties**\n\n| Name            | Type                  | Default                          |\n| --------------- | --------------------- | -------------------------------- |\n| [radius]        | \u003ccode\u003enumber\u003c/code\u003e   | \u003ccode\u003e0.5\u003c/code\u003e                 |\n| [segments]      | \u003ccode\u003enumber\u003c/code\u003e   | \u003ccode\u003e32\u003c/code\u003e                  |\n| [innerSegments] | \u003ccode\u003enumber\u003c/code\u003e   | \u003ccode\u003e16\u003c/code\u003e                  |\n| [theta]         | \u003ccode\u003enumber\u003c/code\u003e   | \u003ccode\u003eTAU\u003c/code\u003e                 |\n| [thetaOffset]   | \u003ccode\u003enumber\u003c/code\u003e   | \u003ccode\u003e0\u003c/code\u003e                   |\n| [innerRadius]   | \u003ccode\u003enumber\u003c/code\u003e   | \u003ccode\u003eradius \\* 0.5\u003c/code\u003e       |\n| [mapping]       | \u003ccode\u003efunction\u003c/code\u003e | \u003ccode\u003emappings.concentric\u003c/code\u003e |\n\n\u003ca name=\"module_box\"\u003e\u003c/a\u003e\n\n## box\n\n- [box](#module_box)\n  - [box([options])](#exp_module_box--box) ⇒ [\u003ccode\u003eBasicSimplicialComplex\u003c/code\u003e](#BasicSimplicialComplex) ⏏\n    - [~BoxOptions](#module_box--box..BoxOptions) : \u003ccode\u003eobject\u003c/code\u003e\n\n\u003ca name=\"exp_module_box--box\"\u003e\u003c/a\u003e\n\n### box([options]) ⇒ [\u003ccode\u003eBasicSimplicialComplex\u003c/code\u003e](#BasicSimplicialComplex) ⏏\n\n**Kind**: Exported function\n\n| Param     | Type                                                    | Default         |\n| --------- | ------------------------------------------------------- | --------------- |\n| [options] | [\u003ccode\u003eBoxOptions\u003c/code\u003e](#module_box--box..BoxOptions) | \u003ccode\u003e{}\u003c/code\u003e |\n\n\u003ca name=\"module_box--box..BoxOptions\"\u003e\u003c/a\u003e\n\n#### box~BoxOptions : \u003ccode\u003eobject\u003c/code\u003e\n\n**Kind**: inner typedef of [\u003ccode\u003ebox\u003c/code\u003e](#exp_module_box--box)\n**Properties**\n\n| Name | Type                | Default         |\n| ---- | ------------------- | --------------- |\n| [sx] | \u003ccode\u003enumber\u003c/code\u003e | \u003ccode\u003e1\u003c/code\u003e  |\n| [sy] | \u003ccode\u003enumber\u003c/code\u003e | \u003ccode\u003esx\u003c/code\u003e |\n| [sz] | \u003ccode\u003enumber\u003c/code\u003e | \u003ccode\u003esx\u003c/code\u003e |\n\n\u003ca name=\"module_capsule\"\u003e\u003c/a\u003e\n\n## capsule\n\n- [capsule](#module_capsule)\n  - [capsule([options])](#exp_module_capsule--capsule) ⇒ [\u003ccode\u003eSimplicialComplex\u003c/code\u003e](#SimplicialComplex) ⏏\n    - [~CapsuleOptions](#module_capsule--capsule..CapsuleOptions) : \u003ccode\u003eobject\u003c/code\u003e\n\n\u003ca name=\"exp_module_capsule--capsule\"\u003e\u003c/a\u003e\n\n### capsule([options]) ⇒ [\u003ccode\u003eSimplicialComplex\u003c/code\u003e](#SimplicialComplex) ⏏\n\n**Kind**: Exported function\n\n| Param     | Type                                                                    | Default         |\n| --------- | ----------------------------------------------------------------------- | --------------- |\n| [options] | [\u003ccode\u003eCapsuleOptions\u003c/code\u003e](#module_capsule--capsule..CapsuleOptions) | \u003ccode\u003e{}\u003c/code\u003e |\n\n\u003ca name=\"module_capsule--capsule..CapsuleOptions\"\u003e\u003c/a\u003e\n\n#### capsule~CapsuleOptions : \u003ccode\u003eobject\u003c/code\u003e\n\n**Kind**: inner typedef of [\u003ccode\u003ecapsule\u003c/code\u003e](#exp_module_capsule--capsule)\n**Properties**\n\n| Name            | Type                | Default           |\n| --------------- | ------------------- | ----------------- |\n| [height]        | \u003ccode\u003enumber\u003c/code\u003e | \u003ccode\u003e0.5\u003c/code\u003e  |\n| [radius]        | \u003ccode\u003enumber\u003c/code\u003e | \u003ccode\u003e0.25\u003c/code\u003e |\n| [nx]            | \u003ccode\u003enumber\u003c/code\u003e | \u003ccode\u003e16\u003c/code\u003e   |\n| [ny]            | \u003ccode\u003enumber\u003c/code\u003e | \u003ccode\u003e1\u003c/code\u003e    |\n| [roundSegments] | \u003ccode\u003enumber\u003c/code\u003e | \u003ccode\u003e32\u003c/code\u003e   |\n| [phi]           | \u003ccode\u003enumber\u003c/code\u003e | \u003ccode\u003eTAU\u003c/code\u003e  |\n\n\u003ca name=\"module_circle\"\u003e\u003c/a\u003e\n\n## circle\n\n- [circle](#module_circle)\n  - [circle([options])](#exp_module_circle--circle) ⇒ [\u003ccode\u003eBasicSimplicialComplex\u003c/code\u003e](#BasicSimplicialComplex) ⏏\n    - [~CircleOptions](#module_circle--circle..CircleOptions) : \u003ccode\u003eobject\u003c/code\u003e\n\n\u003ca name=\"exp_module_circle--circle\"\u003e\u003c/a\u003e\n\n### circle([options]) ⇒ [\u003ccode\u003eBasicSimplicialComplex\u003c/code\u003e](#BasicSimplicialComplex) ⏏\n\n**Kind**: Exported function\n\n| Param     | Type                                                                | Default         |\n| --------- | ------------------------------------------------------------------- | --------------- |\n| [options] | [\u003ccode\u003eCircleOptions\u003c/code\u003e](#module_circle--circle..CircleOptions) | \u003ccode\u003e{}\u003c/code\u003e |\n\n\u003ca name=\"module_circle--circle..CircleOptions\"\u003e\u003c/a\u003e\n\n#### circle~CircleOptions : \u003ccode\u003eobject\u003c/code\u003e\n\n**Kind**: inner typedef of [\u003ccode\u003ecircle\u003c/code\u003e](#exp_module_circle--circle)\n**Properties**\n\n| Name          | Type                 | Default            |\n| ------------- | -------------------- | ------------------ |\n| [radius]      | \u003ccode\u003enumber\u003c/code\u003e  | \u003ccode\u003e0.5\u003c/code\u003e   |\n| [segments]    | \u003ccode\u003enumber\u003c/code\u003e  | \u003ccode\u003e32\u003c/code\u003e    |\n| [theta]       | \u003ccode\u003enumber\u003c/code\u003e  | \u003ccode\u003eTAU\u003c/code\u003e   |\n| [thetaOffset] | \u003ccode\u003enumber\u003c/code\u003e  | \u003ccode\u003e0\u003c/code\u003e     |\n| [closed]      | \u003ccode\u003eboolean\u003c/code\u003e | \u003ccode\u003efalse\u003c/code\u003e |\n\n\u003ca name=\"module_cone\"\u003e\u003c/a\u003e\n\n## cone\n\n- [cone](#module_cone)\n  - [cone([options])](#exp_module_cone--cone) ⇒ [\u003ccode\u003eSimplicialComplex\u003c/code\u003e](#SimplicialComplex) ⏏\n    - [~ConeOptions](#module_cone--cone..ConeOptions) : \u003ccode\u003eobject\u003c/code\u003e\n\n\u003ca name=\"exp_module_cone--cone\"\u003e\u003c/a\u003e\n\n### cone([options]) ⇒ [\u003ccode\u003eSimplicialComplex\u003c/code\u003e](#SimplicialComplex) ⏏\n\n**Kind**: Exported function\n\n| Param     | Type                                                        | Default         |\n| --------- | ----------------------------------------------------------- | --------------- |\n| [options] | [\u003ccode\u003eConeOptions\u003c/code\u003e](#module_cone--cone..ConeOptions) | \u003ccode\u003e{}\u003c/code\u003e |\n\n\u003ca name=\"module_cone--cone..ConeOptions\"\u003e\u003c/a\u003e\n\n#### cone~ConeOptions : \u003ccode\u003eobject\u003c/code\u003e\n\n**Kind**: inner typedef of [\u003ccode\u003econe\u003c/code\u003e](#exp_module_cone--cone)\n**Properties**\n\n| Name          | Type                 | Default           |\n| ------------- | -------------------- | ----------------- |\n| [height]      | \u003ccode\u003enumber\u003c/code\u003e  | \u003ccode\u003e1\u003c/code\u003e    |\n| [radius]      | \u003ccode\u003enumber\u003c/code\u003e  | \u003ccode\u003e0.25\u003c/code\u003e |\n| [nx]          | \u003ccode\u003enumber\u003c/code\u003e  | \u003ccode\u003e16\u003c/code\u003e   |\n| [ny]          | \u003ccode\u003enumber\u003c/code\u003e  | \u003ccode\u003e1\u003c/code\u003e    |\n| [capSegments] | \u003ccode\u003enumber\u003c/code\u003e  | \u003ccode\u003e1\u003c/code\u003e    |\n| [capBase]     | \u003ccode\u003eboolean\u003c/code\u003e | \u003ccode\u003etrue\u003c/code\u003e |\n| [phi]         | \u003ccode\u003enumber\u003c/code\u003e  | \u003ccode\u003eTAU\u003c/code\u003e  |\n\n\u003ca name=\"module_cube\"\u003e\u003c/a\u003e\n\n## cube\n\n- [cube](#module_cube)\n  - [cube([options])](#exp_module_cube--cube) ⇒ [\u003ccode\u003eSimplicialComplex\u003c/code\u003e](#SimplicialComplex) ⏏\n    - [~CubeOptions](#module_cube--cube..CubeOptions) : \u003ccode\u003eobject\u003c/code\u003e\n\n\u003ca name=\"exp_module_cube--cube\"\u003e\u003c/a\u003e\n\n### cube([options]) ⇒ [\u003ccode\u003eSimplicialComplex\u003c/code\u003e](#SimplicialComplex) ⏏\n\n**Kind**: Exported function\n\n| Param     | Type                                                        | Default         |\n| --------- | ----------------------------------------------------------- | --------------- |\n| [options] | [\u003ccode\u003eCubeOptions\u003c/code\u003e](#module_cube--cube..CubeOptions) | \u003ccode\u003e{}\u003c/code\u003e |\n\n\u003ca name=\"module_cube--cube..CubeOptions\"\u003e\u003c/a\u003e\n\n#### cube~CubeOptions : \u003ccode\u003eobject\u003c/code\u003e\n\n**Kind**: inner typedef of [\u003ccode\u003ecube\u003c/code\u003e](#exp_module_cube--cube)\n**Properties**\n\n| Name | Type                | Default         |\n| ---- | ------------------- | --------------- |\n| [sx] | \u003ccode\u003enumber\u003c/code\u003e | \u003ccode\u003e1\u003c/code\u003e  |\n| [sy] | \u003ccode\u003enumber\u003c/code\u003e | \u003ccode\u003esx\u003c/code\u003e |\n| [sz] | \u003ccode\u003enumber\u003c/code\u003e | \u003ccode\u003esx\u003c/code\u003e |\n| [nx] | \u003ccode\u003enumber\u003c/code\u003e | \u003ccode\u003e1\u003c/code\u003e  |\n| [ny] | \u003ccode\u003enumber\u003c/code\u003e | \u003ccode\u003enx\u003c/code\u003e |\n| [nz] | \u003ccode\u003enumber\u003c/code\u003e | \u003ccode\u003enx\u003c/code\u003e |\n\n\u003ca name=\"module_cylinder\"\u003e\u003c/a\u003e\n\n## cylinder\n\n- [cylinder](#module_cylinder)\n  - [cylinder([options])](#exp_module_cylinder--cylinder) ⇒ [\u003ccode\u003eSimplicialComplex\u003c/code\u003e](#SimplicialComplex) ⏏\n    - [~CylinderOptions](#module_cylinder--cylinder..CylinderOptions) : \u003ccode\u003eobject\u003c/code\u003e\n\n\u003ca name=\"exp_module_cylinder--cylinder\"\u003e\u003c/a\u003e\n\n### cylinder([options]) ⇒ [\u003ccode\u003eSimplicialComplex\u003c/code\u003e](#SimplicialComplex) ⏏\n\n**Kind**: Exported function\n\n| Param     | Type                                                                        | Default         |\n| --------- | --------------------------------------------------------------------------- | --------------- |\n| [options] | [\u003ccode\u003eCylinderOptions\u003c/code\u003e](#module_cylinder--cylinder..CylinderOptions) | \u003ccode\u003e{}\u003c/code\u003e |\n\n\u003ca name=\"module_cylinder--cylinder..CylinderOptions\"\u003e\u003c/a\u003e\n\n#### cylinder~CylinderOptions : \u003ccode\u003eobject\u003c/code\u003e\n\n**Kind**: inner typedef of [\u003ccode\u003ecylinder\u003c/code\u003e](#exp_module_cylinder--cylinder)\n**Properties**\n\n| Name          | Type                 | Default             |\n| ------------- | -------------------- | ------------------- |\n| [height]      | \u003ccode\u003enumber\u003c/code\u003e  | \u003ccode\u003e1\u003c/code\u003e      |\n| [radius]      | \u003ccode\u003enumber\u003c/code\u003e  | \u003ccode\u003e0.25\u003c/code\u003e   |\n| [nx]          | \u003ccode\u003enumber\u003c/code\u003e  | \u003ccode\u003e16\u003c/code\u003e     |\n| [ny]          | \u003ccode\u003enumber\u003c/code\u003e  | \u003ccode\u003e1\u003c/code\u003e      |\n| [radiusApex]  | \u003ccode\u003enumber\u003c/code\u003e  | \u003ccode\u003eradius\u003c/code\u003e |\n| [capSegments] | \u003ccode\u003enumber\u003c/code\u003e  | \u003ccode\u003e1\u003c/code\u003e      |\n| [capApex]     | \u003ccode\u003eboolean\u003c/code\u003e | \u003ccode\u003etrue\u003c/code\u003e   |\n| [capBase]     | \u003ccode\u003eboolean\u003c/code\u003e | \u003ccode\u003etrue\u003c/code\u003e   |\n| [phi]         | \u003ccode\u003enumber\u003c/code\u003e  | \u003ccode\u003eTAU\u003c/code\u003e    |\n\n\u003ca name=\"module_disc\"\u003e\u003c/a\u003e\n\n## disc\n\n- [disc](#module_disc)\n  - [disc([options])](#exp_module_disc--disc) ⇒ [\u003ccode\u003eSimplicialComplex\u003c/code\u003e](#SimplicialComplex) ⏏\n    - [~DiscOptions](#module_disc--disc..DiscOptions) : \u003ccode\u003eobject\u003c/code\u003e\n\n\u003ca name=\"exp_module_disc--disc\"\u003e\u003c/a\u003e\n\n### disc([options]) ⇒ [\u003ccode\u003eSimplicialComplex\u003c/code\u003e](#SimplicialComplex) ⏏\n\n**Kind**: Exported function\n\n| Param     | Type                                                        | Default         |\n| --------- | ----------------------------------------------------------- | --------------- |\n| [options] | [\u003ccode\u003eDiscOptions\u003c/code\u003e](#module_disc--disc..DiscOptions) | \u003ccode\u003e{}\u003c/code\u003e |\n\n\u003ca name=\"module_disc--disc..DiscOptions\"\u003e\u003c/a\u003e\n\n#### disc~DiscOptions : \u003ccode\u003eobject\u003c/code\u003e\n\n**Kind**: inner typedef of [\u003ccode\u003edisc\u003c/code\u003e](#exp_module_disc--disc)\n**Properties**\n\n| Name            | Type                  | Default                          |\n| --------------- | --------------------- | -------------------------------- |\n| [radius]        | \u003ccode\u003enumber\u003c/code\u003e   | \u003ccode\u003e0.5\u003c/code\u003e                 |\n| [segments]      | \u003ccode\u003enumber\u003c/code\u003e   | \u003ccode\u003e32\u003c/code\u003e                  |\n| [innerSegments] | \u003ccode\u003enumber\u003c/code\u003e   | \u003ccode\u003e16\u003c/code\u003e                  |\n| [theta]         | \u003ccode\u003enumber\u003c/code\u003e   | \u003ccode\u003eTAU\u003c/code\u003e                 |\n| [thetaOffset]   | \u003ccode\u003enumber\u003c/code\u003e   | \u003ccode\u003e0\u003c/code\u003e                   |\n| [mapping]       | \u003ccode\u003efunction\u003c/code\u003e | \u003ccode\u003emappings.concentric\u003c/code\u003e |\n\n\u003ca name=\"module_ellipse\"\u003e\u003c/a\u003e\n\n## ellipse\n\n- [ellipse](#module_ellipse)\n  - [ellipse([options])](#exp_module_ellipse--ellipse) ⇒ [\u003ccode\u003eSimplicialComplex\u003c/code\u003e](#SimplicialComplex) ⏏\n    - [~EllipseOptions](#module_ellipse--ellipse..EllipseOptions) : \u003ccode\u003eobject\u003c/code\u003e\n\n\u003ca name=\"exp_module_ellipse--ellipse\"\u003e\u003c/a\u003e\n\n### ellipse([options]) ⇒ [\u003ccode\u003eSimplicialComplex\u003c/code\u003e](#SimplicialComplex) ⏏\n\n**Kind**: Exported function\n\n| Param     | Type                                                                    | Default         |\n| --------- | ----------------------------------------------------------------------- | --------------- |\n| [options] | [\u003ccode\u003eEllipseOptions\u003c/code\u003e](#module_ellipse--ellipse..EllipseOptions) | \u003ccode\u003e{}\u003c/code\u003e |\n\n\u003ca name=\"module_ellipse--ellipse..EllipseOptions\"\u003e\u003c/a\u003e\n\n#### ellipse~EllipseOptions : \u003ccode\u003eobject\u003c/code\u003e\n\n**Kind**: inner typedef of [\u003ccode\u003eellipse\u003c/code\u003e](#exp_module_ellipse--ellipse)\n**Properties**\n\n| Name            | Type                  | Default                          |\n| --------------- | --------------------- | -------------------------------- |\n| [sx]            | \u003ccode\u003enumber\u003c/code\u003e   | \u003ccode\u003e1\u003c/code\u003e                   |\n| [sy]            | \u003ccode\u003enumber\u003c/code\u003e   | \u003ccode\u003e0.5\u003c/code\u003e                 |\n| [radius]        | \u003ccode\u003enumber\u003c/code\u003e   | \u003ccode\u003e0.5\u003c/code\u003e                 |\n| [segments]      | \u003ccode\u003enumber\u003c/code\u003e   | \u003ccode\u003e32\u003c/code\u003e                  |\n| [innerSegments] | \u003ccode\u003enumber\u003c/code\u003e   | \u003ccode\u003e16\u003c/code\u003e                  |\n| [theta]         | \u003ccode\u003enumber\u003c/code\u003e   | \u003ccode\u003eTAU\u003c/code\u003e                 |\n| [thetaOffset]   | \u003ccode\u003enumber\u003c/code\u003e   | \u003ccode\u003e0\u003c/code\u003e                   |\n| [mapping]       | \u003ccode\u003efunction\u003c/code\u003e | \u003ccode\u003emappings.elliptical\u003c/code\u003e |\n\n\u003ca name=\"module_ellipsoid\"\u003e\u003c/a\u003e\n\n## ellipsoid\n\n- [ellipsoid](#module_ellipsoid)\n  - [ellipsoid([options])](#exp_module_ellipsoid--ellipsoid) ⇒ [\u003ccode\u003eSimplicialComplex\u003c/code\u003e](#SimplicialComplex) ⏏\n    - [~EllipsoidOptions](#module_ellipsoid--ellipsoid..EllipsoidOptions) : \u003ccode\u003eobject\u003c/code\u003e\n\n\u003ca name=\"exp_module_ellipsoid--ellipsoid\"\u003e\u003c/a\u003e\n\n### ellipsoid([options]) ⇒ [\u003ccode\u003eSimplicialComplex\u003c/code\u003e](#SimplicialComplex) ⏏\n\nDefault to an oblate spheroid.\n\n**Kind**: Exported function\n\n| Param     | Type                                                                            | Default         |\n| --------- | ------------------------------------------------------------------------------- | --------------- |\n| [options] | [\u003ccode\u003eEllipsoidOptions\u003c/code\u003e](#module_ellipsoid--ellipsoid..EllipsoidOptions) | \u003ccode\u003e{}\u003c/code\u003e |\n\n\u003ca name=\"module_ellipsoid--ellipsoid..EllipsoidOptions\"\u003e\u003c/a\u003e\n\n#### ellipsoid~EllipsoidOptions : \u003ccode\u003eobject\u003c/code\u003e\n\n**Kind**: inner typedef of [\u003ccode\u003eellipsoid\u003c/code\u003e](#exp_module_ellipsoid--ellipsoid)\n**Properties**\n\n| Name          | Type                | Default              |\n| ------------- | ------------------- | -------------------- |\n| [radius]      | \u003ccode\u003enumber\u003c/code\u003e | \u003ccode\u003e0.5\u003c/code\u003e     |\n| [nx]          | \u003ccode\u003enumber\u003c/code\u003e | \u003ccode\u003e32\u003c/code\u003e      |\n| [ny]          | \u003ccode\u003enumber\u003c/code\u003e | \u003ccode\u003e16\u003c/code\u003e      |\n| [rx]          | \u003ccode\u003enumber\u003c/code\u003e | \u003ccode\u003e1\u003c/code\u003e       |\n| [ry]          | \u003ccode\u003enumber\u003c/code\u003e | \u003ccode\u003e0.5\u003c/code\u003e     |\n| [rz]          | \u003ccode\u003enumber\u003c/code\u003e | \u003ccode\u003ery\u003c/code\u003e      |\n| [theta]       | \u003ccode\u003enumber\u003c/code\u003e | \u003ccode\u003eMath.PI\u003c/code\u003e |\n| [thetaOffset] | \u003ccode\u003enumber\u003c/code\u003e | \u003ccode\u003e0\u003c/code\u003e       |\n| [phi]         | \u003ccode\u003enumber\u003c/code\u003e | \u003ccode\u003eTAU\u003c/code\u003e     |\n| [phiOffset]   | \u003ccode\u003enumber\u003c/code\u003e | \u003ccode\u003e0\u003c/code\u003e       |\n\n\u003ca name=\"module_icosahedron\"\u003e\u003c/a\u003e\n\n## icosahedron\n\n- [icosahedron](#module_icosahedron)\n  - [icosahedron([options])](#exp_module_icosahedron--icosahedron) ⇒ [\u003ccode\u003eSimplicialComplex\u003c/code\u003e](#SimplicialComplex) ⏏\n    - [~IcosahedronOptions](#module_icosahedron--icosahedron..IcosahedronOptions) : \u003ccode\u003eobject\u003c/code\u003e\n\n\u003ca name=\"exp_module_icosahedron--icosahedron\"\u003e\u003c/a\u003e\n\n### icosahedron([options]) ⇒ [\u003ccode\u003eSimplicialComplex\u003c/code\u003e](#SimplicialComplex) ⏏\n\n**Kind**: Exported function\n\n| Param     | Type                                                                                    | Default         |\n| --------- | --------------------------------------------------------------------------------------- | --------------- |\n| [options] | [\u003ccode\u003eIcosahedronOptions\u003c/code\u003e](#module_icosahedron--icosahedron..IcosahedronOptions) | \u003ccode\u003e{}\u003c/code\u003e |\n\n\u003ca name=\"module_icosahedron--icosahedron..IcosahedronOptions\"\u003e\u003c/a\u003e\n\n#### icosahedron~IcosahedronOptions : \u003ccode\u003eobject\u003c/code\u003e\n\n**Kind**: inner typedef of [\u003ccode\u003eicosahedron\u003c/code\u003e](#exp_module_icosahedron--icosahedron)\n**Properties**\n\n| Name     | Type                | Default          |\n| -------- | ------------------- | ---------------- |\n| [radius] | \u003ccode\u003enumber\u003c/code\u003e | \u003ccode\u003e0.5\u003c/code\u003e |\n\n\u003ca name=\"module_icosphere\"\u003e\u003c/a\u003e\n\n## icosphere\n\n- [icosphere](#module_icosphere)\n  - [icosphere([options])](#exp_module_icosphere--icosphere) ⇒ [\u003ccode\u003eSimplicialComplex\u003c/code\u003e](#SimplicialComplex) ⏏\n    - [~IcosphereOptions](#module_icosphere--icosphere..IcosphereOptions) : \u003ccode\u003eobject\u003c/code\u003e\n\n\u003ca name=\"exp_module_icosphere--icosphere\"\u003e\u003c/a\u003e\n\n### icosphere([options]) ⇒ [\u003ccode\u003eSimplicialComplex\u003c/code\u003e](#SimplicialComplex) ⏏\n\n**Kind**: Exported function\n\n| Param     | Type                                                                            | Default         |\n| --------- | ------------------------------------------------------------------------------- | --------------- |\n| [options] | [\u003ccode\u003eIcosphereOptions\u003c/code\u003e](#module_icosphere--icosphere..IcosphereOptions) | \u003ccode\u003e{}\u003c/code\u003e |\n\n\u003ca name=\"module_icosphere--icosphere..IcosphereOptions\"\u003e\u003c/a\u003e\n\n#### icosphere~IcosphereOptions : \u003ccode\u003eobject\u003c/code\u003e\n\n**Kind**: inner typedef of [\u003ccode\u003eicosphere\u003c/code\u003e](#exp_module_icosphere--icosphere)\n**Properties**\n\n| Name           | Type                | Default          |\n| -------------- | ------------------- | ---------------- |\n| [radius]       | \u003ccode\u003enumber\u003c/code\u003e | \u003ccode\u003e0.5\u003c/code\u003e |\n| [subdivisions] | \u003ccode\u003enumber\u003c/code\u003e | \u003ccode\u003e2\u003c/code\u003e   |\n\n\u003ca name=\"module_mappings\"\u003e\u003c/a\u003e\n\n## mappings\n\n\u003ca name=\"module_plane\"\u003e\u003c/a\u003e\n\n## plane\n\n- [plane](#module_plane)\n  - [plane([options])](#exp_module_plane--plane) ⇒ [\u003ccode\u003eSimplicialComplex\u003c/code\u003e](#SimplicialComplex) ⏏\n    - [~PlaneOptions](#module_plane--plane..PlaneOptions) : \u003ccode\u003eobject\u003c/code\u003e\n    - [~PlaneDirection](#module_plane--plane..PlaneDirection) : \u003ccode\u003e\u0026quot;x\u0026quot;\u003c/code\u003e \\| \u003ccode\u003e\u0026quot;-x\u0026quot;\u003c/code\u003e \\| \u003ccode\u003e\u0026quot;y\u0026quot;\u003c/code\u003e \\| \u003ccode\u003e\u0026quot;-y\u0026quot;\u003c/code\u003e \\| \u003ccode\u003e\u0026quot;z\u0026quot;\u003c/code\u003e \\| \u003ccode\u003e\u0026quot;-z\u0026quot;\u003c/code\u003e\n\n\u003ca name=\"exp_module_plane--plane\"\u003e\u003c/a\u003e\n\n### plane([options]) ⇒ [\u003ccode\u003eSimplicialComplex\u003c/code\u003e](#SimplicialComplex) ⏏\n\n**Kind**: Exported function\n\n| Param     | Type                                                            | Default         |\n| --------- | --------------------------------------------------------------- | --------------- |\n| [options] | [\u003ccode\u003ePlaneOptions\u003c/code\u003e](#module_plane--plane..PlaneOptions) | \u003ccode\u003e{}\u003c/code\u003e |\n\n\u003ca name=\"module_plane--plane..PlaneOptions\"\u003e\u003c/a\u003e\n\n#### plane~PlaneOptions : \u003ccode\u003eobject\u003c/code\u003e\n\n**Kind**: inner typedef of [\u003ccode\u003eplane\u003c/code\u003e](#exp_module_plane--plane)\n**Properties**\n\n| Name        | Type                                                                | Default                    |\n| ----------- | ------------------------------------------------------------------- | -------------------------- |\n| [sx]        | \u003ccode\u003enumber\u003c/code\u003e                                                 | \u003ccode\u003e1\u003c/code\u003e             |\n| [sy]        | \u003ccode\u003enumber\u003c/code\u003e                                                 | \u003ccode\u003esx\u003c/code\u003e            |\n| [nx]        | \u003ccode\u003enumber\u003c/code\u003e                                                 | \u003ccode\u003e1\u003c/code\u003e             |\n| [ny]        | \u003ccode\u003enumber\u003c/code\u003e                                                 | \u003ccode\u003enx\u003c/code\u003e            |\n| [direction] | [\u003ccode\u003ePlaneDirection\u003c/code\u003e](#module_plane--plane..PlaneDirection) | \u003ccode\u003e\u0026quot;z\u0026quot;\u003c/code\u003e |\n| [quads]     | \u003ccode\u003eboolean\u003c/code\u003e                                                | \u003ccode\u003efalse\u003c/code\u003e         |\n\n\u003ca name=\"module_plane--plane..PlaneDirection\"\u003e\u003c/a\u003e\n\n#### plane~PlaneDirection : \u003ccode\u003e\u0026quot;x\u0026quot;\u003c/code\u003e \\| \u003ccode\u003e\u0026quot;-x\u0026quot;\u003c/code\u003e \\| \u003ccode\u003e\u0026quot;y\u0026quot;\u003c/code\u003e \\| \u003ccode\u003e\u0026quot;-y\u0026quot;\u003c/code\u003e \\| \u003ccode\u003e\u0026quot;z\u0026quot;\u003c/code\u003e \\| \u003ccode\u003e\u0026quot;-z\u0026quot;\u003c/code\u003e\n\n**Kind**: inner typedef of [\u003ccode\u003eplane\u003c/code\u003e](#exp_module_plane--plane)\n\u003ca name=\"module_quad\"\u003e\u003c/a\u003e\n\n## quad\n\n- [quad](#module_quad)\n  - [quad([options])](#exp_module_quad--quad) ⇒ [\u003ccode\u003eSimplicialComplex\u003c/code\u003e](#SimplicialComplex) ⏏\n    - [~QuadOptions](#module_quad--quad..QuadOptions) : \u003ccode\u003eobject\u003c/code\u003e\n\n\u003ca name=\"exp_module_quad--quad\"\u003e\u003c/a\u003e\n\n### quad([options]) ⇒ [\u003ccode\u003eSimplicialComplex\u003c/code\u003e](#SimplicialComplex) ⏏\n\n**Kind**: Exported function\n\n| Param     | Type                                                        | Default         |\n| --------- | ----------------------------------------------------------- | --------------- |\n| [options] | [\u003ccode\u003eQuadOptions\u003c/code\u003e](#module_quad--quad..QuadOptions) | \u003ccode\u003e{}\u003c/code\u003e |\n\n\u003ca name=\"module_quad--quad..QuadOptions\"\u003e\u003c/a\u003e\n\n#### quad~QuadOptions : \u003ccode\u003eobject\u003c/code\u003e\n\n**Kind**: inner typedef of [\u003ccode\u003equad\u003c/code\u003e](#exp_module_quad--quad)\n**Properties**\n\n| Name    | Type                | Default          |\n| ------- | ------------------- | ---------------- |\n| [scale] | \u003ccode\u003enumber\u003c/code\u003e | \u003ccode\u003e0.5\u003c/code\u003e |\n\n\u003ca name=\"module_reuleux\"\u003e\u003c/a\u003e\n\n## reuleux\n\n- [reuleux](#module_reuleux)\n  - [reuleux([options])](#exp_module_reuleux--reuleux) ⇒ [\u003ccode\u003eSimplicialComplex\u003c/code\u003e](#SimplicialComplex) ⏏\n    - [~ReuleuxOptions](#module_reuleux--reuleux..ReuleuxOptions) : \u003ccode\u003eobject\u003c/code\u003e\n\n\u003ca name=\"exp_module_reuleux--reuleux\"\u003e\u003c/a\u003e\n\n### reuleux([options]) ⇒ [\u003ccode\u003eSimplicialComplex\u003c/code\u003e](#SimplicialComplex) ⏏\n\n**Kind**: Exported function\n**See**: [Parametric equations for regular and Reuleaux polygons](https://tpfto.wordpress.com/2011/09/15/parametric-equations-for-regular-and-reuleaux-polygons/)\n\n| Param     | Type                                                                    | Default         |\n| --------- | ----------------------------------------------------------------------- | --------------- |\n| [options] | [\u003ccode\u003eReuleuxOptions\u003c/code\u003e](#module_reuleux--reuleux..ReuleuxOptions) | \u003ccode\u003e{}\u003c/code\u003e |\n\n\u003ca name=\"module_reuleux--reuleux..ReuleuxOptions\"\u003e\u003c/a\u003e\n\n#### reuleux~ReuleuxOptions : \u003ccode\u003eobject\u003c/code\u003e\n\n**Kind**: inner typedef of [\u003ccode\u003ereuleux\u003c/code\u003e](#exp_module_reuleux--reuleux)\n**Properties**\n\n| Name            | Type                  | Default                          |\n| --------------- | --------------------- | -------------------------------- |\n| [radius]        | \u003ccode\u003enumber\u003c/code\u003e   | \u003ccode\u003e0.5\u003c/code\u003e                 |\n| [segments]      | \u003ccode\u003enumber\u003c/code\u003e   | \u003ccode\u003e32\u003c/code\u003e                  |\n| [innerSegments] | \u003ccode\u003enumber\u003c/code\u003e   | \u003ccode\u003e16\u003c/code\u003e                  |\n| [theta]         | \u003ccode\u003enumber\u003c/code\u003e   | \u003ccode\u003eTAU\u003c/code\u003e                 |\n| [thetaOffset]   | \u003ccode\u003enumber\u003c/code\u003e   | \u003ccode\u003e0\u003c/code\u003e                   |\n| [mapping]       | \u003ccode\u003efunction\u003c/code\u003e | \u003ccode\u003emappings.concentric\u003c/code\u003e |\n| [n]             | \u003ccode\u003enumber\u003c/code\u003e   | \u003ccode\u003e3\u003c/code\u003e                   |\n\n\u003ca name=\"module_roundedCube\"\u003e\u003c/a\u003e\n\n## roundedCube\n\n- [roundedCube](#module_roundedCube)\n  - [roundedCube([options])](#exp_module_roundedCube--roundedCube) ⇒ [\u003ccode\u003eSimplicialComplex\u003c/code\u003e](#SimplicialComplex) ⏏\n    - [~RoundedCubeOptions](#module_roundedCube--roundedCube..RoundedCubeOptions) : \u003ccode\u003eobject\u003c/code\u003e\n\n\u003ca name=\"exp_module_roundedCube--roundedCube\"\u003e\u003c/a\u003e\n\n### roundedCube([options]) ⇒ [\u003ccode\u003eSimplicialComplex\u003c/code\u003e](#SimplicialComplex) ⏏\n\n**Kind**: Exported function\n\n| Param     | Type                                                                                    | Default         |\n| --------- | --------------------------------------------------------------------------------------- | --------------- |\n| [options] | [\u003ccode\u003eRoundedCubeOptions\u003c/code\u003e](#module_roundedCube--roundedCube..RoundedCubeOptions) | \u003ccode\u003e{}\u003c/code\u003e |\n\n\u003ca name=\"module_roundedCube--roundedCube..RoundedCubeOptions\"\u003e\u003c/a\u003e\n\n#### roundedCube~RoundedCubeOptions : \u003ccode\u003eobject\u003c/code\u003e\n\n**Kind**: inner typedef of [\u003ccode\u003eroundedCube\u003c/code\u003e](#exp_module_roundedCube--roundedCube)\n**Properties**\n\n| Name            | Type                | Default                 |\n| --------------- | ------------------- | ----------------------- |\n| [sx]            | \u003ccode\u003enumber\u003c/code\u003e | \u003ccode\u003e1\u003c/code\u003e          |\n| [sy]            | \u003ccode\u003enumber\u003c/code\u003e | \u003ccode\u003esx\u003c/code\u003e         |\n| [sz]            | \u003ccode\u003enumber\u003c/code\u003e | \u003ccode\u003esx\u003c/code\u003e         |\n| [nx]            | \u003ccode\u003enumber\u003c/code\u003e | \u003ccode\u003e1\u003c/code\u003e          |\n| [ny]            | \u003ccode\u003enumber\u003c/code\u003e | \u003ccode\u003enx\u003c/code\u003e         |\n| [nz]            | \u003ccode\u003enumber\u003c/code\u003e | \u003ccode\u003enx\u003c/code\u003e         |\n| [radius]        | \u003ccode\u003enumber\u003c/code\u003e | \u003ccode\u003esx \\* 0.25\u003c/code\u003e |\n| [roundSegments] | \u003ccode\u003enumber\u003c/code\u003e | \u003ccode\u003e8\u003c/code\u003e          |\n| [edgeSegments]  | \u003ccode\u003enumber\u003c/code\u003e | \u003ccode\u003e1\u003c/code\u003e          |\n\n\u003ca name=\"module_roundedRectangle\"\u003e\u003c/a\u003e\n\n## roundedRectangle\n\n- [roundedRectangle](#module_roundedRectangle)\n  - [roundedRectangle([options])](#exp_module_roundedRectangle--roundedRectangle) ⇒ [\u003ccode\u003eSimplicialComplex\u003c/code\u003e](#SimplicialComplex) ⏏\n    - [~RoundedCubeOptions](#module_roundedRectangle--roundedRectangle..RoundedCubeOptions) : \u003ccode\u003eobject\u003c/code\u003e\n\n\u003ca name=\"exp_module_roundedRectangle--roundedRectangle\"\u003e\u003c/a\u003e\n\n### roundedRectangle([options]) ⇒ [\u003ccode\u003eSimplicialComplex\u003c/code\u003e](#SimplicialComplex) ⏏\n\n**Kind**: Exported function\n\n| Param     | Type                                                                                              | Default         |\n| --------- | ------------------------------------------------------------------------------------------------- | --------------- |\n| [options] | [\u003ccode\u003eRoundedCubeOptions\u003c/code\u003e](#module_roundedRectangle--roundedRectangle..RoundedCubeOptions) | \u003ccode\u003e{}\u003c/code\u003e |\n\n\u003ca name=\"module_roundedRectangle--roundedRectangle..RoundedCubeOptions\"\u003e\u003c/a\u003e\n\n#### roundedRectangle~RoundedCubeOptions : \u003ccode\u003eobject\u003c/code\u003e\n\n**Kind**: inner typedef of [\u003ccode\u003eroundedRectangle\u003c/code\u003e](#exp_module_roundedRectangle--roundedRectangle)\n**Properties**\n\n| Name            | Type                | Default                 |\n| --------------- | ------------------- | ----------------------- |\n| [sx]            | \u003ccode\u003enumber\u003c/code\u003e | \u003ccode\u003e1\u003c/code\u003e          |\n| [sy]            | \u003ccode\u003enumber\u003c/code\u003e | \u003ccode\u003esx\u003c/code\u003e         |\n| [nx]            | \u003ccode\u003enumber\u003c/code\u003e | \u003ccode\u003e1\u003c/code\u003e          |\n| [ny]            | \u003ccode\u003enumber\u003c/code\u003e | \u003ccode\u003enx\u003c/code\u003e         |\n| [radius]        | \u003ccode\u003enumber\u003c/code\u003e | \u003ccode\u003esx \\* 0.25\u003c/code\u003e |\n| [roundSegments] | \u003ccode\u003enumber\u003c/code\u003e | \u003ccode\u003e8\u003c/code\u003e          |\n| [edgeSegments]  | \u003ccode\u003enumber\u003c/code\u003e | \u003ccode\u003e1\u003c/code\u003e          |\n\n\u003ca name=\"module_sphere\"\u003e\u003c/a\u003e\n\n## sphere\n\n- [sphere](#module_sphere)\n  - [sphere([options])](#exp_module_sphere--sphere) ⇒ [\u003ccode\u003eSimplicialComplex\u003c/code\u003e](#SimplicialComplex) ⏏\n    - [~SphereOptions](#module_sphere--sphere..SphereOptions) : \u003ccode\u003eobject\u003c/code\u003e\n\n\u003ca name=\"exp_module_sphere--sphere\"\u003e\u003c/a\u003e\n\n### sphere([options]) ⇒ [\u003ccode\u003eSimplicialComplex\u003c/code\u003e](#SimplicialComplex) ⏏\n\n**Kind**: Exported function\n\n| Param     | Type                                                                | Default         |\n| --------- | ------------------------------------------------------------------- | --------------- |\n| [options] | [\u003ccode\u003eSphereOptions\u003c/code\u003e](#module_sphere--sphere..SphereOptions) | \u003ccode\u003e{}\u003c/code\u003e |\n\n\u003ca name=\"module_sphere--sphere..SphereOptions\"\u003e\u003c/a\u003e\n\n#### sphere~SphereOptions : \u003ccode\u003eobject\u003c/code\u003e\n\n**Kind**: inner typedef of [\u003ccode\u003esphere\u003c/code\u003e](#exp_module_sphere--sphere)\n**Properties**\n\n| Name          | Type                | Default              |\n| ------------- | ------------------- | -------------------- |\n| [radius]      | \u003ccode\u003enumber\u003c/code\u003e | \u003ccode\u003e0.5\u003c/code\u003e     |\n| [nx]          | \u003ccode\u003enumber\u003c/code\u003e | \u003ccode\u003e32\u003c/code\u003e      |\n| [ny]          | \u003ccode\u003enumber\u003c/code\u003e | \u003ccode\u003e16\u003c/code\u003e      |\n| [theta]       | \u003ccode\u003enumber\u003c/code\u003e | \u003ccode\u003eMath.PI\u003c/code\u003e |\n| [thetaOffset] | \u003ccode\u003enumber\u003c/code\u003e | \u003ccode\u003e0\u003c/code\u003e       |\n| [phi]         | \u003ccode\u003enumber\u003c/code\u003e | \u003ccode\u003eTAU\u003c/code\u003e     |\n| [phiOffset]   | \u003ccode\u003enumber\u003c/code\u003e | \u003ccode\u003e0\u003c/code\u003e       |\n\n\u003ca name=\"module_squircle\"\u003e\u003c/a\u003e\n\n## squircle\n\n- [squircle](#module_squircle)\n  - [squircle([options])](#exp_module_squircle--squircle) ⇒ [\u003ccode\u003eSimplicialComplex\u003c/code\u003e](#SimplicialComplex) ⏏\n    - [~SquircleOptions](#module_squircle--squircle..SquircleOptions) : \u003ccode\u003eobject\u003c/code\u003e\n\n\u003ca name=\"exp_module_squircle--squircle\"\u003e\u003c/a\u003e\n\n### squircle([options]) ⇒ [\u003ccode\u003eSimplicialComplex\u003c/code\u003e](#SimplicialComplex) ⏏\n\nFernández-Guasti squircle\n\n**Kind**: Exported function\n**See**: [Squircular Calculations – Chamberlain Fong](https://arxiv.org/vc/arxiv/papers/1604/1604.02174v1.pdf)\n\n| Param     | Type                                                                        | Default         |\n| --------- | --------------------------------------------------------------------------- | --------------- |\n| [options] | [\u003ccode\u003eSquircleOptions\u003c/code\u003e](#module_squircle--squircle..SquircleOptions) | \u003ccode\u003e{}\u003c/code\u003e |\n\n\u003ca name=\"module_squircle--squircle..SquircleOptions\"\u003e\u003c/a\u003e\n\n#### squircle~SquircleOptions : \u003ccode\u003eobject\u003c/code\u003e\n\n**Kind**: inner typedef of [\u003ccode\u003esquircle\u003c/code\u003e](#exp_module_squircle--squircle)\n**Properties**\n\n| Name            | Type                  | Default                            | Description             |\n| --------------- | --------------------- | ---------------------------------- | ----------------------- |\n| [sx]            | \u003ccode\u003enumber\u003c/code\u003e   | \u003ccode\u003e1\u003c/code\u003e                     |                         |\n| [sy]            | \u003ccode\u003enumber\u003c/code\u003e   | \u003ccode\u003e1\u003c/code\u003e                     |                         |\n| [radius]        | \u003ccode\u003enumber\u003c/code\u003e   | \u003ccode\u003e0.5\u003c/code\u003e                   |                         |\n| [segments]      | \u003ccode\u003enumber\u003c/code\u003e   | \u003ccode\u003e128\u003c/code\u003e                   |                         |\n| [innerSegments] | \u003ccode\u003enumber\u003c/code\u003e   | \u003ccode\u003e16\u003c/code\u003e                    |                         |\n| [theta]         | \u003ccode\u003enumber\u003c/code\u003e   | \u003ccode\u003eTAU\u003c/code\u003e                   |                         |\n| [thetaOffset]   | \u003ccode\u003enumber\u003c/code\u003e   | \u003ccode\u003e0\u003c/code\u003e                     |                         |\n| [mapping]       | \u003ccode\u003efunction\u003c/code\u003e | \u003ccode\u003emappings.fgSquircular\u003c/code\u003e |                         |\n| [squareness]    | \u003ccode\u003enumber\u003c/code\u003e   | \u003ccode\u003e0.95\u003c/code\u003e                  | Squareness (0 \u003c s \u003c= 1) |\n\n\u003ca name=\"module_stadium\"\u003e\u003c/a\u003e\n\n## stadium\n\n- [stadium](#module_stadium)\n  - [stadium([options])](#exp_module_stadium--stadium) ⇒ [\u003ccode\u003eSimplicialComplex\u003c/code\u003e](#SimplicialComplex) ⏏\n    - [~StadiumOptions](#module_stadium--stadium..StadiumOptions) : \u003ccode\u003eobject\u003c/code\u003e\n\n\u003ca name=\"exp_module_stadium--stadium\"\u003e\u003c/a\u003e\n\n### stadium([options]) ⇒ [\u003ccode\u003eSimplicialComplex\u003c/code\u003e](#SimplicialComplex) ⏏\n\n**Kind**: Exported function\n\n| Param     | Type                                                                    | Default         |\n| --------- | ----------------------------------------------------------------------- | --------------- |\n| [options] | [\u003ccode\u003eStadiumOptions\u003c/code\u003e](#module_stadium--stadium..StadiumOptions) | \u003ccode\u003e{}\u003c/code\u003e |\n\n\u003ca name=\"module_stadium--stadium..StadiumOptions\"\u003e\u003c/a\u003e\n\n#### stadium~StadiumOptions : \u003ccode\u003eobject\u003c/code\u003e\n\n**Kind**: inner typedef of [\u003ccode\u003estadium\u003c/code\u003e](#exp_module_stadium--stadium)\n**Properties**\n\n| Name            | Type                | Default         |\n| --------------- | ------------------- | --------------- |\n| [sx]            | \u003ccode\u003enumber\u003c/code\u003e | \u003ccode\u003e1\u003c/code\u003e  |\n| [sy]            | \u003ccode\u003enumber\u003c/code\u003e | \u003ccode\u003esx\u003c/code\u003e |\n| [nx]            | \u003ccode\u003enumber\u003c/code\u003e | \u003ccode\u003e1\u003c/code\u003e  |\n| [ny]            | \u003ccode\u003enumber\u003c/code\u003e | \u003ccode\u003enx\u003c/code\u003e |\n| [roundSegments] | \u003ccode\u003enumber\u003c/code\u003e | \u003ccode\u003e8\u003c/code\u003e  |\n| [edgeSegments]  | \u003ccode\u003enumber\u003c/code\u003e | \u003ccode\u003e1\u003c/code\u003e  |\n\n\u003ca name=\"module_superellipse\"\u003e\u003c/a\u003e\n\n## superellipse\n\n- [superellipse](#module_superellipse)\n  - [superellipse([options])](#exp_module_superellipse--superellipse) ⇒ [\u003ccode\u003eSimplicialComplex\u003c/code\u003e](#SimplicialComplex) ⏏\n    - [~SuperellipseOptions](#module_superellipse--superellipse..SuperellipseOptions) : \u003ccode\u003eobject\u003c/code\u003e\n\n\u003ca name=\"exp_module_superellipse--superellipse\"\u003e\u003c/a\u003e\n\n### superellipse([options]) ⇒ [\u003ccode\u003eSimplicialComplex\u003c/code\u003e](#SimplicialComplex) ⏏\n\nLamé curve\nSee elliptical-mapping example for a few special cases\n\n**Kind**: Exported function\n**See**\n\n- [Wolfram MathWorld – Superellipse](https://mathworld.wolfram.com/Superellipse.html)\n- [Wikipedia – Superellipse](https://en.wikipedia.org/wiki/Superellipse)\n\n| Param     | Type                                                                                        | Default         |\n| --------- | ------------------------------------------------------------------------------------------- | --------------- |\n| [options] | [\u003ccode\u003eSuperellipseOptions\u003c/code\u003e](#module_superellipse--superellipse..SuperellipseOptions) | \u003ccode\u003e{}\u003c/code\u003e |\n\n\u003ca name=\"module_superellipse--superellipse..SuperellipseOptions\"\u003e\u003c/a\u003e\n\n#### superellipse~SuperellipseOptions : \u003ccode\u003eobject\u003c/code\u003e\n\n**Kind**: inner typedef of [\u003ccode\u003esuperellipse\u003c/code\u003e](#exp_module_superellipse--superellipse)\n**Properties**\n\n| Name            | Type                  | Default                    |\n| --------------- | --------------------- | -------------------------- |\n| [sx]            | \u003ccode\u003enumber\u003c/code\u003e   | \u003ccode\u003e1\u003c/code\u003e             |\n| [sy]            | \u003ccode\u003enumber\u003c/code\u003e   | \u003ccode\u003e0.5\u003c/code\u003e           |\n| [radius]        | \u003ccode\u003enumber\u003c/code\u003e   | \u003ccode\u003e0.5\u003c/code\u003e           |\n| [segments]      | \u003ccode\u003enumber\u003c/code\u003e   | \u003ccode\u003e32\u003c/code\u003e            |\n| [innerSegments] | \u003ccode\u003enumber\u003c/code\u003e   | \u003ccode\u003e16\u003c/code\u003e            |\n| [theta]         | \u003ccode\u003enumber\u003c/code\u003e   | \u003ccode\u003eTAU\u003c/code\u003e           |\n| [thetaOffset]   | \u003ccode\u003enumber\u003c/code\u003e   | \u003ccode\u003e0\u003c/code\u003e             |\n| [mapping]       | \u003ccode\u003efunction\u003c/code\u003e | \u003ccode\u003emappings.lamé\u003c/code\u003e |\n| [m]             | \u003ccode\u003enumber\u003c/code\u003e   | \u003ccode\u003e2\u003c/code\u003e             |\n| [n]             | \u003ccode\u003enumber\u003c/code\u003e   | \u003ccode\u003em\u003c/code\u003e             |\n\n\u003ca name=\"module_tetrahedron\"\u003e\u003c/a\u003e\n\n## tetrahedron\n\n- [tetrahedron](#module_tetrahedron)\n  - [tetrahedron([options])](#exp_module_tetrahedron--tetrahedron) ⇒ [\u003ccode\u003eSimplicialComplex\u003c/code\u003e](#SimplicialComplex) ⏏\n    - [~TetrahedronOptions](#module_tetrahedron--tetrahedron..TetrahedronOptions) : \u003ccode\u003eobject\u003c/code\u003e\n\n\u003ca name=\"exp_module_tetrahedron--tetrahedron\"\u003e\u003c/a\u003e\n\n### tetrahedron([options]) ⇒ [\u003ccode\u003eSimplicialComplex\u003c/code\u003e](#SimplicialComplex) ⏏\n\n**Kind**: Exported function\n\n| Param     | Type                                                                                    | Default         |\n| --------- | --------------------------------------------------------------------------------------- | --------------- |\n| [options] | [\u003ccode\u003eTetrahedronOptions\u003c/code\u003e](#module_tetrahedron--tetrahedron..TetrahedronOptions) | \u003ccode\u003e{}\u003c/code\u003e |\n\n\u003ca name=\"module_tetrahedron--tetrahedron..TetrahedronOptions\"\u003e\u003c/a\u003e\n\n#### tetrahedron~TetrahedronOptions : \u003ccode\u003eobject\u003c/code\u003e\n\n**Kind**: inner typedef of [\u003ccode\u003etetrahedron\u003c/code\u003e](#exp_module_tetrahedron--tetrahedron)\n**Properties**\n\n| Name     | Type                | Default          |\n| -------- | ------------------- | ---------------- |\n| [radius] | \u003ccode\u003enumber\u003c/code\u003e | \u003ccode\u003e0.5\u003c/code\u003e |\n\n\u003ca name=\"module_torus\"\u003e\u003c/a\u003e\n\n## torus\n\n- [torus](#module_torus)\n  - [torus([options])](#exp_module_torus--torus) ⇒ [\u003ccode\u003eSimplicialComplex\u003c/code\u003e](#SimplicialComplex) ⏏\n    - [~TorusOptions](#module_torus--torus..TorusOptions) : \u003ccode\u003eobject\u003c/code\u003e\n\n\u003ca name=\"exp_module_torus--torus\"\u003e\u003c/a\u003e\n\n### torus([options]) ⇒ [\u003ccode\u003eSimplicialComplex\u003c/code\u003e](#SimplicialComplex) ⏏\n\n**Kind**: Exported function\n\n| Param     | Type                                                            | Default         |\n| --------- | --------------------------------------------------------------- | --------------- |\n| [options] | [\u003ccode\u003eTorusOptions\u003c/code\u003e](#module_torus--torus..TorusOptions) | \u003ccode\u003e{}\u003c/code\u003e |\n\n\u003ca name=\"module_torus--torus..TorusOptions\"\u003e\u003c/a\u003e\n\n#### torus~TorusOptions : \u003ccode\u003eobject\u003c/code\u003e\n\n**Kind**: inner typedef of [\u003ccode\u003etorus\u003c/code\u003e](#exp_module_torus--torus)\n**Properties**\n\n| Name            | Type                | Default          |\n| --------------- | ------------------- | ---------------- |\n| [radius]        | \u003ccode\u003enumber\u003c/code\u003e | \u003ccode\u003e0.4\u003c/code\u003e |\n| [segments]      | \u003ccode\u003enumber\u003c/code\u003e | \u003ccode\u003e64\u003c/code\u003e  |\n| [minorRadius]   | \u003ccode\u003enumber\u003c/code\u003e | \u003ccode\u003e0.1\u003c/code\u003e |\n| [minorSegments] | \u003ccode\u003enumber\u003c/code\u003e | \u003ccode\u003e32\u003c/code\u003e  |\n| [theta]         | \u003ccode\u003enumber\u003c/code\u003e | \u003ccode\u003eTAU\u003c/code\u003e |\n| [thetaOffset]   | \u003ccode\u003enumber\u003c/code\u003e | \u003ccode\u003e0\u003c/code\u003e   |\n| [phi]           | \u003ccode\u003enumber\u003c/code\u003e | \u003ccode\u003eTAU\u003c/code\u003e |\n| [phiOffset]     | \u003ccode\u003enumber\u003c/code\u003e | \u003ccode\u003e0\u003c/code\u003e   |\n\n\u003ca name=\"module_utils\"\u003e\u003c/a\u003e\n\n## utils\n\n- [utils](#module_utils)\n  - [.TAU](#module_utils.TAU) : \u003ccode\u003enumber\u003c/code\u003e\n  - [.HALF_PI](#module_utils.HALF_PI) : \u003ccode\u003enumber\u003c/code\u003e\n  - [.SQRT2](#module_utils.SQRT2) : \u003ccode\u003enumber\u003c/code\u003e\n  - [.getCellsTypedArray](#module_utils.getCellsTypedArray) ⇒ \u003ccode\u003eUint8Array\u003c/code\u003e \\| \u003ccode\u003eUint16Array\u003c/code\u003e \\| \u003ccode\u003eUint32Array\u003c/code\u003e\n  - [.normalize(v)](#module_utils.normalize) ⇒ \u003ccode\u003eArray.\u0026lt;number\u0026gt;\u003c/code\u003e\n  - [.checkArguments(...args)](#module_utils.checkArguments)\n  - [.setTypedArrayType(type)](#module_utils.setTypedArrayType)\n\n\u003ca name=\"module_utils.TAU\"\u003e\u003c/a\u003e\n\n### utils.TAU : \u003ccode\u003enumber\u003c/code\u003e\n\nTwo times PI.\n\n**Kind**: static constant of [\u003ccode\u003eutils\u003c/code\u003e](#module_utils)\n\u003ca name=\"module_utils.HALF_PI\"\u003e\u003c/a\u003e\n\n### utils.HALF_PI : \u003ccode\u003enumber\u003c/code\u003e\n\nTwo times PI.\n\n**Kind**: static constant of [\u003ccode\u003eutils\u003c/code\u003e](#module_utils)\n\u003ca name=\"module_utils.SQRT2\"\u003e\u003c/a\u003e\n\n### utils.SQRT2 : \u003ccode\u003enumber\u003c/code\u003e\n\nSquare root of 2.\n\n**Kind**: static constant of [\u003ccode\u003eutils\u003c/code\u003e](#module_utils)\n\u003ca name=\"module_utils.getCellsTypedArray\"\u003e\u003c/a\u003e\n\n### utils.getCellsTypedArray ⇒ \u003ccode\u003eUint8Array\u003c/code\u003e \\| \u003ccode\u003eUint16Array\u003c/code\u003e \\| \u003ccode\u003eUint32Array\u003c/code\u003e\n\nSelect cells typed array from a size determined by amount of vertices.\n\n**Kind**: static constant of [\u003ccode\u003eutils\u003c/code\u003e](#module_utils)\n**See**: [MDN TypedArray objects](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/TypedArray#typedarray_objects)\n\n| Param | Type                | Description            |\n| ----- | ------------------- | ---------------------- |\n| size  | \u003ccode\u003enumber\u003c/code\u003e | The max value expected |\n\n\u003ca name=\"module_utils.normalize\"\u003e\u003c/a\u003e\n\n### utils.normalize(v) ⇒ \u003ccode\u003eArray.\u0026lt;number\u0026gt;\u003c/code\u003e\n\nNormalize a vector 3.\n\n**Kind**: static method of [\u003ccode\u003eutils\u003c/code\u003e](#module_utils)\n**Returns**: \u003ccode\u003eArray.\u0026lt;number\u0026gt;\u003c/code\u003e - Normalized vector\n\n| Param | Type                              | Description    |\n| ----- | --------------------------------- | -------------- |\n| v     | \u003ccode\u003eArray.\u0026lt;number\u0026gt;\u003c/code\u003e | Vector 3 array |\n\n\u003ca name=\"module_utils.checkArguments\"\u003e\u003c/a\u003e\n\n### utils.checkArguments(...args)\n\nEnsure first argument passed to the primitive functions is an object\n\n**Kind**: static method of [\u003ccode\u003eutils\u003c/code\u003e](#module_utils)\n\n| Param   | Type            |\n| ------- | --------------- |\n| ...args | \u003ccode\u003e\\*\u003c/code\u003e |\n\n\u003ca name=\"module_utils.setTypedArrayType\"\u003e\u003c/a\u003e\n\n### utils.setTypedArrayType(type)\n\nEnforce a typed array constructor for cells\n\n**Kind**: static method of [\u003ccode\u003eutils\u003c/code\u003e](#module_utils)\n\n| Param | Type                                                                                                                      |\n| ----- | ------------------------------------------------------------------------------------------------------------------------- |\n| type  | \u003ccode\u003eClass.\u0026lt;Uint8Array\u0026gt;\u003c/code\u003e \\| \u003ccode\u003eClass.\u0026lt;Uint16Array\u0026gt;\u003c/code\u003e \\| \u003ccode\u003eClass.\u0026lt;Uint32Array\u0026gt;\u003c/code\u003e |\n\n\u003ca name=\"BasicSimplicialComplex\"\u003e\u003c/a\u003e\n\n## BasicSimplicialComplex : \u003ccode\u003eobject\u003c/code\u003e\n\nGeometry definition without normals and UVs.\n\n**Kind**: global typedef\n**Properties**\n\n| Name      | Type                                                                            |\n| --------- | ------------------------------------------------------------------------------- |\n| positions | \u003ccode\u003eFloat32Array\u003c/code\u003e                                                       |\n| cells     | \u003ccode\u003eUint8Array\u003c/code\u003e \\| \u003ccode\u003eUint16Array\u003c/code\u003e \\| \u003ccode\u003eUint32Array\u003c/code\u003e |\n\n\u003ca name=\"SimplicialComplex\"\u003e\u003c/a\u003e\n\n## SimplicialComplex : \u003ccode\u003eobject\u003c/code\u003e\n\nGeometry definition.\n\n**Kind**: global typedef\n**Properties**\n\n| Name      | Type                                                                            |\n| --------- | ------------------------------------------------------------------------------- |\n| positions | \u003ccode\u003eFloat32Array\u003c/code\u003e                                                       |\n| normals   | \u003ccode\u003eFloat32Array\u003c/code\u003e                                                       |\n| uvs       | \u003ccode\u003eFloat32Array\u003c/code\u003e                                                       |\n| cells     | \u003ccode\u003eUint8Array\u003c/code\u003e \\| \u003ccode\u003eUint16Array\u003c/code\u003e \\| \u003ccode\u003eUint32Array\u003c/code\u003e |\n\n\u003c!-- api-end --\u003e\n\n## License\n\nSee original packages used in v1:\n\n- [primitive-quad](https://npmjs.com/package/primitive-quad)\n- [primitive-plane](https://npmjs.com/package/primitive-plane)\n- [primitive-cube](https://npmjs.com/package/primitive-cube)\n- [primitive-rounded-cube](https://npmjs.com/package/primitive-rounded-cube)\n- [primitive-capsule](https://npmjs.com/package/primitive-capsule)\n- [primitive-sphere](https://npmjs.com/package/primitive-sphere)\n- [primitive-icosphere](https://npmjs.com/package/primitive-icosphere)\n- [primitive-ellipsoid](https://npmjs.com/package/primitive-ellipsoid)\n- [primitive-torus](https://npmjs.com/package/primitive-torus)\n- [primitive-cylinder](https://npmjs.com/package/primitive-cylinder)\n- [primitive-box](https://npmjs.com/package/primitive-box)\n- [primitive-circle](https://npmjs.com/package/primitive-circle)\n\nDifferences with v1:\n\n- [x] use 3D positions for circle\n- [x] base disc on ellispse and add inner segments\n- [x] fix cylinder orientation and uvs\n- [x] fix icosphere uvs (based on: https://github.com/mourner/icomesh)\n- [x] fix quad normal to +z\n- [x] fix subdivision for rounded geometries (rounded-cube and capsule)\n- [x] uniformise api and internal names\n- [x] use options object\n- [x] remove gl-matrix/pex-math and icosphere dependencies\n- [x] use only trigonometric operation, no matrix transformation\n- [x] base sphere on ellispsoid\n- [x] add cone based on cylinder\n- [x] use flat typed arrays\n- [x] defaults produce geometries contained in a unit bbox\n- [x] add jsdoc, prettier, eslint via [snowdev](https://github.com/dmnsgn/snowdev/)\n\nMIT. See [license file](https://github.com/dmnsgn/primitive-geometry/blob/main/LICENSE.md).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdmnsgn%2Fprimitive-geometry","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdmnsgn%2Fprimitive-geometry","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdmnsgn%2Fprimitive-geometry/lists"}