Apparatus

Apparatus is a hybrid graphics editor and programming environment for creating interactive diagrams.

The Apparatus Editor runs in the browser and interactive diagrams created with Apparatus can be shared and embedded on the web (coming soon).

Apparatus is free, open-source software.

Launch Apparatus Editor

Examples

Cycloid
Joshua Horowitz
Bike
Paula Te
Potted Plant
Bret Victor
Quadradic Bezier
Matthias Graf
Circumference
Matthias Graf
Involute
Matthias Graf
Tides
Toby Schachman
Arm Linkage
Toby Schachman
Face
Toby Schachman
Polygon
Toby Schachman
Star
Bret Victor
Slider
Toby Schachman
Color Picker
Toby Schachman
Bar Chart
Toby Schachman
Cartesian Plot
Toby Schachman

Tutorials

1. Make a Face

2. Make a Clock

3. Make a Color Picker

4. Make a Bar Chart

5. Make a Plot

6. Make a Polygon

Documentation

Editor Interface

Javascript in Expressions

One-liners will be evaluated.

4 + 4
8

If you have a multi-line expression, use return at the end.

var x = 32;
return x * x;
1024

All of the javascript Math constants and methods are in scope.

abs(-3) + sin(PI)
3

Additionally, the constant TAU (2*PI) is in scope.

cos(TAU / 6)
0.5

A color utility function rgba(r, g, b, a) is in scope.

rgba(1.0, 0.5, 0.5, 0.5)
"rgba(255, 128, 128, 0.5)"

Use spread to create spreads.

Create a range:

spread(0, 5)
0, 1, 2, 3, 4

Create a range with an increment:

spread(0, 5, 0.5)
0, 0.5, 1, 1.5, 2, 2.5, 3, 3.5, 4, 4.5

Turn a javascript array into a spread:

spread([0, 2, 3, 5])
0, 2, 3, 5

Notes

Apparatus is still an early stage project so there are likely bugs. Please report any issues on the GitHub Issues page. Thanks!

Apparatus aims to support all modern browsers but has been mostly tested in Chrome.

Apparatus will auto-save your diagram. If it crashes (stops working), try refreshing and your diagram will be restored to its last working state.

Development

Apparatus is under active development. Discuss how Apparatus should evolve on the Apparatus Google Group.

Source code is available on GitHub under the MIT license. Contributions are very welcome! Big thanks to all who have contributed code to Apparatus.

Apparatus was originally developed by Toby Schachman as a research project within the Communications Design Group (CDG) sponsored by SAP Labs. Thanks to Bret Victor, Paula Te, Matthias Graf, Michael Nagle, Chaim Gingold, Robert Ochshorn, Glen Chiacchieri, Joshua Horowitz, Ian Johnson, Simon Last, Ivan Zhao, Emily Eiffler, Vi Hart, and Monique DeSalvo for design discussions, beta testing, and encouragement!