CONST Duration = 2; PROC Mess(a, b, c, d) IS IF PS.MoveTo(a); PS.CurveTo(b, c, d); PS.CurveTo(b, c, a); PS.CurveTo(b, d, c); PS.CurveTo(a, b, d); PS.CurveTo(c, a, b); PS.CurveTo(d, a, c); PS.CurveTo(d, a, b); PS.CurveTo(d, c, a); PS.LineTo(b); PS.LineTo(d); PS.LineTo(c); PS.LineTo(a); PS.LineTo(d); PS.SetWidth(5); PS.Stroke() FI END; PROC PatT(a, b, c, d, e, t) IS VAR theta = 2 * Math.Pi * t, p = (COS(theta), SIN(theta)) IN Mess(a, b, c, p REL (e, d)) END END; PROC Go(a, b, c, d, e) IS Anim.Play((CLOSE(PatT, a, b, c, d, e), Duration)) END; UI PointTool(Go); PROC Cmd0() IS IF VAR a = (57.56, 469.5), b = (261.3, 411.1), c = (28.78, 294.3), d = (259, 251.1), e = (181.8, 165.4) IN Go(a, b, c, d, e); PS.Reset() END FI END;