.geometry "version 0.2";
.l0; 
.text("Peaucellier's Linkage.
Let O be fixed, and let the links OC = OD = l
and AC = CA' = A'D = DA = r.  Then if O is fixed
on a circle and A moves freely on the circle,
A' moves in a straight line.", .l0);
v1 = .free(-0.0928144, 0.122754, .in, "A");
v2 = .free(0.269461, 0.122754, .in, "B");
c1 = .c.vv(v1, v2);
v3 = .vonc(c1, -0.45509, 0.122754, "O");
v5 = .vonc(c1, 0.25742, 0.215378, "A");
v6 = .free(-0.676647, 0.203593);
v7 = .free(-0.676647, -0.0718563);
c3 = .c.ctrvv(v5, v6, v7, .in);
v8 = .free(-0.847305, 0.580838);
v9 = .free(-0.850299, -0.308383);
c4 = .c.ctrvv(v3, v8, v9, .in);
v10 = .v.cc(c3, c4, 1, "C");
v11 = .v.cc(c3, c4, 2, "D");
c5 = .c.vv(v10, v5, .in);
c6 = .c.vv(v11, v5, .in);
v13 = .v.cc(c5, c6, 2, .smear, .dot, "A'");
l1 = .l.vv(v6, v7, "r");
l2 = .l.vv(v8, v9, "l");
l3 = .l.vv(v3, v10);
l4 = .l.vv(v3, v11);
l5 = .l.vv(v11, v5);
l6 = .l.vv(v5, v10);
l7 = .l.vv(v10, v13);
l8 = .l.vv(v13, v11);
.text("Move point A and see that A' moves in a straight
line.  You can also change the lengths of r and l.", .l1);
.text("Construct segments OA' and CD which intersect
at a point E.  We will show that OA\dotmathOA'
is constant.", .l2);
.text("OA\dotmathOA' = (OE-AE)(OE+EA') and AE = EA', so
OA\dotmathOA' = OE\sup{2} - AE\sup{2}.", .l3);
l9 = .l.vv(v3, v13, [2 .in, .blink, .white]);
l10 = .l.vv(v10, v11, [2 .in, .blink, .white]);
v14 = .v.ll(l9, l10, [2 .in, .blink, .white], .dot, "E");
.text("AE\sup{2} + EC\sup{2} = r\sup{2} and
OE\sup{2} + CE\sup{2} = l\sup{2}, both because
of the Pythagorean Theorem, so if we subtract,
OE\sup{2} - AE\sup{2} = l\sup{2} - r\sup{2}.", .l4);
.text("But then we have
OA\dotmathOA' = OE\sup{2} - AE\sup{2} = l\sup{2} - r\sup{2} = constant.", .l5);
.text("Press 'Next' to continue ...", .red, .tol4);
