+
+% z5 = z2 + 0.43 * flare * dir (alpha - 1.5 beta);
+
+ z4 = (0.75 - taille) [z2r, z2l] + whatever * dir (alpha - beta);
+ z4 = (taille_ratio * taille) [z3l, z3r] + whatever * dir (alpha);
+
+ z1r = pos;
+ z2r = z1r + move_away_to * dir (alpha)
+ + (line + turn_to) * dir (alpha + beta);
+ z3r = 0.5 [z2l, z2r] + 0.5 * flare * dir (alpha + beta);
+
+ penpos1 (line, 180 + beta + alpha);
+ penpos2 (flare, alpha);
+ penpos3 (flare, alpha + beta);
+
+ penlabels (1, 2, 3, 4, 5);
+
+ res := z1r{dir (alpha)}
+ .. z2r{dir (180 + alpha - beta)}
+ .. z3r{dir (alpha + 180)}
+ .. z2l{dir (alpha - beta)}
+
+%%% Two versions of the curve: one with z4, the other with z5.
+% .. z5{dir (alpha - beta / 2)}
+
+ .. z4{dir (180 + alpha + beta)}
+ .. z1l{dir (alpha + 180)};
+
+% pickup pencircle;
+% draw res;
+
+ if direction <> 1:
+ res := reverse res;
+ fi;
+
+res
+endgroup
+enddef;
+
+
+def calc_kuulleke (expr w, alpha) =
+begingroup;
+ save beta, gamma;
+
+ beta = (alpha - 90) / 2;
+ gamma = (90 + alpha) / 2;
+
+ penpos1 (w / cosd (alpha), alpha);
+ penpos2 (hair, 90 + beta);
+ penpos3 (hair, gamma - 90);
+
+ z2 = z1l + (1/2 hair / tand ((alpha + 90) / 2)) * dir (beta);
+ z3 = z1r - (1/2 hair / tand ((90 - alpha) / 2)) * dir (gamma);
+ z4 = z1 + kuulleke * dir (alpha - 90);
+endgroup;
+enddef;
+
+
+% should make generic macro?
+%
+def draw_foot (expr xpos) =
+begingroup;
+ clearxy;
+
+ penpos1 (thick, 0);
+ penpos2 (foot_width, 0);
+ penpos3 (hair, -90);
+ penpos4 (hair, 90);
+
+ z1= (xpos, foot_top);
+ z2= (x1, 0);
+ z3r = z2r;
+ z4l = z2l;
+ z5 = (x1, kuulleke);
+
+ penlabels (1, 2, 3, 4);
+
+ fill z1
+ .. {right}z1r{down}
+ .. {right}z3l
+ .. z3r{left}
+ .. z5
+ .. {left}z4l
+ .. z4r{right}
+ .. {up}z1l{right}
+ .. z1
+ .. cycle;
+endgroup;
+enddef;
+