CONST Duration = 10; PROC BlockA(a, h) IS IF VAR b ~ (0.04143, -0.1599) REL (a, h), c ~ (0.2942, -0.1599) REL (a, h), d ~ (0.3468, -0.3629) REL (a, h), e ~ (0.1258, -0.4856) REL (a, h), f ~ (0.1673, -0.6455) REL (a, h), g ~ (1.041, -0.1599) REL (a, h), i ~ (0.4912, -0.2827) REL (a, h), j ~ (0.4594, -0.1599) REL (a, h), k ~ (0.7122, -0.1599) REL (a, h) IN a HOR b AND a HOR e AND a HOR f AND c HOR d AND j HOR i AND h HOR g AND (h, a) PARA (b, c) AND (h, a) PARA (b, j) AND (h, a) PARA (b, k) AND (h, a) PARA (b, g) AND (g, f) PARA (e, d) AND (g, f) PARA (e, i) AND (g, f) PARA (e, k) AND (g, f) PARA (e, h) AND (a, h) CONG (g, f) AND (a, b) CONG (c, j) AND (b, c) CONG (j, k) -> 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(BlockA); PROC BlockAatT(a, b, c, t) IS VAR theta = Math.Pi * 2 * t, p = (COS(theta), SIN(theta)) IN BlockA(a, p REL (c, b)) END END; PROC Go(a, b, c) IS Anim.Play((CLOSE(BlockAatT, a, b, c), Duration)) END; UI PointTool(Go); PROC Cmd0() IS IF VAR a = (79.53, 112.3), b = (140.9, 351.9), c = (128.8, 371.7) IN Go(a, b, c); PS.Reset() END FI END;