This is a UI for making N-bar linkage systems with one degree of freedom and any number of rotary inputs. Here's an example making Theo Jasen's Strandbeest Linkage:
Play around with this example here: http://tinyurl.com/gwcuhhr
To run locally, first install npm, clone this repository, then run:
$ npm install
$ npm run-script build
Then open index.html
with a browser (I've only tested in the lastest versions of Chrome). You should see a single, loney rotary input that looks like this:
Here are the controls so far:
- Press
space
to toggle pause - When paused:
- Click and drag a ground vertex to move it around
- Some ground verticies are used as references for rotary inputs, so dragging them will change the phase the input
- Hover over any bar*, then press
w
ors
to change its length - To add an additional ground vertex connected to the linkage, click on two different places on the background, then click on a vertex on the linkage
- To add additional bars, click a bar, or on any two verticies of the linkage, then click once on the background
- To add a new rotary input, hold down
r
and then click somewhere on the background - To delete parts of the linkage, click on a vertex, then press
d
. Note that this only works if other parts of the linkage don't depend on the bars connected to the vertex. - To see the path that a vertex traces, click on a vertex, then press
space
to unpause - To automatically optimize the linkage to follow a path, click a vertex, then press
o
, then draw the desired path for that vertex. Pressspace
to stop the optimization. - To select a rotary input, click the vertex that a bar is rotating around
- When unpaused:
- Press
w
ors
to increase or decrease the speed of a selected rotary input, ort
to reverse its direction. If no rotary input is selected, these changes in speed will apply to all of them.
- Press
* any bar except one between a rotary input and its reference vertex
Rotary inputs will automatically reverse if they're about to put the linakge into an impossible configuration.