Kempe Simulator
This app allows you to construct rigid linkages that draw interesting patterns.
Heavily based on A Practical Implementation of Kempe’s Universality Theorem,
a 6.849-2012 final project by Yanping Chen, Laura Hallock, Eric Söderström, Xinyi Zhang.
First, construct a linkage OR import a FOLD format OR load one of the pre-made linkage designs.
Every linkage consists of vertices and edges. Each vertex can be Fixed, Free or Pen. Edges can be Free or Pen.
Pen vertices and edges draw traces as they move. Drag a vertex to move it and the linkage its connected to.
There are two physics engines. Box2D allows for fast yet inaccurate endering. C.H.S.Z. is slow but accurate.
Play around with undamped motion mode in Box2D and pen edges to get patterns such as:
Kempe Simulator was created by Eyal Perry,
as a final project for 6.849 Fall 2020.
Bad design files will throw errors and create models that explode or cannot be solved, here are some tips for
importing FOLD files that work.
Importing FOLD:
The FOLD file format is specified in these docs.
This tool imports FOLD v1.1 files with all of the following fields populated:
vertices_coords
edges_vertices
You may specify the vertex assignment by using the custom vertices_kempe:assignment field
populated with F/P/X values which corresponds to Free/Pen/fiXed points.
If the vertices_kempe:assignment field is missing, all vertices will be considered as Free.
Note that edges_length are exported to FOLD but are not used internally as they are recalculated using the vertices_coords field.
If you are unsure whether your FOLD file is valid, you can inspect it using the
FOLD Viewer.
If you are having trouble, please refer to the FOLD spec.
EXPORT FOLD
Filename: .fold
Author:
For more information about the FOLD file format, see the offical docs.
Use the FOLD viewer to check that your file has been exported correctly.
KEMPE LINKAGE
Equation:
Input an algebraic equation (in x, y) to generate a Kempe Linkage that will draw the curve given by the equation inside the disc of radius 2 from the origin.