The triple generation theorem
Author: C J Sangwin
Date: 29 Jan 2007

This result concerns the general four-bar linkage ABCD, where the point of interest P, is offset from the middle linkage BC.  We consider the locus of the point P as the linkage ABCD moved.  The remarkable triple generation theorem says there are in fact three general linkages that produce each such locus.    You can move the point B, along the circle on which it is constrained.  Notice that the point Q does not move.  In fact it is not constrained to remain in one place, but does so as a consequence of the triple generation theorem.  Point D can be moved to create a different setup.    Only small movements are possible on this worksheet, and the lengths of AB(P)CD are fixed.

From the linkage above we notice the four parallelograms, which explain show to make the other two linkage from AB(P)CD.  By similarity.

A = Intersect(xAxis, yAxis)
D = Point(xAxis)
a = 3.8
c = Circle(A, a)
b = 2.5
d = Circle(D, b)
B = Point(c)
e = 2
f = Circle(B, e)
C = Intersect(d, f, 1)
g = Segment(A, B)
i = Segment(C, D)
j = 3
k = Circle(B, j)
l = 3
p = Circle(A, j)
m = 2.8
q = Circle(C, m)
P = Intersect(k, q, 1)
R_1, c_1, p_1, q_1 = Polygon(P, B, C)
h = Circle(P, a)
D_1 = Intersect(p, h, 1)
n = Segment(A, D_1)
s = Circle(P, b)
t = Circle(D, m)
E = Intersect(s, t, 1)
b_1 = Segment(E, D)
o: a j / e
d_1 = Circle(D_1, o)
u: a m / e
e_1 = Circle(P, u)
F = Intersect(d_1, e_1, 1)
v: b j / e
f_1 = Circle(P, v)
w: b m / e
g_1 = Circle(E, w)
G = Intersect(f_1, g_1, 1)
S, p_2, f_2, d_2 = Polygon(F, D_1, P)
T, e_2, g_2, p_3 = Polygon(G, P, E)
r: b j / e
h_1 = Circle(F, r)
z: a m / e
k_1 = Circle(G, z)
Q = Intersect(h_1, k_1, 1)
a_1 = Segment(F, Q)
i_1 = Segment(Q, G)
loc1 = Locus(P, B)
j_1 = Line(A, D)