One constant assembly branch, driven by an increasing input angle.
DRAW → SEARCH → MAKE IT MOVE
Sketch a motion.
Find its machine.
A line becomes a moving sculpture.
Search a family of four-bar linkages, then see exactly where the fit—and the geometry—holds up.
Search constraints · keep the parts you choose
These limits apply to the next search, independently of manual edits. Pin captures the current candidate’s exact value. Pinned values stay fixed until you edit them here. Equal minimum and maximum also fix a dimension.
03 / SHAPE THE MACHINE
Move the point. Change the motion.
Drag the lime tracer P in the mechanism, or edit these dimensions. The display transform, target correspondence, and camera stay fixed during editing. Fit view changes only the camera.
Edits create a manual candidate. They do not claim a new optimized search result.
ALTERNATIVES FOUND IN THIS SEARCH
One path. Different machines.
Compare actual linkage poses at one shared input angle and sketch scale. Focusing a card stops an active search so the options stay steady while you choose. Distinctness is a heuristic: different branches, or at least 0.18 ground lengths of RMS joint/tracer separation over eight crank angles. Fit, diversity and geometric assembly margin describe different things; none establishes physical robustness.
THE PARTS BEHIND THE PATH
A mechanism you can inspect.
READ THE RESULT
A bounded search,
an honest fit.
We search geometry, then align its traced path to your sketch. The mechanism you see is the one being measured.
A low path error does not imply correct speed or phase, good force transmission, clearance, rigidity, or manufacturability. No collision or jamming guarantee.
04 / KEEP TWO POSSIBILITIES
Compare the motions.
No snapshot saved.
No snapshot saved.
05 / WHAT CHANGES WHEN A PART CHANGES?
Stress the dimensions. Keep the originals.
Each trial adds the same absolute vector to A and B. Length changes a/b/c use ground length = 1; tracer changes u/v use fractions of the coupler vector, even when the original offset is zero. Search pins are search intent: trials may vary a pinned part, but never change the pin or saved original. Positive dimensions may extend beyond editing limits; nonpositive lengths remain visible as unavailable requests.
Select a completed trial to inspect its exact vector.
Original A → trial A
Original B → trial B
Deviation compares tracer positions at the same crank angles in the original fixed display frame. Target fit compares 48 ordered arc-length stations; original alignment and correspondence are never refitted. Both percentages use each original target’s RMS radius. Nominal and trials use 720 input samples; incomplete cycles have unavailable whole-cycle metrics. Missing-pose intervals are 0.5° sample bins, not certified boundaries. Playback checks each traversed interval separately.
Axis ± trials plus up to eight fixed combined directions, deduplicated; at most 18 perturbations plus nominal. These finite cases are not a probability, manufacturing tolerance, collision, force, or global robustness guarantee. The search’s 0.02 margin is separate from strict geometric full-cycle closure.
06 / WHEN DOES THE TRACER ARRIVE?
Explore motion timing.
Choose crank-angle anchors in the saved mechanisms’ sketch coordinates. Seed from A adds its actual poses at 0°, 90°, 180° and 270°. Set timing requests without changing geometry or saved alignment. Results describe this kinematic model and do not imply force, collision, or manufacturability.
Phase anchors
Each desired position is explicit in sketch X/Y units. Angles are on the increasing physical crank.
Save A and/or B, configure anchors, then evaluate.
Saved A · actual mechanism
No evaluated A result.
Saved B · actual mechanism
No evaluated B result.
07 / SEARCH UNDER DIMENSIONAL CHANGE
Trade nominal fit against perturbed fit.
Sensitivity-guided mode uses the current search limits, seed, and absolute perturbations above. Ordinary “Find a linkage” remains a separate nominal-fit search. Each guided candidate fits its nominal alignment once, then keeps it fixed for every trial. Every scenario must retain strict full-cycle closure.
Both fit scores are RMS error divided by target RMS radius. Objectives use 720 crank samples and 48 ordered arc-length stations. Worst perturbed fit excludes nominal. At most eight options are retained by objective-space crowding; all retained options are nondominated against completed feasible candidates evaluated in this run. This is finite search evidence, not a global frontier or physical robustness guarantee. Each retained option also records a separate 1,440-sample audit without refitting or reranking.
08 / FIT THE ARRIVAL PHASE
Search for timing witnesses.
This bounded search fits one nominal shape first, then evaluates that fixed shape at your explicit crank-angle anchors. Correspondence and alignment stay fixed; timing cannot change the physical crank angle. Timing requests are evaluations only; they do not alter the physical crank angle. A run with no retained candidates is a bounded failure within the evaluated proposals, not proof that no solution exists.
Current target Waiting for a closed target.
Current search constraints Current search limits are read when a run starts.
Current shared phase anchors Reading shared timing settings…
Uses the shared timing anchors from the timing study above.
CAPTURE A/B / PERTURB THE PARTS / KEEP THE PHASE
Timing sensitivity.
Save originals in A and B, set the explicit timing anchors and reference scope above, then choose the absolute parameter amplitudes in the sensitivity controls. Run captures both settings with the originals. Every paired trial keeps each original’s branch and nominal alignment. No search, refit or phase shift is performed.
Configure timing anchors and sensitivity amplitudes, then capture a study. Results persist through draft changes until rerun or a saved original is replaced.
OPEN THE WORKSHOP NOTES
Geometry, not magic.
Every result exports enough information to reconstruct the moving linkage without cached joint coordinates.
What is actually being fitted?
The target and coupler trace are resampled in traversal order at 48 equally spaced arc-length points. We center each path and normalize its RMS radius. The score minimizes ordered RMS distance over 48 cyclic shifts, either traversal direction, and a proper planar rotation. A similarity transform returns the complete linkage to the target’s position and scale. Reflections are not allowed. Cyclic starting-point invariance is approximate at this finite resolution; drawing speed and point density do not set the timing.
The score matches path shape and order, not crank timing, drawing speed, or point-cloud proximity. Reversing the score’s traversal correspondence never changes the assembly branch or the physical crank direction. Animation always increases the input angle. Search curves use 96 input-angle samples; displayed diagnostics and trace use 360. A denser 1,440-sample audit score is reported after each search; differences reveal discretization limits.
How does the four-bar close?
Native ground pivots are O=(0,0), D=(1,0). The crank places A=a(cos θ,sin θ). B is one fixed-side intersection of circles centered at A and D, with radii b and c. The tracer is P=A+u(B−A)+v·perp(B−A). Thus u and v are fractions of the coupler length. Branch ± is the sign of cross(D−A,B−A).
For positive a, the distance |D−A| ranges from |1−a| to 1+a. Strict circle intersections through an entire revolution require |1−a|>|b−c| and 1+a<b+c. Search adds a 0.02-ground margin. Tangent or partial cycles are rejected during search. The partial-cycle inspector retains missing poses, breaks the trace, and stops playback at an invalid interval. No assembly-branch jumps reconnect a broken cycle.
Full geometric closure does not guarantee collision-free motion or usable forces. The margin concerns circle-intersection tangency, not every kind of toggle or rocker reversal. Primary references: METU vector-loop equations, CMU planar linkages, and Cedarville coupler-curve atlas.
What changes when I edit or save?
Dragging P inverts the displayed similarity transform and the coupler frame to set u and v. Numeric edits also retain the transform and cyclic/reversed target correspondence; they recompute fixed-alignment error without re-optimizing it. The camera remains fixed until Fit view or an explicit new result. Invalid manual cycles remain visible and unscored. Manual provenance records the search or inspection it was derived from.
A/B snapshots deep-copy their target, geometry, alignment and provenance. Restore replaces the active target and candidate, restores its recorded search limits/seed/budget (or defaults when no search was recorded), and cancels active work; later edits cannot mutate a saved slot. Scores from different targets are not ranked. The comparison uses the same input angle and common sketch scale, not fitted timing. Snapshots last for this page session; export a motion study to retain a candidate beyond it.
The motion-study export is one self-contained HTML file with embedded parameters and geometry. It opens locally without a server or network, starts paused, and computes the actual linkage pose at each angle. The study retains missing poses and its stated geometric limitations.
How are gallery alternatives kept?
Every admissible proposal is considered without changing the random sequence or optimizer. We retain at most eight options in fit-error order, accepting each only when its branch differs or its native A/B/P positions are sufficiently separated from every already-kept option of the same branch. Separation is RMS Euclidean distance over eight uniform crank angles, divided by ground length 1; the threshold is 0.18. The best found candidate is always retained. This bounded online archive is a diversity heuristic, not exhaustive or representative coverage.
Candidate IDs show the evaluation at which that geometry was discovered. The completed or cancelled run count is recorded separately. Choose current restores that candidate’s target and search settings; Send to A/B captures it without replacing the current mechanism or angle. Drawing a new target clears the gallery while saved slots remain. A new search starts an empty archive, so an exhausted run cannot present older alternatives as new results.
What are the search limits?
Ground length is 1. Default search bounds: a∈[0.12,0.75], b∈[0.45,1.9], c∈[0.35,1.7], u∈[−0.3,1.5], v∈[−1,1], branch ±. The constraint panel can narrow or expand these within the manual-edit envelope, or pin exact values and a branch. Every initial, random and local proposal obeys the recorded configuration. Fixed dimensions with one allowed branch are evaluated once; either branch means two distinct assemblies. A run with no admissible candidate reports bounded-search exhaustion and retains the previous candidate as prior work. It does not prove impossibility. The seed controls a bounded random-and-local search; no global optimum is claimed. Rejected proposals remain counted. Cancelling retains the most recently delivered candidate and the exact delivered proposal count. Drawing or selecting a new target clears the previous result immediately.
The generated target comes from an explicitly feasible four-bar, but its exact parameters are not injected into the search. A fit need not recover the generating parameters. Sharp corners and arbitrary hand drawings may not be closely achievable in this family. Poor fits remain visible. This is a kinematic sketch studio, not a fabrication plan.