PROC A(a, f) IS IF VAR b ~ (0.1888, 0) REL (a, f), c ~ (0.3193, 0.3418) REL (a, f), d ~ (0.6807, 0.3418) REL (a, f), e ~ (0.8112, 0) REL (a, f), g ~ (0.5944, 1.062) REL (a, f), h ~ (0.4056, 1.062) REL (a, f), i ~ (0.6134, 0.5181) REL (a, f), j ~ (0.3866, 0.5181) REL (a, f), k ~ (0.5, 0.815) REL (a, f) IN PS.MoveTo(a); PS.LineTo(b); PS.LineTo(c); PS.LineTo(d); PS.LineTo(e); PS.LineTo(f); PS.LineTo(g); PS.LineTo(h); PS.Close(); PS.MoveTo(i); PS.LineTo(j); PS.LineTo(k); PS.Close(); PS.Fill() END FI END; UI PointTool(A); CONST Rad = 100; PROC AT(center, t) IS VAR p, theta IN theta := 2 * Math.Pi * t; p := R2.Plus(center, (Rad * COS(theta), Rad * SIN(theta))); A(center, p) END END; PROC Go(a) IS Anim.Play((CLOSE(AT, a), 1)) END; UI PointTool(Go); PROC Cmd0() IS IF VAR a ~ (128, 148.7) IN Go(a) END FI END;