CONST CrossWidth = 2, CrossColor = Color.Red, PreWidth = 1.5, PreColor = CrossColor, PostWidth = 2, PostColor = Color.Grey50; PROC Cross(a) IS IF VAR b ~ R2.Plus(a, (-5.309, 0)), c ~ R2.Plus(a, (5.309, 0)), d ~ R2.Plus(a, (0, 5.309)), e ~ R2.Plus(a, (0, -5.309)) IN a = Geometry.Mid(b, c) AND a = Geometry.Mid(d, e) AND e VER d AND b HOR c AND Geometry.CongXY(b, c, d, e) -> PS.MoveTo(d); PS.LineTo(e); PS.MoveTo(b); PS.LineTo(c); PS.Stroke() END FI END; UI PointTool(Cross); PROC DrawCrosses(a, b, c, d, e, f, g, h, i, j, k) IS SAVE PS IN PS.SetColor(PreColor); PS.SetWidth(PreWidth); StrokeA(a, b, c, d, e, f, g, h, i, j, k) END; SAVE PS IN PS.SetColor(CrossColor); PS.SetWidth(CrossWidth); Cross(a); Cross(b); Cross(c); Cross(d); Cross(e); Cross(f); Cross(g); Cross(h); Cross(i); Cross(j); Cross(k) END END; UI PointTool(DrawCrosses); PROC StrokeA(a, b, c, d, e, f, g, h, i, j, k) IS 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.Stroke() END; UI PointTool(StrokeA); PROC SolveA(a0, b0, c0, d0, e0, f0, g0, h0, i0, j0, k0) IS IF VAR a = a0, b ~ b0, c ~ c0, d ~ d0, e ~ e0, f ~ f0, g ~ g0, h ~ h0, i ~ i0, j ~ j0, k ~ k0 IN a HOR b AND a HOR e AND a HOR f AND c HOR d AND i HOR j AND h HOR g AND (h, a) PARA (b, c) AND (h, a) PARA (b, i) AND (h, a) PARA (b, k) AND (h, a) PARA (b, g) AND (g, f) PARA (e, d) AND (g, f) PARA (e, j) AND (g, f) PARA (e, k) AND (g, f) PARA (e, h) AND (a, h) CONG (g, f) AND (b, c) CONG (i, k) AND (a, b) CONG (c, i) -> SAVE PS IN PS.SetColor(PostColor); PS.SetWidth(PostWidth); StrokeA(a, b, c, d, e, f, g, h, i, j, k) END END FI; DrawCrosses(a0, b0, c0, d0, e0, f0, g0, h0, i0, j0, k0) END; UI PointTool(SolveA); PROC Cmd0() IS VAR a ~ (-87.86, -132.7), b ~ (-35.6, -125.9), c ~ (-18.18, -62.2), d ~ (21.96, -62.2), e ~ (34.84, -122.9), f ~ (98.46, -132.7), g ~ (27.27, 138), h ~ (-27.27, 154.7), i ~ (-16.66, -15.17), j ~ (27.27, -7.585), k ~ (3.787, 85.71) IN SolveA(a, b, c, d, e, f, g, h, i, j, k) END END;