Loading - please wait...

This page requires a reasonably modern HTML5 browser
with both Javascript and WebGL enabled.

If this message is not soon replaced by an interactive 3D model,
then it is likely that your browser does not support this web app.
Check your JavaScript Console for specific error messages.

BASE POLYHEDRON
OPERATIONS
OPERATOR STACK

:
:
:

Edit Color

Change Operator

Add New Operator

To reorder operators, press & hold one until its title turns pink, then drag up or down.

ANIMATION



Speed

3D VIEW SETTINGS

Projection (Shortcut keys: 1 to 6)

DISPLAY SETTINGS

SNAP SETTINGS


Displayed Dimension Units

This affects only the display of dimensions within the interface, all dimensions are stored in millimetres.


Displays dimension lines along the outer bounding extents of the tree.

DATE AND TIME

GEOGRAPHIC LOCATION


Time Zone

INFORMATION

Overview

This app generates a range of common polyhedra and lets you apply mathematical operations on them to create some interesting and artistic sculptural forms. I have tried to include most of the standard operations from Conway polyhedron notation – borrowing heavily from some of the techniques used in Anselm Levskaya's polyHédronisme and George Hart's Polyhedron Generator – as well as a couple of my own for spherical inflation and a bit of randomness.

Once you have selected a base polyhedron, you can either enter a notation command string directly, minus the polyhedron identifier at the end, or build one up by adding and editing components in the operator stack immediately below.

Conway Polyhedra Notation

Importantly, you don't need to know anything about Conway polyhedron notation to have fun with this app. You can just experiment by trying out different operators one by one to see what they do. Moreover, you can choose one of the examples and then start enabling/disabling or editing the paramaters in order to experiment.

If you do want to know more, the best place is the Wikipedia page linked to above. Hopefully at some point I will get enough time to go back and write a detailed explanation for each of the operations and what they do, but until then it's up to Wikipedia and George Hart's original explanations.

As notation strings can sometimes get quite complex, especially when using bracketed arguments, I have tried to make the operator stack a bit more approachable by including all the available paramaters as interactive sliders.

To enter a number directly, either click the slider instead of dragging it, or manually edit the appropriate argument in the notation text. By default, the operator stack will update whenever you manually change the notation in the text editor.

Background

I have always wanted to do a WebGL version of the polyhedron viewer I wrote in Processing some years ago, but it was just a folly and there were always higher priorities. However, I recently needed to include some basic polyhedra in my Tree Generator app, so had to convert some of the old code anyway. At the same time I was trying to develop a bullet-proof closed-shell geometry class for my BIM tools and, having seen and been so completely inspired by polyHédronisme, I figured that it might make an excellent visual test suite and provide just the excuse I needed.

Interesting Features

The following are some of this app's features and idiosyncrasies:

  • Don't go too beserk, but this app will handle higher-order polyhedra with several hundred thousand vertices and a similar number of faces. However, anything above about 200k will start to test your patience when editing it - so best to edit a simplified base and then add smoothing expansions only when you want to export or visualise.
  • The final generated polyhedra always has a maximum radius of 1 metre. This may mean that some extrusions cause the apparent base polyhedron to shrink in size relative to the external projections, but this is intended behaviour.
  • I have tried to provide a range of different facet colouring options, based on relative area, number of edges, orientation or a combination of all three to create a signature for like faces. Different types of polyhedra will look good with some and not others, so you will need to experiment for best results.
  • I have taken some egregious liberties by adding a couple of non-standard operations such as Jitter (J), Wrinkle (W) and Inflate (I)

© Dr. Andrew J. Marsh, 2019.

View Manipulation

You can interactively adjust the 3D view of the model using a mouse, pen or stylus, or by touch on a tablet or phone. You can also use the items in the 3D View Settings popup.

Rotation:
Drag with the left/right button or a single finger,
or use the arrow keys.
Panning:
Drag with the middle button or two/three fingers,
or use the A and D keys.
Zooming:
Use the scroll wheel or pinch with two fingers,
or use the W and S keys.

NOTE: You can use the Shift and Ctrl/Meta keys to adjust the increment of each scroll event or key press.

Keyboard Modifiers

The Shift and Ctrl/Meta keys are used pretty extensively to modify interactive data entry. This applies to all increment buttons, scroll wheel motion, slider controls and input elements.

Shift Key:
Increases input to larger values, usually by ten times or significantly larger increments such as 1 month for dates and 1 hour for times.
Ctrl or Meta Key:
Decreases input to smaller values, usually by one tenth or the smallest reasonable increment such as 1 day for dates or 1 minute for times.

NOTE: You can use the scroll wheel to edit a data value when hovering over any slider, numeric input or even table rows that indicate their editibility.

Credits

This page uses the following frameworks/components:

Bootstrap  v3.3.2
Copyright © 2011-2015 Twitter, Inc. - github.com/twbs,
http://getbootstrap.com/   (LICENSE)

Bootstrap-popover-x  v1.4.0
Copyright © 2014, Kartik Visweswaran, Krajee.com,
https://github.com/kartik-v/bootstrap-popover-x   (LICENSE)

jQuery  v1.11.2
Copyright © jQuery Foundation and other contributors,
https://jquery.com/   (LICENSE)

JSON Editor
Copyright © 2015 Jos de Jong - github.com/josdejong
https://github.com/josdejong/jsoneditor   (LICENSE)

JSURL
Copyright © 2011 Bruno Jouhier - github.com/Sage
https://github.com/Sage/jsurl   (LICENSE)

KnockoutJS  v3.2.0
Copyright © Steven Sanderson and the Knockout.js team,
http://knockoutjs.com/   (LICENSE)

Knockstrap  v1.2.0
Copyright © 2013 Artem Stepanyuk - github.com/faulknercs,
http://faulknercs.github.io/Knockstrap   (LICENSE)

Leaflet Maps API  v1.4.0
Copyright © Cloudmade, Vladimir Agafonkin - github.com/Leaflet,
https://leafletjs.com/   (LICENSE)

OpenStreetMap Map Data
Copyright © OpenStreetMap contributors - openstreetmap.org,
https://www.openstreetmap.org/about   (LICENSE)

polyHédronisme  v0.2.1
Copyright © 2019 Anselm Levskaya - github.com/levskaya/
https://github.com/levskaya/polyhedronisme   (LICENSE)

SnackbarJS
Copyright © 2014 Federico Zivolo - github.com/FezVrasta
http://fezvrasta.github.io/snackbarjs   (LICENSE)

Virtual Polyhedra  For .WRL Shape Data
Copyright © 2000 George W. Hart - www.georgehart.com
http://www.georgehart.com/virtual-polyhedra/vp.html   (LICENSE)