.geometry "version 0.2";
.l0; 
.text("Construct a regular heptadecagon --
a 17-sided figure.", .l0);
.text("Begin with a circle and two of
its perpendicular diameters", .l1);
v0 = .pinned(0, 0, [.in, .blink, 11 .white, .in], "O");
v1 = .pinned(0, 0.9, [.in, .blink, 11 .white, .in], "N");
v2 = .pinned(-0.9, 0, [.in, .blink, 11 .white, .in], "W");
v3 = .pinned(0.9, 0, [.in, .blink, 6 .white, 4 .in, .white, .in], "E");
v4 = .pinned(0, -0.9, [.in, .blink, 11 .white, .in], "S");
c1 = .c.vv(v0, v3, [.in, .blink, 11 .white, .in]);
l1 = .l.vv(v1, v4, [.in, .blink, 11 .white, .in]);
l2 = .l.vv(v2, v3, [.in, .blink, 11 .white, .in]);
v5 = .v.vvmid(v1, v0, [2 .in, .blink, .in]);
.text("By successive subdivision, find a
point A one quarter of the way from the
center to the top of the circle", .l2);
v6 = .v.vvmid(v5, v0, [2 .in, .blink, 10 .white, .in], "A");
.text("Draw a circle centered at A and passing
through point E", .l3);
c2 = .c.vv(v6, v3, [3 .in, .blink, 9 .white, .in]);
.text("Bisect \angleEAS twice.  This line
intersects the horizontal diameter at B", .l4);
v7 = .v.lc(l1, c2, 2, .in);
v8 = .v.vvvbisect(v7, v6, v3, .in);
v9 = .v.vvvbisect(v0, v6, v8, .in);
l3 = .l.vv(v6, v9, [4 .in, .blink, 8 .white, .in]);
v10 = .v.ll(l2, l3, [4 .in, .blink, 8 .white, .in], "B");
l4 = .l.vlperp(v6, l3, .in);
v11 = .vonl(l4, -0.34539, 0.106134, .in);
v12 = .v.vvvbisect(v11, v6, v10, .in);
.text("Now construct a 45 degree angle from AB
that passes through the line EW at C", .l5);
l5 = .l.vv(v6, v12, [5 .in, .blink, 7 .white, .in]);
v13 = .v.ll(l2, l5, [5 .in, .blink, 7 .white, .in], "C");
v14 = .v.vvmid(v13, v3, .in);
.text("Construct the circle with EC as diameter that
hits line NS at D and F", .l6);
c3 = .c.vv(v14, v13, [6 .in, .blink, 6 .white, .in]);
v15 = .v.lc(l1, c3, 1, [6 .in, .blink, 6 .white, .in], "D");
v16 = .v.lc(l1, c3, 2, [6 .in, .blink, 6 .white, .in], "F");
.text("Construct the circle centered at B
passing through D (or F).", .l7);
c4 = .c.vv(v10, v15, [7 .in, .blink, 5 .white, .in]);
.text("Construct lines parallel to NS and tangent
to this new circle.  They will hit the original
circle at points 4, 6, 13, and 15.", .l8);
v17 = .v.lc(l2, c4, 2, [8 .in, .blink, 4 .white, .in]);
v18 = .v.lc(l2, c4, 1, [8 .in, .blink, 4 .white, .in]);
l6 = .l.vlperp(v17, l2, [8 .in, .blink, 4 .white, .in], .longline);
l7 = .l.vlperp(v18, l2, [8 .in, .blink, 4 .white, .in], .longline);
v19 = .v.lc(l6, c1, 1, [8 .in, .blink, .white], "4");
v20 = .v.lc(l7, c1, 1, [8 .in, .blink, .white], "6");
v21 = .v.lc(l7, c1, 2, [8 .in, .blink, .white], "13");
v22 = .v.lc(l6, c1, 2, [8 .in, .blink, .white], "15");
vvv = .pinned(0.9, 0, [8 .in, .blink, 3 .white, .in, .white], "1");
v23 = .v.vvvbisect(v19, v0, v20, .in);
l9 = .l.vv(v0, v23, .in, .longline);
.text("Given the locations of vertices 1, 4,
6, 13, and 15, find the rest of the
heptadecagon vertices.", .l9);
v24 = .v.lc(l9, c1, 2, [9 .in, .blink, .white], "5");
c5 = .c.vv(v20, v24, .in);
c6 = .c.vv(v19, v24, .in);
v25 = .v.cc(c1, c6, 1, [9 .in, .blink, .white], "3");
v26 = .v.cc(c1, c5, 2, [9 .in, .blink, .white], "7");
c7 = .c.vv(v3, v25, .in);
v27 = .v.cc(c1, c7, 1, [9 .in, .blink, .white], "16");
c8 = .c.vv(v25, v19, .in);
v28 = .v.cc(c1, c8, 1, [9 .in, .blink, .white], "2");
c9 = .c.vv(v3, v28, .in);
v29 = .v.cc(c1, c9, 1, [9 .in, .blink, .white], "17");
c10 = .c.vv(v26, v20, .in);
c11 = .c.vv(v26, v24, .in);
c12 = .c.vv(v26, v19, .in);
c13 = .c.vv(v26, v25, .in);
c14 = .c.vv(v26, v28, .in);
c15 = .c.vv(v26, v29, .in);
v30 = .v.cc(c1, c15, 2, [9 .in, .blink, .white], "14");
v31 = .v.cc(c1, c14, 2, [9 .in, .blink, .white], "12");
v32 = .v.cc(c1, c13, 2, [9 .in, .blink, .white], "11");
v33 = .v.cc(c1, c12, 2, [9 .in, .blink, .white], "10");
v34 = .v.cc(c1, c11, 2, [9 .in, .blink, .white], "9");
v35 = .v.cc(c1, c10, 2, [9 .in, .blink, .white], "8");
.text("Now we have 17 equally-spaced
vertices.", .l10);
.text("Connect them to make the
regular heptadecagon.", .l11);
.text("Press 'Next' to continue ...", .red, .tol10);
l8 = .l.vv(v3, v28, [11 .in, .blink, .white]);
l10 = .l.vv(v28, v25, [11 .in, .blink, .white]);
l11 = .l.vv(v25, v19, [11 .in, .blink, .white]);
l12 = .l.vv(v19, v24, [11 .in, .blink, .white]);
l13 = .l.vv(v24, v20, [11 .in, .blink, .white]);
l14 = .l.vv(v20, v26, [11 .in, .blink, .white]);
l15 = .l.vv(v26, v35, [11 .in, .blink, .white]);
l16 = .l.vv(v35, v34, [11 .in, .blink, .white]);
l17 = .l.vv(v34, v33, [11 .in, .blink, .white]);
l18 = .l.vv(v33, v32, [11 .in, .blink, .white]);
l19 = .l.vv(v32, v31, [11 .in, .blink, .white]);
l20 = .l.vv(v31, v21, [11 .in, .blink, .white]);
l21 = .l.vv(v21, v30, [11 .in, .blink, .white]);
l22 = .l.vv(v30, v22, [11 .in, .blink, .white]);
l23 = .l.vv(v22, v27, [11 .in, .blink, .white]);
l24 = .l.vv(v27, v29, [11 .in, .blink, .white]);
l25 = .l.vv(v29, v3, [11 .in, .blink, .white]);
l26 = .l.vv(v3, v6, .blink, .l4);
l27 = .l.vv(v6, v4, .blink, .l4);
l28 = .l.vv(v6, v8, .blink, .l4, .ray12);
ang1 = .a.vvv(v13, v6, v10, .blink, .l5, "45\degrees");
