## README

# conway-hart

A port of George Hart's JavaScript implementation/extension of Conway's polyhedral notation to the CommonJS module system. Here are some useful links that can help explain what it all means:

- George Hart's original implementation: http://www.georgehart.com/virtual-polyhedra/conway_notation.html
- The Wikipedia page on Conway's notation

# Installation

Just use npm:

```
npm install conway-hart
```

# Example

Here is an example showing how to use this library to generate a shape:

```
require("conway-hart")("djmeD");
```

Which produces the following polygon:

If you want to try it out for yourself without installing node.js, here is ansome other polytopes for yourself, here is an interactive WebGL demo.

# Usage

Conway/Hart notation is a way of specifying spherical polyhedra by subdividing regular polyhedra. The way it works is that you first specify a **seed** polyhedra, and then apply a sequence of **operators**. Each of these methods returns a javascript object with three fields:

`name`

: The name of the solid.`faces`

: The faces of the solid, represented as a list of indices into the vertices.`positions`

: The positions of the vertices of the solid.

You can also invoke the Conway operators directly. For example:

```
var ch = require("conway-hart");
ch.dual(ch.kis(ch.icosahedron(), 3));
```

The convention is that the name of the method is just the same as the name of the operator in lower case.

## Seeds

Here is a list of all the available seeds. The ones with an `n`

next to their symbol take an extra parameter describing how many faces are on their base.

`"T"`

Tetrahedron

`"C"`

Cube

`"O"`

Octahedron

`"D"`

Dodecahedron

`"I"`

Icosahedron

`"Pn"`

Prism

`"An"`

Antiprism

`"Yn"`

Pyramid

## Operations

`a`

Ambo

`b`

Bevel

`c`

Canonicalize

`d`

Dual

`e`

Expand

`g`

Gyro

`j`

Join

`kn`

Kis

`m`

Meta

`o`

Ortho

`p`

Propellor

`r`

Reflect

`s`

Split

`tn`

Truncate

# Credits

(c) 1998 George Hart. GPL

CommonJS port maintained by Mikola Lysenko.