F = Intersect(xAxis, yAxis)
E = Point(xAxis)
Hexa, EF, DE, CD, BC, AB, k, D, C, B, A = Polygon(F, E, 6)
AD = Segment(A, D)
O = Midpoint(C, E)
CE = Segment(C, E)
c_O = Circle(O, A)
H = Translate(B, Vector[D, O])
BH = Segment(H, B)
AH = Segment(H, A)
K = Rotate(H, (-(90°)), A)
ky = OrthogonalLine(K, AD)
L = Intersect(c_O, ky, 2)
X_d = Point(c_O)
arc_{O} = CircleArc(O, X_d, A)
c_A = Circle(A, L)
P = Intersect(c_A, CE, 1)
X_g = Point(c_A)
arc_A = CircleArc(A, X_g, L)
Bm = Segment(B, Intersect[BC, OrthogonalLine[P, Line[A, P]]])
M = Point(Bm)
G = Mirror(A, EF)
AG = Segment(A, G)
FG = Segment(F, G)
W = Translate(E, Vector[C, P])
N = Mirror(M, AD)
MN = Segment(M, N)
quart_A = CircleArc(A, K, H)
X_L = Point(ky)
KL = Segment(K, X_L)
AP = Segment(A, P)
X = Intersect(AP, MN)
I = Midpoint(M, Mirror[M, AP])
MI = Segment(M, I)
J = Midpoint(N, Mirror[N, AP])
u = Vector(P, A)
T = Translate(J, u)
f = Segment(J, N)
g = Segment(T, A)
S = Rotate(J, (-(90°)), T)
h = Segment(T, S)
R = Translate(S, Vector[(-u)])
i = Segment(S, R)
j = Segment(N, R)
l = Segment(R, W)
m = Segment(E, W)
U = Translate(N, u)
V = Translate(E, u)
n = Segment(U, V)