Tool: Rotate Point by Angle (command RotateH)
Click the point, input the angle then the click the center point.
Input: B, b, A
Output: G

A' = Mirror(A, Circle[(0, 0), 1])
e = Circle(Midpoint[A', A], A)
C = Mirror((0, 0), e)
f = Circle(Midpoint[(0, 0), C], C)
d = Circle((0, 0), A)
E = Intersect(d, f, 2)
E' = Mirror(E, Circle[(0, 0), 1])
D = If((Distance[A, (0, 0)]  <  1) ∧ (Distance[B, (0, 0)] ≤ 1), Intersect[d, f, 1])
g = Circle(E', E, D)
B1 = Mirror(B, g)
B2 = Rotate(B1, b, (0, 0))
h = Circle(A', A, B)
F = If(Mirror[(0, 0), Line[D, E]] ≟ (0, 0), Mirror[B2, Line[D, E]], Mirror[B2, g])
G = If(A ≟ (0, 0) ∧ (Distance[B, (0, 0)] ≤ 1), Rotate[B, b, A], If[Mirror[(0, 0), Line[A, B]] ≟ (0, 0), Mirror[F, Line[A, B]], Mirror[F, h]])

Tool: Compass (command CompassH)
Click on the edges of the segment, then the origin of the circle.
Input: C, D, E
Output: k_1

m = Line((0, 0), E)
D1 = Mirror(E, Circle[(0, 0), 1])
G3 = Midpoint(E, D1)
d = Circle(G3, E)
C2 = Mirror(C, d)
H = Midpoint(C, C2)
f = Circle(H, C)
e_1 = Circle(E, C)
d_1 = Circle(C, E)
W, Z = Intersect(d_1, f)
W1 = Mirror(W, Circle[(0, 0), 1])
f_1 = Circle(W1, W, Z)
A_1, B_1 = Intersect(Circle[(0, 0), 1], f_1)
A, B = Intersect(Circle[(0, 0), 1], f_1)
a = Line(C, E)
b = OrthogonalLine((0, 0), a)
C3 = Mirror(C, b)
J_1, K_1 = Intersect(Circle[(0, 0), 1], b)
J, K = Intersect(Circle[(0, 0), 1], b)
E1 = Mirror((0, 0), a)
i = Line((0, 0), C)
C1 = Mirror(C, Circle[(0, 0), 1])
k = Circle(C1, C, E)
P = Center(k)
n = Line(P, C)
q = OrthogonalLine(C, n)
R = Intersect(m, q)
t = Circle(R, C)
j = Line(P, E)
l = OrthogonalLine(E, j)
Q = Intersect(i, l)
p = Circle(Q, E)
S, T = Intersect(t, p)
S1 = Mirror(S, Circle[(0, 0), 1])
s = Circle(S1, S, T)
U_1, V_1 = Intersect(Circle[(0, 0), 1], s)
U, V = Intersect(Circle[(0, 0), 1], s)
F = Midpoint(C, C1)
e = Circle(F, C)
D2 = Mirror(E, e)
I = Midpoint(E, D2)
g = Circle(I, D2)
L, M = Intersect(f, g)
L1 = Mirror(L, Circle[(0, 0), 1])
h = Circle(L1, L, M)
N_1, O_1 = Intersect(Circle[(0, 0), 1], h)
N, O = Intersect(Circle[(0, 0), 1], h)
C_1, D_1 = Intersect(e_1, g)
C4 = Mirror(C_1, Circle[(0, 0), 1])
c_1 = Circle(C4, C_1, D_1)
E_2, F_2 = Intersect(Circle[(0, 0), 1], c_1)
E_1, F_1 = Intersect(Circle[(0, 0), 1], c_1)
g_1 = If(C ≟ (0, 0) ∧ (Distance[E, (0, 0)]  <  1), CircumcircleArc[A, W, B], If[(Distance[C, (0, 0)]  <  1) ∧ E ≟ (0, 0), CircumcircleArc[E_1, C_1, F_1], If[(0, 0) ≟ E1 ∧ C ≟ C3 ∧ (Distance[C, (0, 0)]  <  1) ∧ (Distance[E, (0, 0)]  <  1), CircumcircleArc[K, (0, 0), J], If[(0, 0) ≟ E1 ∧ (Distance[C, (0, 0)]  <  1) ∧ (Distance[E, (0, 0)]  <  1), CircumcircleArc[N, L, O], If[(Distance[C, (0, 0)]  <  1) ∧ (Distance[E, (0, 0)]  <  1), CircumcircleArc[U, S, V]]]]])
G = If(C3 ≟ E, Mirror[D, LineBisector[C, E]], Mirror[D, g_1])
G1 = Mirror(G, Circle[(0, 0), 1])
h_1 = Circle(E, G, G1)
a_1 = Line((0, 0), E)
G_1 = Center(h_1)
b_1 = Line(G_1, G)
i_1 = OrthogonalLine(G, b_1)
H_1 = Intersect(a_1, i_1)
k_1 = If(E ≟ (0, 0) ∧ (Distance[E, (0, 0)]  <  1) ∧ (Distance[C, (0, 0)]  <  1) ∧ (Distance[D, (0, 0)]  <  1), Circle[E, G], If[(Distance[E, (0, 0)]  <  1) ∧ (Distance[C, (0, 0)]  <  1) ∧ (Distance[D, (0, 0)]  <  1), Circle[H_1, G]])

Tool: Circle (command CircleH)
Click the center, then at another point.
Input: A, B
Output: q

A1 = Mirror(A, Circle[(0, 0), 1])
B1 = Mirror(B, Circle[(0, 0), 1])
a = Line((0, 0), A)
b = Line((0, 0), B)
d = OrthogonalLine(A, a)
e = OrthogonalLine(B, b)
D = Intersect(d, e)
f = Line(A, B)
O' = Mirror((0, 0), f)
g = If(Distance[A, (0, 0)] ≟ 1 ∧ Distance[B, (0, 0)] ≟ 1, Circle[D, A], If[Distance[A, (0, 0)] ≟ 1 ∧ (Distance[B, (0, 0)]  <  1), Circle[B1, B, A], If[(Distance[A, (0, 0)]  <  1) ∧ (Distance[B, (0, 0)] ≤ 1), Circle[A1, A, B]]])
C = Center(g)
h = Line(C, B)
i = OrthogonalLine(B, h)
G = Intersect(a, i)
I = Midpoint(A, A1)
p = Circle(I, A)
B' = Mirror(B, p)
J = Midpoint(B', B)
q = If(A ≟ (0, 0) ∧ (Distance[B, (0, 0)]  <  1), Circle[A, B], If[(0, 0) ≟ O' ∧ Distance[A, (0, 0)] ≟ 1 ∧ (Distance[(0, 0), B]  <  1), Circle[Midpoint[A, B], B], If[O' ≟ (0, 0), Circle[J, B], Circle[G, B]]])

Tool: Circle Given Center and Radius (command CircleCR)
Click the center then input the radius. Is recommended a radius smaller than 10.
Input: C, num
Output: s

b: (exp(num) - 1) / (1 + exp(num))
d = Circle((0, 0), b)
C1 = Mirror(C, Circle[(0, 0), 1])
f = Line((0, 0), C)
E = Midpoint(C, C1)
g = Circle(E, C)
D1 = Mirror((0, 0), g)
Dm = Midpoint((0, 0), D1)
h = Circle(Dm, (0, 0))
k = Circle((0, 0), C)
F, G = Intersect(k, h)
F1 = Mirror(F, Circle[(0, 0), 1])
med = Circle(F1, F, G)
H = Intersect(d, xAxis, 1)
H1 = Mirror(H, med)
q = Circle(C1, C, H1)
I = Center(q)
i = Line(I, H1)
j = OrthogonalLine(H1, i)
J = Intersect(f, j)
s = If(C ≟ (0, 0), Circle[(0, 0), b], If[Distance[C, (0, 0)] ≥ 1, Circle[C, C], Circle[J, H1]])

Tool: Poincaré Disk (command Disk)
Click anywhere to create the disk. For best viewing, zoom with scroll mouse and use shift + drag. Alternatively, you can create your own circle centered at origin and radius equals 1.
Input: A
Output: c, b, a

B = If(A ≠ (0, 0), Intersect[Line[(0, 0), A], xAxis], (0, 0))
c_1 = Circle(B, 1)
c = Circle(B, 1)
C, D = Intersect(c, xAxis)
E, F = Intersect(c, yAxis)
a = Segment(C, D)
b = Segment(E, F)

Tool: Distance (command DistanceH)
Click two points.
Input: A, B
Output: l, texto1

A1 = Mirror(A, Circle[(0, 0), 1])
B1 = Mirror(B, Circle[(0, 0), 1])
a = Line((0, 0), A)
b = Line((0, 0), B)
d = OrthogonalLine(A, a)
e = OrthogonalLine(B, b)
C = Intersect(d, e)
f = If(Distance[A, (0, 0)] ≟ 1 ∧ Distance[B, (0, 0)] ≟ 1, Circle[C, A], If[(Distance[A, (0, 0)]  <  1) ∧ Distance[B, (0, 0)] ≟ 1, Circle[A1, A, B], If[(Distance[A, (0, 0)] ≤ 1) ∧ (Distance[B, (0, 0)]  <  1), Circle[B1, B, A]]])
g = Segment(A, Intersect[Circle[(0, 0), 1], f, 1])
h = Segment(A, Intersect[Circle[(0, 0), 1], f, 2])
i = Segment(B, Intersect[Circle[(0, 0), 1], f, 1])
j = Segment(B, Intersect[Circle[(0, 0), 1], f, 2])
E = Intersect(h, i)
F = Intersect(g, j)
k = Line(B, A)
Oab = Mirror((0, 0), k)
D = If(Oab ≟ (0, 0) ∧ (Distance[A, (0, 0)] ≤ 1) ∧ (Distance[B, (0, 0)] ≤ 1), Intersect[Circle[(0, 0), 1], f, 1], If[Defined[E], Intersect[Circle[(0, 0), 1], f, 1], If[Defined[F], Intersect[Circle[(0, 0), 1], f, 2]]])
G = If(Oab ≟ (0, 0) ∧ (Distance[A, (0, 0)] ≤ 1) ∧ (Distance[B, (0, 0)] ≤ 1), Intersect[Circle[(0, 0), 1], f, 2], If[Defined[E], Intersect[Circle[(0, 0), 1], f, 2], If[Defined[F], Intersect[Circle[(0, 0), 1], f, 1]]])
AD = Segment(A, D)
AG = Segment(A, G)
BD = Segment(B, D)
BG = Segment(B, G)
l = If(A ≟ B ∧ (Distance[A, (0, 0)] ≤ 1), 0, If[Distance[A, (0, 0)] ≟ 1 ∨ Distance[B, (0, 0)] ≟ 1, Infinity, abs(log((AG * BD / ((AD * BG)))))])
texto1: l + ""

Tool: Equidistant Curve (command Equidistant)
Click two points of the line, then the point where the curve will pass by.
Input: A, B, C
Output: h

A1 = Mirror(A, Circle[(0, 0), 1])
B1 = Mirror(B, Circle[(0, 0), 1])
a = Line((0, 0), A)
b = Line((0, 0), B)
d = OrthogonalLine(A, a)
e = OrthogonalLine(B, b)
D = Intersect(d, e)
f = If(Distance[A, (0, 0)] ≟ 1 ∧ Distance[B, (0, 0)] ≟ 1, Circle[D, A], If[Distance[A, (0, 0)] ≟ 1 ∧ (Distance[B, (0, 0)]  <  1), Circle[B1, B, A], If[(Distance[A, (0, 0)]  <  1) ∧ (Distance[B, (0, 0)] ≤ 1), Circle[A1, A, B]]])
g = Line(A, B)
Oab = Mirror((0, 0), g)
E = If((0, 0) ≟ Oab ∧ (Distance[A, (0, 0)] ≤ 1) ∧ (Distance[B, (0, 0)] ≤ 1), Intersect[Circle[(0, 0), 1], g, 1], Intersect[f, Circle[(0, 0), 1], 1])
F = If((0, 0) ≟ Oab ∧ (Distance[A, (0, 0)] ≤ 1) ∧ (Distance[B, (0, 0)] ≤ 1), Intersect[Circle[(0, 0), 1], g, 2], Intersect[f, Circle[(0, 0), 1], 2])
h = If(Distance[C, (0, 0)]  <  1, CircumcircleArc[E, C, F])

Tool: Perpendicular Bisector (command PerpendicularBisectorH)
Click two points.
Input: C, D
Output: g_1

C1 = Mirror(C, Circle[(0, 0), 1])
D1 = Mirror(D, Circle[(0, 0), 1])
F = Midpoint(C, C1)
G = Midpoint(D, D1)
d = Circle(G, D)
e = Circle(F, C)
D2 = Mirror(D, e)
C2 = Mirror(C, d)
H = Midpoint(C, C2)
I = Midpoint(D, D2)
f = Circle(H, C)
g = Circle(I, D2)
a = Line(C, D)
E1 = Mirror((0, 0), a)
b = OrthogonalLine((0, 0), a)
C3 = Mirror(C, b)
L, M = Intersect(f, g)
L1 = Mirror(L, Circle[(0, 0), 1])
h = Circle(L1, L, M)
k = Circle(C1, C, D)
P = Center(k)
i = Line((0, 0), C)
j = Line(P, D)
l = OrthogonalLine(D, j)
Q = Intersect(i, l)
p = Circle(Q, D)
m = Line((0, 0), D)
n = Line(P, C)
q = OrthogonalLine(C, n)
R = Intersect(m, q)
t = Circle(R, C)
S, T = Intersect(t, p)
S1 = Mirror(S, Circle[(0, 0), 1])
s = Circle(S1, S, T)
d_1 = Circle(C, D)
e_1 = Circle(D, C)
W, Z = Intersect(d_1, f)
W1 = Mirror(W, Circle[(0, 0), 1])
f_1 = Circle(W1, W, Z)
C_1, D_1 = Intersect(e_1, g)
C4 = Mirror(C_1, Circle[(0, 0), 1])
c_1 = Circle(C4, C_1, D_1)
A_1, B_1 = Intersect(Circle[(0, 0), 1], f_1)
A, B = Intersect(Circle[(0, 0), 1], f_1)
E_2, F_2 = Intersect(Circle[(0, 0), 1], c_1)
E_1, F_1 = Intersect(Circle[(0, 0), 1], c_1)
J_1, K_1 = Intersect(Circle[(0, 0), 1], b)
J, K = Intersect(Circle[(0, 0), 1], b)
N_1, O_1 = Intersect(Circle[(0, 0), 1], h)
N, O = Intersect(Circle[(0, 0), 1], h)
U_1, V_1 = Intersect(Circle[(0, 0), 1], s)
U, V = Intersect(Circle[(0, 0), 1], s)
g_1 = If(C ≟ (0, 0) ∧ (Distance[D, (0, 0)]  <  1), CircumcircleArc[A, W, B], If[(Distance[C, (0, 0)]  <  1) ∧ D ≟ (0, 0), CircumcircleArc[E_1, C_1, F_1], If[(0, 0) ≟ E1 ∧ C ≟ C3 ∧ (Distance[C, (0, 0)]  <  1) ∧ (Distance[D, (0, 0)]  <  1), CircumcircleArc[K, (0, 0), J], If[(0, 0) ≟ E1 ∧ (Distance[C, (0, 0)]  <  1) ∧ (Distance[D, (0, 0)]  <  1), CircumcircleArc[N, L, O], If[(Distance[C, (0, 0)]  <  1) ∧ (Distance[D, (0, 0)]  <  1), CircumcircleArc[U, S, V]]]]])

Tool: Parallel Lines (command ParallelLines)
Click two points of the line, then in any point.
Input: C, D, E
Output: h_1, g_1

D1 = Mirror(D, Circle[(0, 0), 1])
e = Circle(D1, D, C)
C1 = Mirror(C, Circle[(0, 0), 1])
d = Circle(C1, C, D)
a = Line(C, D)
F1 = Mirror((0, 0), a)
f = Line((0, 0), C)
g = OrthogonalLine(C, f)
b = Line((0, 0), D)
h = OrthogonalLine(D, b)
I = Intersect(g, h)
k = Circle(I, C)
H = If((0, 0) ≟ F1 ∧ (Distance[C, (0, 0)] ≤ 1) ∧ (Distance[D, (0, 0)] ≤ 1), Intersect[Circle[(0, 0), 1], a, 2], If[Distance[C, (0, 0)] ≟ 1 ∧ Distance[D, (0, 0)] ≟ 1, Intersect[k, Circle[(0, 0), 1], 2], If[Distance[C, (0, 0)] ≟ 1 ∧ (Distance[D, (0, 0)]  <  1), Intersect[e, Circle[(0, 0), 1], 2], If[(Distance[C, (0, 0)] ≤ 1) ∧ (Distance[D, (0, 0)] ≤ 1), Intersect[d, Circle[(0, 0), 1], 2]]]])
c_1 = Line(H, E)
R_1, S_1 = Intersect(Circle[(0, 0), 1], c_1)
R, S = Intersect(Circle[(0, 0), 1], c_1)
G = If((0, 0) ≟ F1 ∧ (Distance[C, (0, 0)] ≤ 1) ∧ (Distance[D, (0, 0)] ≤ 1), Intersect[Circle[(0, 0), 1], a, 1], If[Distance[C, (0, 0)] ≟ 1 ∧ Distance[D, (0, 0)] ≟ 1, Intersect[k, Circle[(0, 0), 1], 1], If[Distance[C, (0, 0)] ≟ 1 ∧ (Distance[D, (0, 0)]  <  1), Intersect[e, Circle[(0, 0), 1], 1], If[(Distance[C, (0, 0)] ≤ 1) ∧ (Distance[D, (0, 0)] ≤ 1), Intersect[d, Circle[(0, 0), 1], 1]]]])
j = Line((0, 0), H)
l = Line((0, 0), G)
m = OrthogonalLine(H, j)
n = OrthogonalLine(G, l)
p = Line((0, 0), E)
q = OrthogonalLine(E, p)
L = Intersect(m, q)
M = Intersect(n, q)
s = Circle(M, E)
t = Circle(L, E)
N = Midpoint(G, E)
O = Midpoint(H, E)
a_1 = Ray(M, N)
b_1 = Ray(L, O)
P = Intersect(t, b_1, 1)
Q = Intersect(s, a_1, 1)
d_1 = Line(G, E)
V = Midpoint(S, R)
F2 = Mirror((0, 0), c_1)
F3 = Mirror((0, 0), d_1)
W = Intersect(Circle[(0, 0), 1], d_1, 2)
Z = Intersect(Circle[(0, 0), 1], d_1, 1)
A_1 = Midpoint(Z, W)
E1 = Mirror(E, Circle[(0, 0), 1])
e_1 = Circle(H, E, E1)
f_1 = Circle(G, E, E1)
B_2, C_2 = Intersect(Circle[(0, 0), 1], e_1)
B_1, C_1 = Intersect(Circle[(0, 0), 1], e_1)
D_2, E_2 = Intersect(Circle[(0, 0), 1], f_1)
D_1, E_1 = Intersect(Circle[(0, 0), 1], f_1)
h_1 = If(Distance[E, (0, 0)] ≟ 1, CircumcircleArc[G, Q, E], If[(0, 0) ≟ F3 ∧ (Distance[E, (0, 0)] ≤ 1), CircumcircleArc[W, A_1, Z], If[Distance[E, (0, 0)]  <  1, CircumcircleArc[D_1, E, E_1]]])
g_1 = If(Distance[E, (0, 0)] ≟ 1, CircumcircleArc[H, P, E], If[(0, 0) ≟ F2 ∧ (Distance[E, (0, 0)] ≤ 1), CircumcircleArc[R, V, S], If[Distance[E, (0, 0)]  <  1, CircumcircleArc[B_1, E, C_1]]])

Tool: Tilling
Create two selectors "m" and "n", min 3, max 10, increment 1. Click the Disk, type "m" the number of polygons per vertex, enter, then "n" number of sides, such that 1/m+1/n<1/2.
Input: c, m, n
Output: texto1, B23, B24, B25, B26, B27, C23, C24, C25, C26, C27

a = If(m > (2 * n / (n - 2)), acosh((cos(3.141592653589793 / m) * cos(3.141592653589793 / n) / ((sin(3.141592653589793 / m) * sin(3.141592653589793 / n))))))
d: (exp(a) - 1) / (exp(a) + 1)
f = Circle((0, 0), d)
A = Intersect(f, xAxis, 2)
B1 = Sequence(Rotate[A, ((360 * ° / n) * i)], i, 1, n)
B3 = Sequence(If[Mirror[(0, 0), Line[Element[B1, 1], Element[B1, 2]]] ≟ (0, 0), Mirror[Element[B1, i], Line[Element[B1, 1], Element[B1, 2]]], Mirror[Element[B1, i], Circle[Mirror[Element[B1, 1], Circle[(0, 0), 1]], Element[B1, 1], Element[B1, 2]]]], i, 1, n)
C3 = Sequence(If[Mirror[(0, 0), Line[Element[B3, 1], Element[B3, n]]] ≟ (0, 0), Mirror[Element[B3, i], Line[Element[B3, 1], Element[B3, n]]], Mirror[Element[B3, i], Circle[Mirror[Element[B3, 1], Circle[(0, 0), 1]], Element[B3, 1], Element[B3, n]]]], i, 1, n)
B4 = Sequence(If[Mirror[(0, 0), Line[Element[C3, 1], Element[C3, 2]]] ≟ (0, 0), Mirror[Element[C3, i], Line[Element[C3, 1], Element[C3, 2]]], Mirror[Element[C3, i], Circle[Mirror[Element[C3, 1], Circle[(0, 0), 1]], Element[C3, 1], Element[C3, 2]]]], i, 1, n)
C4 = Sequence(If[Mirror[(0, 0), Line[Element[B4, 1], Element[B4, n]]] ≟ (0, 0), Mirror[Element[B4, i], Line[Element[B4, 1], Element[B4, n]]], Mirror[Element[B4, i], Circle[Mirror[Element[B4, 1], Circle[(0, 0), 1]], Element[B4, 1], Element[B4, n]]]], i, 1, n)
B5 = Sequence(If[Mirror[(0, 0), Line[Element[C4, 1], Element[C4, 2]]] ≟ (0, 0), Mirror[Element[C4, i], Line[Element[C4, 1], Element[C4, 2]]], Mirror[Element[C4, i], Circle[Mirror[Element[C4, 1], Circle[(0, 0), 1]], Element[C4, 1], Element[C4, 2]]]], i, 1, n)
C5 = Sequence(If[Mirror[(0, 0), Line[Element[B5, 1], Element[B5, n]]] ≟ (0, 0), Mirror[Element[B5, i], Line[Element[B5, 1], Element[B5, n]]], Mirror[Element[B5, i], Circle[Mirror[Element[B5, 1], Circle[(0, 0), 1]], Element[B5, 1], Element[B5, n]]]], i, 1, n)
B13 = Sequence(Sequence[Rotate[Element[B3, i], ((2 * 3.141592653589793 / n) * j)], i, 1, n], j, 1, n)
C13 = Sequence(Sequence[Rotate[Element[C3, i], ((2 * 3.141592653589793 / n) * j)], i, 1, n], j, 1, n)
B14 = Sequence(Sequence[Rotate[Element[B4, i], ((2 * 3.141592653589793 / n) * j)], i, 1, n], j, 1, n)
C14 = Sequence(Sequence[Rotate[Element[C4, i], ((2 * 3.141592653589793 / n) * j)], i, 1, n], j, 1, n)
B15 = Sequence(Sequence[Rotate[Element[B5, i], ((2 * 3.141592653589793 / n) * j)], i, 1, n], j, 1, n)
C15 = Sequence(Sequence[Rotate[Element[C5, i], ((2 * 3.141592653589793 / n) * j)], i, 1, n], j, 1, n)
B6 = Sequence(If[Mirror[(0, 0), Line[Element[C5, 1], Element[C5, 2]]] ≟ (0, 0), Mirror[Element[C5, i], Line[Element[C5, 1], Element[C5, 2]]], Mirror[Element[C5, i], Circle[Mirror[Element[C5, 1], Circle[(0, 0), 1]], Element[C5, 1], Element[C5, 2]]]], i, 1, n)
C6 = Sequence(If[Mirror[(0, 0), Line[Element[B6, 1], Element[B6, n]]] ≟ (0, 0), Mirror[Element[B6, i], Line[Element[B6, 1], Element[B6, n]]], Mirror[Element[B6, i], Circle[Mirror[Element[B6, 1], Circle[(0, 0), 1]], Element[B6, 1], Element[B6, n]]]], i, 1, n)
B16 = Sequence(Sequence[Rotate[Element[B6, i], ((2 * 3.141592653589793 / n) * j)], i, 1, n], j, 1, n)
C16 = Sequence(Sequence[Rotate[Element[C6, i], ((2 * 3.141592653589793 / n) * j)], i, 1, n], j, 1, n)
B7 = Sequence(If[Mirror[(0, 0), Line[Element[C6, 1], Element[C6, 2]]] ≟ (0, 0), Mirror[Element[C6, i], Line[Element[C6, 1], Element[C6, 2]]], Mirror[Element[C6, i], Circle[Mirror[Element[C6, 1], Circle[(0, 0), 1]], Element[C6, 1], Element[C6, 2]]]], i, 1, n)
C7 = Sequence(If[Mirror[(0, 0), Line[Element[B7, 1], Element[B7, n]]] ≟ (0, 0), Mirror[Element[B7, i], Line[Element[B7, 1], Element[B7, n]]], Mirror[Element[B7, i], Circle[Mirror[Element[B7, 1], Circle[(0, 0), 1]], Element[B7, 1], Element[B7, n]]]], i, 1, n)
B17 = Sequence(Sequence[Rotate[Element[B7, i], ((2 * 3.141592653589793 / n) * j)], i, 1, n], j, 1, n)
C17 = Sequence(Sequence[Rotate[Element[C7, i], ((2 * 3.141592653589793 / n) * j)], i, 1, n], j, 1, n)
B23 = Union({Sequence[Sequence[If[Mirror[(0, 0), Line[Element[Element[B13, j], i], Element[Element[B13, j], Mod[i, n] + 1]]] ≠ (0, 0), CircumcircleArc[Element[Element[B13, j], i], Intersect[Circle[Element[Element[B13, j], Mod[i, n] + 1], Element[Element[B13, j], i], Mirror[Element[Element[B13, j], i], Circle[(0, 0), 1]]], Ray[Center[Circle[Element[Element[B13, j], Mod[i, n] + 1], Element[Element[B13, j], i], Mirror[Element[Element[B13, j], i], Circle[(0, 0), 1]]]], Midpoint[Element[Element[B13, j], i], Element[Element[B13, j], Mod[i, n] + 1]]]], Element[Element[B13, j], Mod[i, n] + 1]]], i, 1, n], j, 1, n]}, {Sequence[If[Mirror[(0, 0), Line[Element[Element[B13, k1], 1], Element[Element[B13, k1], 2]]] ≟ (0, 0), Segment[Element[Element[B13, k1], 1], Element[Element[B13, k1], 2]]], k1, 1, n]})
C23 = Union({Sequence[Sequence[If[Mirror[(0, 0), Line[Element[Element[C13, j], i], Element[Element[C13, j], Mod[i, n] + 1]]] ≠ (0, 0), CircumcircleArc[Element[Element[C13, j], i], Intersect[Circle[Element[Element[C13, j], Mod[i, n] + 1], Element[Element[C13, j], i], Mirror[Element[Element[C13, j], i], Circle[(0, 0), 1]]], Ray[Center[Circle[Element[Element[C13, j], Mod[i, n] + 1], Element[Element[C13, j], i], Mirror[Element[Element[C13, j], i], Circle[(0, 0), 1]]]], Midpoint[Element[Element[C13, j], i], Element[Element[C13, j], Mod[i, n] + 1]]]], Element[Element[C13, j], Mod[i, n] + 1]]], i, 1, n], j, 1, n]}, {Sequence[If[Mirror[(0, 0), Line[Element[Element[C13, k1], 1], Element[Element[C13, k1], 2]]] ≟ (0, 0), Segment[Element[Element[C13, k1], 1], Element[Element[C13, k1], 2]]], k1, 1, n]})
B24 = Union({Sequence[Sequence[If[Mirror[(0, 0), Line[Element[Element[B14, j], i], Element[Element[B14, j], Mod[i, n] + 1]]] ≠ (0, 0), CircumcircleArc[Element[Element[B14, j], i], Intersect[Circle[Element[Element[B14, j], Mod[i, n] + 1], Element[Element[B14, j], i], Mirror[Element[Element[B14, j], i], Circle[(0, 0), 1]]], Ray[Center[Circle[Element[Element[B14, j], Mod[i, n] + 1], Element[Element[B14, j], i], Mirror[Element[Element[B14, j], i], Circle[(0, 0), 1]]]], Midpoint[Element[Element[B14, j], i], Element[Element[B14, j], Mod[i, n] + 1]]]], Element[Element[B14, j], Mod[i, n] + 1]]], i, 1, n], j, 1, n]}, {Sequence[If[Mirror[(0, 0), Line[Element[Element[B14, k1], 1], Element[Element[B14, k1], 2]]] ≟ (0, 0), Segment[Element[Element[B14, k1], 1], Element[Element[B14, k1], 2]]], k1, 1, n]})
C24 = Union({Sequence[Sequence[If[Mirror[(0, 0), Line[Element[Element[C14, j], i], Element[Element[C14, j], Mod[i, n] + 1]]] ≠ (0, 0), CircumcircleArc[Element[Element[C14, j], i], Intersect[Circle[Element[Element[C14, j], Mod[i, n] + 1], Element[Element[C14, j], i], Mirror[Element[Element[C14, j], i], Circle[(0, 0), 1]]], Ray[Center[Circle[Element[Element[C14, j], Mod[i, n] + 1], Element[Element[C14, j], i], Mirror[Element[Element[C14, j], i], Circle[(0, 0), 1]]]], Midpoint[Element[Element[C14, j], i], Element[Element[C14, j], Mod[i, n] + 1]]]], Element[Element[C14, j], Mod[i, n] + 1]]], i, 1, n], j, 1, n]}, {Sequence[If[Mirror[(0, 0), Line[Element[Element[C14, k1], 1], Element[Element[C14, k1], 2]]] ≟ (0, 0), Segment[Element[Element[C14, k1], 1], Element[Element[C14, k1], 2]]], k1, 1, n]})
B25 = Union({Sequence[Sequence[If[Mirror[(0, 0), Line[Element[Element[B15, j], i], Element[Element[B15, j], Mod[i, n] + 1]]] ≠ (0, 0), CircumcircleArc[Element[Element[B15, j], i], Intersect[Circle[Element[Element[B15, j], Mod[i, n] + 1], Element[Element[B15, j], i], Mirror[Element[Element[B15, j], i], Circle[(0, 0), 1]]], Ray[Center[Circle[Element[Element[B15, j], Mod[i, n] + 1], Element[Element[B15, j], i], Mirror[Element[Element[B15, j], i], Circle[(0, 0), 1]]]], Midpoint[Element[Element[B15, j], i], Element[Element[B15, j], Mod[i, n] + 1]]]], Element[Element[B15, j], Mod[i, n] + 1]]], i, 1, n], j, 1, n]}, {Sequence[If[Mirror[(0, 0), Line[Element[Element[B15, k1], 1], Element[Element[B15, k1], 2]]] ≟ (0, 0), Segment[Element[Element[B15, k1], 1], Element[Element[B15, k1], 2]]], k1, 1, n]})
C25 = Union({Sequence[Sequence[If[Mirror[(0, 0), Line[Element[Element[C15, j], i], Element[Element[C15, j], Mod[i, n] + 1]]] ≠ (0, 0), CircumcircleArc[Element[Element[C15, j], i], Intersect[Circle[Element[Element[C15, j], Mod[i, n] + 1], Element[Element[C15, j], i], Mirror[Element[Element[C15, j], i], Circle[(0, 0), 1]]], Ray[Center[Circle[Element[Element[C15, j], Mod[i, n] + 1], Element[Element[C15, j], i], Mirror[Element[Element[C15, j], i], Circle[(0, 0), 1]]]], Midpoint[Element[Element[C15, j], i], Element[Element[C15, j], Mod[i, n] + 1]]]], Element[Element[C15, j], Mod[i, n] + 1]]], i, 1, n], j, 1, n]}, {Sequence[If[Mirror[(0, 0), Line[Element[Element[C15, k1], 1], Element[Element[C15, k1], 2]]] ≟ (0, 0), Segment[Element[Element[C15, k1], 1], Element[Element[C15, k1], 2]]], k1, 1, n]})
B26 = Union({Sequence[Sequence[If[Mirror[(0, 0), Line[Element[Element[B16, j], i], Element[Element[B16, j], Mod[i, n] + 1]]] ≠ (0, 0), CircumcircleArc[Element[Element[B16, j], i], Intersect[Circle[Element[Element[B16, j], Mod[i, n] + 1], Element[Element[B16, j], i], Mirror[Element[Element[B16, j], i], Circle[(0, 0), 1]]], Ray[Center[Circle[Element[Element[B16, j], Mod[i, n] + 1], Element[Element[B16, j], i], Mirror[Element[Element[B16, j], i], Circle[(0, 0), 1]]]], Midpoint[Element[Element[B16, j], i], Element[Element[B16, j], Mod[i, n] + 1]]]], Element[Element[B16, j], Mod[i, n] + 1]]], i, 1, n], j, 1, n]}, {Sequence[If[Mirror[(0, 0), Line[Element[Element[B16, k1], 1], Element[Element[B16, k1], 2]]] ≟ (0, 0), Segment[Element[Element[B16, k1], 1], Element[Element[B16, k1], 2]]], k1, 1, n]})
C26 = Union({Sequence[Sequence[If[Mirror[(0, 0), Line[Element[Element[C16, j], i], Element[Element[C16, j], Mod[i, n] + 1]]] ≠ (0, 0), CircumcircleArc[Element[Element[C16, j], i], Intersect[Circle[Element[Element[C16, j], Mod[i, n] + 1], Element[Element[C16, j], i], Mirror[Element[Element[C16, j], i], Circle[(0, 0), 1]]], Ray[Center[Circle[Element[Element[C16, j], Mod[i, n] + 1], Element[Element[C16, j], i], Mirror[Element[Element[C16, j], i], Circle[(0, 0), 1]]]], Midpoint[Element[Element[C16, j], i], Element[Element[C16, j], Mod[i, n] + 1]]]], Element[Element[C16, j], Mod[i, n] + 1]]], i, 1, n], j, 1, n]}, {Sequence[If[Mirror[(0, 0), Line[Element[Element[C16, k1], 1], Element[Element[C16, k1], 2]]] ≟ (0, 0), Segment[Element[Element[C16, k1], 1], Element[Element[C16, k1], 2]]], k1, 1, n]})
B27 = Union({Sequence[Sequence[If[Mirror[(0, 0), Line[Element[Element[B17, j], i], Element[Element[B17, j], Mod[i, n] + 1]]] ≠ (0, 0), CircumcircleArc[Element[Element[B17, j], i], Intersect[Circle[Element[Element[B17, j], Mod[i, n] + 1], Element[Element[B17, j], i], Mirror[Element[Element[B17, j], i], Circle[(0, 0), 1]]], Ray[Center[Circle[Element[Element[B17, j], Mod[i, n] + 1], Element[Element[B17, j], i], Mirror[Element[Element[B17, j], i], Circle[(0, 0), 1]]]], Midpoint[Element[Element[B17, j], i], Element[Element[B17, j], Mod[i, n] + 1]]]], Element[Element[B17, j], Mod[i, n] + 1]]], i, 1, n], j, 1, n]}, {Sequence[If[Mirror[(0, 0), Line[Element[Element[B17, k1], 1], Element[Element[B17, k1], 2]]] ≟ (0, 0), Segment[Element[Element[B17, k1], 1], Element[Element[B17, k1], 2]]], k1, 1, n]})
C27 = Union({Sequence[Sequence[If[Mirror[(0, 0), Line[Element[Element[C17, j], i], Element[Element[C17, j], Mod[i, n] + 1]]] ≠ (0, 0), CircumcircleArc[Element[Element[C17, j], i], Intersect[Circle[Element[Element[C17, j], Mod[i, n] + 1], Element[Element[C17, j], i], Mirror[Element[Element[C17, j], i], Circle[(0, 0), 1]]], Ray[Center[Circle[Element[Element[C17, j], Mod[i, n] + 1], Element[Element[C17, j], i], Mirror[Element[Element[C17, j], i], Circle[(0, 0), 1]]]], Midpoint[Element[Element[C17, j], i], Element[Element[C17, j], Mod[i, n] + 1]]]], Element[Element[C17, j], Mod[i, n] + 1]]], i, 1, n], j, 1, n]}, {Sequence[If[Mirror[(0, 0), Line[Element[Element[C17, k1], 1], Element[Element[C17, k1], 2]]] ≟ (0, 0), Segment[Element[Element[C17, k1], 1], Element[Element[C17, k1], 2]]], k1, 1, n]})
texto1 = If(Radius[c] ≟ 1 ∧ (m ≤ (2 * n / (n - 2))), "Condição não satisfeita.")

Tool: Common Perpendicular (command CommonPerpendicular)
Click two points of each line, respectively.
Input: C, D, E, F
Output: d_1

a = Line(C, D)
C1 = Mirror(C, Circle[(0, 0), 1])
D1 = Mirror(D, Circle[(0, 0), 1])
E1 = Mirror(E, Circle[(0, 0), 1])
F1 = Mirror(F, Circle[(0, 0), 1])
Gcd = Mirror((0, 0), a)
b = Line((0, 0), C)
d = Line((0, 0), D)
e = OrthogonalLine(C, b)
f = OrthogonalLine(D, d)
H = Intersect(e, f)
I = Intersect(Circle[(0, 0), 1], a, 1)
J = Intersect(Circle[(0, 0), 1], a, 2)
K = Midpoint(I, J)
g = If((0, 0) ≟ Gcd ∧ (Distance[C, (0, 0)] ≤ 1) ∧ (Distance[D, (0, 0)] ≤ 1), Circle[I, K, J], If[Distance[C, (0, 0)] ≟ 1 ∧ Distance[D, (0, 0)] ≟ 1, Circle[H, C], If[Distance[C, (0, 0)] ≟ 1 ∧ (Distance[D, (0, 0)]  <  1), Circle[C, D, D1], If[(Distance[C, (0, 0)]  <  1) ∧ (Distance[D, (0, 0)] ≤ 1), Circle[C1, C, D]]]])
h = Line(E, F)
Gef = Mirror((0, 0), h)
i = Line((0, 0), F)
j = Line((0, 0), E)
k = OrthogonalLine(F, i)
l = OrthogonalLine(E, j)
L = Intersect(k, l)
M = Intersect(Circle[(0, 0), 1], h, 2)
N = Intersect(Circle[(0, 0), 1], h, 1)
O = Midpoint(N, M)
p = If((0, 0) ≟ Gef ∧ (Distance[E, (0, 0)] ≤ 1) ∧ (Distance[F, (0, 0)] ≤ 1), Circle[M, O, N], If[Distance[E, (0, 0)] ≟ 1 ∧ Distance[F, (0, 0)] ≟ 1, Circle[L, E], If[Distance[E, (0, 0)] ≟ 1 ∧ (Distance[F, (0, 0)]  <  1), Circle[F1, F, E], If[(Distance[E, (0, 0)]  <  1) ∧ (Distance[F, (0, 0)] ≤ 1), Circle[E1, E, F]]]])
P = Center(g)
Q = Center(p)
m = Line(P, Q)
R = Intersect(Circle[(0, 0), 1], m, 1)
S = Intersect(Circle[(0, 0), 1], m, 2)
n = Line((0, 0), R)
q = Line((0, 0), S)
s = OrthogonalLine(S, q)
t = OrthogonalLine(R, n)
T = Intersect(s, t)
U = Midpoint(R, S)
a_1 = Ray(T, U)
c_1 = Circle(T, R)
V = Intersect(c_1, a_1, 1)
Gpq = Mirror((0, 0), m)
d_1 = If((0, 0) ≟ Gpq, CircumcircleArc[R, (0, 0), S], CircumcircleArc[R, V, S])

Tool: Midpoint (command MidpointH)
Click two points.
Input: C, D
Output: U

C1 = Mirror(C, Circle[(0, 0), 1])
d = Circle(C1, C, D)
F = Center(d)
a = Line(F, D)
b = Line(F, C)
e = Line((0, 0), D)
f = Line((0, 0), C)
g = OrthogonalLine(D, a)
G = Intersect(f, g)
k = Circle(G, D)
j = OrthogonalLine(C, b)
H = Intersect(e, j)
p = Circle(H, C)
I, J = Intersect(p, k)
I1 = Mirror(I, Circle[(0, 0), 1])
q = Circle(I1, I, J)
K = Intersect(d, q, 2)
L = Intersect(d, q, 1)
D1 = Mirror(D, Circle[(0, 0), 1])
M = Midpoint(C, C1)
N = Midpoint(D, D1)
s = Circle(M, C)
t = Circle(N, D)
D2 = Mirror(D, s)
C2 = Mirror(C, t)
O = Midpoint(C, C2)
P = Midpoint(D, D2)
c_1 = Circle(O, C)
d_1 = Circle(P, D)
Q, R = Intersect(c_1, d_1)
Q1 = Mirror(Q, Circle[(0, 0), 1])
e1 = Circle(Q1, Q, R)
l = Line(C, D)
E1 = Mirror((0, 0), l)
S = Intersect(e1, l, 2)
T = Intersect(e1, l, 1)
U = If((0, 0) ≟ E1 ∧ (Distance[C, (0, 0)]  <  1) ∧ (Distance[D, (0, 0)]  <  1) ∧ (Distance[S, (0, 0)] ≤ 1), S, If[(0, 0) ≟ E1 ∧ (Distance[C, (0, 0)]  <  1) ∧ (Distance[D, (0, 0)]  <  1) ∧ (Distance[T, (0, 0)] ≤ 1), T, If[(Distance[C, (0, 0)]  <  1) ∧ (Distance[D, (0, 0)]  <  1) ∧ (Distance[K, (0, 0)] ≤ 1), K, If[(Distance[C, (0, 0)]  <  1) ∧ (Distance[D, (0, 0)]  <  1) ∧ (Distance[L, (0, 0)] ≤ 1), L]]])

Tool: Reflect (command ReflectH)
Click two points on the line, the the point to be reflected.
Input: A, B, C
Output: G

A1 = Mirror(A, Circle[(0, 0), 1])
B1 = Mirror(B, Circle[(0, 0), 1])
a = Line((0, 0), A)
b = Line((0, 0), B)
d = OrthogonalLine(A, a)
e = OrthogonalLine(B, b)
D = Intersect(d, e)
f = Line(A, B)
O' = Mirror((0, 0), f)
g = If(Distance[A, (0, 0)] ≟ 1 ∧ Distance[B, (0, 0)] ≟ 1, Circle[D, A], If[Distance[A, (0, 0)] ≟ 1 ∧ (Distance[B, (0, 0)]  <  1), Circle[B1, B, A], If[(Distance[A, (0, 0)]  <  1) ∧ (Distance[B, (0, 0)] ≤ 1), Circle[A1, A, B]]])
G = If((Distance[C, (0, 0)] ≤ 1) ∧ O' ≟ (0, 0), Mirror[C, f], If[Distance[C, (0, 0)] ≤ 1, Mirror[C, g]])

Tool: Line (command LineH)
Click two points. For better intersections, go in Options/Advanced/Continuity/On.
Input: A, B
Output: p

A1 = Mirror(A, Circle[(0, 0), 1])
B1 = Mirror(B, Circle[(0, 0), 1])
a = Line((0, 0), A)
b = Line((0, 0), B)
d = OrthogonalLine(A, a)
e = OrthogonalLine(B, b)
D = Intersect(d, e)
f = Line(A, B)
Cab = If((Distance[A, (0, 0)] ≤ 1) ∧ (Distance[B, (0, 0)] ≤ 1), Mirror[(0, 0), f])
g = If(Distance[A, (0, 0)] ≟ 1 ∧ Distance[B, (0, 0)] ≟ 1, Circle[D, A], If[Distance[A, (0, 0)] ≟ 1 ∧ (Distance[B, (0, 0)]  <  1), Circle[B1, B, A], If[(Distance[A, (0, 0)]  <  1) ∧ (Distance[B, (0, 0)] ≤ 1), Circle[A1, A, B]]])
G = Intersect(Circle[(0, 0), 1], g, 1)
H = Intersect(Circle[(0, 0), 1], g, 2)
h = Segment(A, G)
i = Segment(A, H)
j = Segment(B, G)
k = Segment(B, H)
I = Intersect(i, j)
J = Intersect(h, k)
K = Center(g)
L = Midpoint(G, H)
l = Ray(K, L)
O = Intersect(g, l, 1)
N = If(Distance[A, (0, 0)] ≟ 1, A, If[(0, 0) ≟ Cab, Intersect[Circle[(0, 0), 1], f, 1], If[Defined[I], Intersect[Circle[(0, 0), 1], g, 1], If[Defined[J], Intersect[Circle[(0, 0), 1], g, 2]]]])
M = If(Distance[B, (0, 0)] ≟ 1, B, If[(0, 0) ≟ Cab, Intersect[Circle[(0, 0), 1], f, 2], If[Defined[I], Intersect[Circle[(0, 0), 1], g, 2], If[Defined[J], Intersect[Circle[(0, 0), 1], g, 1]]]])
p = If((0, 0) ≟ Cab, CircumcircleArc[M, (0, 0), N], CircumcircleArc[M, O, N])

Tool: Segment (command SegmentH)
Click two points.
Input: A, B
Output: p

A1 = Mirror(A, Circle[(0, 0), 1])
B1 = Mirror(B, Circle[(0, 0), 1])
a = Line((0, 0), A)
b = Line((0, 0), B)
d = OrthogonalLine(A, a)
e = OrthogonalLine(B, b)
D = Intersect(d, e)
f = Line(A, B)
Cab = If((Distance[A, (0, 0)] ≤ 1) ∧ (Distance[B, (0, 0)] ≤ 1), Mirror[(0, 0), f])
g = If(Distance[A, (0, 0)] ≟ 1 ∧ Distance[B, (0, 0)] ≟ 1, Circle[D, A], If[Distance[A, (0, 0)] ≟ 1 ∧ (Distance[B, (0, 0)]  <  1), Circle[B1, B, A], If[(Distance[A, (0, 0)]  <  1) ∧ (Distance[B, (0, 0)] ≤ 1), Circle[A1, A, B]]])
K = Center(g)
C = Midpoint(B, A)
l = Ray(K, C)
L = Intersect(g, l, 1)
p = If((0, 0) ≟ Cab, CircumcircleArc[A, C, B], CircumcircleArc[A, L, B])

Tool: Ray (command RayH)
Click in the origin point, then another point.
Input: A, B
Output: p

A1 = Mirror(A, Circle[(0, 0), 1])
B1 = Mirror(B, Circle[(0, 0), 1])
a = Line((0, 0), A)
b = Line((0, 0), B)
d = OrthogonalLine(A, a)
e = OrthogonalLine(B, b)
D = Intersect(d, e)
f = Line(A, B)
Cab = If((Distance[A, (0, 0)] ≤ 1) ∧ (Distance[B, (0, 0)] ≤ 1), Mirror[(0, 0), f])
g = If(Distance[A, (0, 0)] ≟ 1 ∧ Distance[B, (0, 0)] ≟ 1, Circle[D, A], If[Distance[A, (0, 0)] ≟ 1 ∧ (Distance[B, (0, 0)]  <  1), Circle[B1, B, A], If[(Distance[A, (0, 0)]  <  1) ∧ (Distance[B, (0, 0)] ≤ 1), Circle[A1, A, B]]])
G = Intersect(Circle[(0, 0), 1], g, 1)
H = Intersect(Circle[(0, 0), 1], g, 2)
h = Segment(A, G)
i = Segment(A, H)
j = Segment(B, G)
k = Segment(B, H)
I = Intersect(i, j)
J = Intersect(h, k)
K = Center(g)
M = If(Distance[B, (0, 0)] ≟ 1, B, If[(0, 0) ≟ Cab, Intersect[Circle[(0, 0), 1], f, 2], If[Defined[I], Intersect[Circle[(0, 0), 1], g, 2], If[Defined[J], Intersect[Circle[(0, 0), 1], g, 1]]]])
C = Midpoint(A, M)
l = Ray(K, C)
L = Intersect(g, l, 1)
p = If((0, 0) ≟ Cab, CircumcircleArc[A, C, M], CircumcircleArc[A, L, M])

Tool: Angle (command AngleH)
Click three points.
Input: C, D, E
Output: q_1, r_1, texto1

a_2 = Line((0, 0), C)
c_2 = OrthogonalLine(C, a_2)
s_1 = Line((0, 0), D)
b_2 = OrthogonalLine(D, s_1)
J_1 = Intersect(b_2, c_2)
f_2 = Circle(J_1, D)
M_2, N_2 = Intersect(Circle[(0, 0), 1], f_2)
M, N = Intersect(Circle[(0, 0), 1], f_2)
t_1 = Line((0, 0), E)
d_2 = OrthogonalLine(E, t_1)
I_1 = Intersect(b_2, d_2)
e_2 = Circle(I_1, D)
A_2, B = Intersect(Circle[(0, 0), 1], e_2)
A, B_2 = Intersect(Circle[(0, 0), 1], e_2)
E1 = Mirror(E, Circle[(0, 0), 1])
b_1 = Line((0, 0), E)
c_1 = OrthogonalLine(E, b_1)
g_1 = Line(E, D)
L2 = Mirror((0, 0), g_1)
p_1 = Line((0, 0), D)
s = OrthogonalLine(D, p_1)
R = Intersect(s, c_1)
D1 = Mirror(D, Circle[(0, 0), 1])
d = If(Distance[D, (0, 0)] ≟ 1 ∧ Distance[E, (0, 0)] ≟ 1, Circle[R, D], If[Distance[E, (0, 0)] ≟ 1 ∧ (Distance[D, (0, 0)]  <  1), Circle[D1, D, E], If[(Distance[E, (0, 0)]  <  1) ∧ (Distance[D, (0, 0)] ≤ 1), Circle[E1, E, D]]])
I = Intersect(Circle[(0, 0), 1], d, 2)
j = Segment(D, I)
h = Segment(E, I)
H = Intersect(Circle[(0, 0), 1], d, 1)
i = Segment(D, H)
J = Intersect(h, i)
g = Segment(E, H)
K = Intersect(g, j)
a, a_1 = Tangent(D, d)
f = Circle(D, C)
e_1 = Line(C, D)
C1 = Mirror(C, Circle[(0, 0), 1])
L1_1 = Mirror((0, 0), e_1)
q = Line((0, 0), C)
t = OrthogonalLine(C, q)
Q = Intersect(s, t)
e = If(Distance[D, (0, 0)] ≟ 1 ∧ Distance[C, (0, 0)] ≟ 1, Circle[Q, C], If[Distance[C, (0, 0)] ≟ 1 ∧ (Distance[D, (0, 0)]  <  1), Circle[D1, D, C], If[(Distance[C, (0, 0)]  <  1) ∧ (Distance[D, (0, 0)] ≤ 1), Circle[C1, C, D]]])
M_1 = Intersect(Circle[(0, 0), 1], e, 1)
n = Segment(D, M_1)
l = Segment(C, M_1)
F = Intersect(Circle[(0, 0), 1], e, 2)
m = Segment(D, F)
N_1 = Intersect(l, m)
k = Segment(C, F)
O = Intersect(k, n)
b, f_1 = Tangent(D, e)
P = If((0, 0) ≟ L1_1 ∧ (Distance[C, (0, 0)] ≤ 1) ∧ (Distance[D, (0, 0)] ≤ 1), Intersect[f, e_1, 1], If[Distance[C, (0, 0)] ≟ 1 ∧ Distance[D, (0, 0)] ≟ 1, (0, 0), If[Defined[N_1], Intersect[f, b, 1], If[Defined[O], Intersect[f, b, 2]]]])
G = If((0, 0) ≟ L2 ∧ (Distance[E, (0, 0)] ≤ 1) ∧ (Distance[D, (0, 0)] ≤ 1), Intersect[f, g_1, 1], If[Distance[D, (0, 0)] ≟ 1 ∧ Distance[E, (0, 0)] ≟ 1, (0, 0), If[Defined[K], Intersect[f, a, 1], If[Defined[J], Intersect[f, a, 2]]]])
α = If(Angle[G, D, P] ≤ Angle[P, D, G], Angle[G, D, P], Angle[P, D, G])
texto1: α + ""
W = Midpoint(D, E)
Z = Center(d)
p = Ray(Z, W)
A_1 = Intersect(d, p, 1)
B_1 = Center(e)
C_1 = Midpoint(D, C)
l_1 = Ray(B_1, C_1)
D_1 = Intersect(e, l_1, 1)
m_1 = Ray(D, E)
E_1 = Intersect(Circle[(0, 0), 1], m_1, 1)
F_1 = Midpoint(E_1, D)
n_1 = Ray(D, C)
G_1 = Intersect(Circle[(0, 0), 1], n_1, 1)
H_1 = Midpoint(G_1, D)
O_1 = Midpoint(A, B)
g_2 = Ray(I_1, O_1)
P_1 = Midpoint(M, N)
h_2 = Ray(J_1, P_1)
Q_1 = Intersect(e_2, g_2, 1)
R_1 = Intersect(f_2, h_2, 1)
q_1 = If(Distance[D, (0, 0)] ≟ 1 ∧ Distance[E, (0, 0)] ≟ 1 ∧ (Distance[C, (0, 0)] ≤ 1), CircumcircleArc[A, Q_1, B], If[(0, 0) ≟ L2 ∧ (Distance[D, (0, 0)] ≤ 1) ∧ (Distance[E, (0, 0)] ≤ 1), CircumcircleArc[D, F_1, E_1], If[Defined[J] ∧ (Distance[C, (0, 0)] ≤ 1), CircumcircleArc[D, A_1, H], If[Defined[K] ∧ (Distance[C, (0, 0)] ≤ 1), CircumcircleArc[D, A_1, I]]]])
r_1 = If(Distance[C, (0, 0)] ≟ 1 ∧ Distance[D, (0, 0)] ≟ 1 ∧ (Distance[E, (0, 0)] ≤ 1), CircumcircleArc[M, R_1, N], If[(0, 0) ≟ L1_1 ∧ (Distance[C, (0, 0)] ≤ 1) ∧ (Distance[D, (0, 0)] ≤ 1), CircumcircleArc[D, H_1, G_1], If[Defined[N_1] ∧ (Distance[E, (0, 0)] ≤ 1), CircumcircleArc[D, D_1, F], If[Defined[O] ∧ (Distance[E, (0, 0)] ≤ 1), CircumcircleArc[D, D_1, M_1]]]])

Tool: Function (command FunctionH)
Click the function to create the graph of the hyperbolic function according to Lobachevski's measure.
Input: f
Output: a

f(x) = x^(2)
a = CurveCartesian((((2 * t) * (exp((2 * f(log((1 + t) / (1 - t))))) + 1))) / (((1 + t^(2)) * exp((2 * f(log((1 + t) / (1 - t)))))) + ((2 * (1 - t^(2))) * exp(f(log((1 + t) / (1 - t))))) + 1 + t^(2)), (((1 - t^(2)) * (exp((2 * f(log((1 + t) / (1 - t))))) - 1))) / (((1 + t^(2)) * exp((2 * f(log((1 + t) / (1 - t)))))) + ((2 * (1 - t^(2))) * exp(f(log((1 + t) / (1 - t))))) + 1 + t^(2)), t, -1, 1)

Tool: Perpendicular (command PerpendicularH)
Click two points of the line, then in any points.
Input: A, B, P
Output: k

dB = Distance(B, (0, 0))
yB: y(B)
xB: x(B)
Oab = Mirror((0, 0), Line[A, B])
dA = Distance(A, (0, 0))
yA: y(A)
xA: x(A)
c: (x - ((yB * (1 + dA^(2))) - (yA * (1 + dB^(2)))) / ((2 * ((xA * yB) - (yA * xB)))))^(2) + (y - ((xA * (1 + dB^(2))) - (xB * (1 + dA^(2)))) / ((2 * ((xA * yB) - (yA * xB)))))^(2) = ((dB^(2) * (1 + dA^(2))^(2)) + (dA^(2) * (1 + dB^(2))^(2)) - (((2 * (1 + dA^(2))) * (1 + dB^(2))) * ((xA * xB) + (yA * yB))) - (4 * ((xA * yB) - (yA * xB))^(2))) / ((4 * ((xA * yB) - (yA * xB))^(2)))
xP: x(P)
yP: y(P)
P1 = If(Oab ≟ (0, 0), Mirror[P, Line[A, B]], Mirror[P, c])
xP1: x(P1)
yP1: y(P1)
dP1 = Distance((0, 0), P1)
dP = Distance((0, 0), P)
d: (x - ((yP1 * (1 + dP^(2))) - (yP * (1 + dP1^(2)))) / ((2 * ((xP * yP1) - (yP * xP1)))))^(2) + (y - ((xP * (1 + dP1^(2))) - (xP1 * (1 + dP^(2)))) / ((2 * ((xP * yP1) - (yP * xP1)))))^(2) = ((dP1^(2) * (1 + dP^(2))^(2)) + (dP^(2) * (1 + dP1^(2))^(2)) - (((2 * (1 + dP^(2))) * (1 + dP1^(2))) * ((xP * xP1) + (yP * yP1))) - (4 * ((xP * yP1) - (yP * xP1))^(2))) / ((4 * ((xP * yP1) - (yP * xP1))^(2)))
P' = Mirror(P, Circle[(0, 0), 1])
a = Line(Center[c], P)
b = Line(Center[c], P')
e = OrthogonalLine(P', b)
f = OrthogonalLine(P, a)
C = If(P ≟ P1 ∧ Oab ≟ (0, 0), Midpoint[P, P'], Intersect[f, e])
g = If(P ≟ P1, Circle[C, P], d)
h = OrthogonalLine(P, Line[A, B])
Opp = Mirror((0, 0), h)
E = If(Opp ≟ (0, 0), Intersect[Circle[(0, 0), 1], h], Intersect[g, Circle[(0, 0), 1]])
F = If(Opp ≟ (0, 0), Intersect[Circle[(0, 0), 1], h, 2], Intersect[g, Circle[(0, 0), 1], 2])
i = Ray(Center[g], Midpoint[P, P1])
G = If(Opp ≟ (0, 0), Midpoint[P, P1], Intersect[g, i])
k = If(Distance[P, (0, 0)] ≤ 1, CircumcircleArc[F, G, E])

Tool: Angle Bisector (command AngleBisectorH)
Click on three points. The second must be the apex.
Input: A, B, C
Output: e

xB: x(B)
yB: y(B)
dA = Distance(A, (0, 0))
dB = Distance(B, (0, 0))
dC = Distance(C, (0, 0))
d: (x - xB / dB^(2))^(2) + (y - yB / dB^(2))^(2) = (3 - (5 * dB^(2)) + dB^(4) + dB^(6)) / ((3 * dB^(2)) - (2 * dB^(4)) - dB^(6))
A' = If(B ≟ (0, 0), A, Mirror[A, d])
C' = If(B ≟ (0, 0), C, Mirror[C, d])
a = AngularBisector(A', (0, 0), C')
D = Intersect(Circle[(0, 0), 1], a, 1)
E = Intersect(Circle[(0, 0), 1], a, 2)
D' = If(Defined[d], Mirror[D, d], E)
E' = If(Defined[d], Mirror[E, d], D)
e = If((dA ≤ 1) ∧ (dB  <  1) ∧ (dC ≤ 1), CircumcircleArc[D', B, E'])