G = Point(yAxis)
B_1 = Intersect(xAxis, yAxis)
a = Line(B_1, G)
b = OrthogonalLine(G, a)
C = Point(xAxis)
c = Line(C, B_1)
d = OrthogonalLine(C, c)
A = Intersect(b, d)
E = Point(c)
e = OrthogonalLine(E, c)
D = Intersect(b, e)
f = LineBisector(A, D)
G_1 = Intersect(b, f)
g = Circle(G_1, A)
B = Point(g)
h = Line(B, D)
i = Line(B, A)
α = Angle(D, B, A)
k = Circle(B, Segment[G, B_1])
I = Intersect(k, i, 2)
J = Intersect(k, h, 2)
j = OrthogonalLine(I, i)
l = OrthogonalLine(J, h)
K = Intersect(j, l)
poly1, h_1, i_1, k_1, j_1 = Polygon(B, I, K, J)
poly2, b_1, a_1, d_1, c_1 = Polygon(B_1, G, A, C)
L = Point(Circle[E, 2])
n = Segment(E, L)
m = OrthogonalLine(L, c)
p = OrthogonalLine(D, m)
M = Intersect(m, p)
poly3, e_1, f_1, m_1, l_1 = Polygon(E, D, M, L)
q = Line(B_1, C)