CONST StickWidth = 2, StickColor = Color.Red, CircleWidth = 2, CircleColor = Color.Black; PROC Stick(a, b, c) IS IF R2.Length(a) < 5000 -> SAVE PS IN PS.MoveTo(a); PS.LineTo(b); PS.LineTo(c); PS.SetWidth(StickWidth); PS.SetColor(StickColor); PS.Stroke() END | SKIP FI END; UI PointTool(Stick); PROC Circ(a, b) IS IF R2.Length(R2.Minus(a, b)) < 1000 -> SAVE PS IN Circle.Draw(a, b); PS.SetWidth(CircleWidth); PS.SetColor(CircleColor); PS.Stroke() END | SKIP FI END; UI PointTool(Circ); PROC Circum(a, b, c) IS IF VAR d ~ (0, 0) IN (a, d) CONG (b, d) AND (b, d) CONG (c, d) -> Circ(d, a) END FI END; PROC Cmd0() IS IF VAR ab ~ (-57.179592, -204.83449), ad = (81.03986, 47.784817), bd = (-103.761314, 86.467766), ac = (20.44931, -62.9546), bc = (-69.67913, -126.667694), cd ~ (155.1551, 32.270866) IN Geometry.Colinear(ab, ac, ad) AND Geometry.Colinear(ab, bc, bd) AND Geometry.Colinear(ac, bc, cd) AND Geometry.Colinear(ad, bd, cd) -> Stick(ab, ac, ad); Stick(ab, bc, bd); Stick(cd, ac, bc); Stick(cd, ad, bd); Circum(ab, ac, bc); Circum(ab, bd, ad); Circum(ac, ad, cd); Circum(bc, bd, cd) END FI END;