TEOREMA DI MORLEY
Le semirette che trisecano gli angoli interni di un triangolo 
si incontrano nei vertici di un triangolo equilatero.

A = (-8.778003371489488, -2.683956997393754)
B_1 = (-4.427316392953916, -2.6716176357424097)
a = Ray(A, B_1)
C_1 = (-5.20551820670081, -1.8835570047358796)
b = Ray(A, C_1)
A' = Mirror(A, b)
B' = Mirror(B_1, b)
a' = Ray(A', B')
A'_1 = Mirror(A, a')
C = Mirror(C_1, a')
b' = Ray(A'_1, C)
α = Angle(B_1, A, C)
D = Point(a)
c = Ray(C, D)
E = Mirror(A'_1, c)
C'' = Mirror(C, c)
b'' = Ray(E, C'')
C''_1 = Mirror(C, b'')
D' = Mirror(D, b'')
c' = Ray(C''_1, D')
β = Angle(A, C, D')
B = Intersect(a, c')
γ = Angle(C, B, A)
F = Rotate(C''_1, γ / 3, B)
D'' = Rotate(D', γ / 3, B)
c'' = Ray(F, D'')
F' = Rotate(F, γ / 3, B)
D''' = Rotate(D'', γ / 3, B)
c''' = Ray(F', D''')
G = Intersect(b'', c'')
H = Intersect(b, c''')
I = Intersect(a', c)
poly1, h, i, g = Polygon(I, G, H)
distanzaGI = Distance(G, I)
TestoGI: "\overline{" + (Name[G]) + (Name[I]) + "} \, = \, " + distanzaGI
distanzaIH = Distance(I, H)
TestoIH: "\overline{" + (Name[I]) + (Name[H]) + "} \, = \, " + distanzaIH
distanzaHG = Distance(H, G)
TestoHG: "\overline{" + (Name[H]) + (Name[G]) + "} \, = \, " + distanzaHG

Tool: Circocerchio
Clicca sul triangolo
Input: poly1
Output: p, T

A = (-3.5935917865212366, 1.1316935930117926)
B = (-5.5658311712115385, -1.5422078804625579)
C = (0.6922361071326875, -2.8696766970810303)
poly1, c, a, b = Polygon(A, B, C)
j = LineBisector(a)
l = LineBisector(c)
T = Intersect(j, l)
p = Circle(T, B)

Tool: Circonferenza inscrita (command Circonferenzainscrita)
Clicca sui vertici del triangolo
Input: N, P, Q
Output: c_1, R

poly2, q_1, n_1, p_1 = Polygon(N, P, Q)
r = AngularBisector(N, Q, P)
s = AngularBisector(P, N, Q)
R = Intersect(r, s)
t = OrthogonalLine(R, p_1)
S = Intersect(t, p_1)
c_1 = Circle(R, S)

Tool: Ortocentro
Clicca sui vertici del triangolo
Input: E_1, F_1, G_1
Output: H_1

j_1 = Line(F_1, G_1)
l_1 = Line(G_1, E_1)
m_1 = OrthogonalLine(F_1, l_1)
n_1 = OrthogonalLine(E_1, j_1)
H_1 = Intersect(m_1, n_1)

Tool: Excerchi
Clicca su 3 rette che determinano un triangolo
Input: b, c, a
Output: p, E, D, F, q, r

d, e = AngularBisector(a, c)
f, g = AngularBisector(b, c)
h, i = AngularBisector(a, b)
D = Intersect(h, d)
E = Intersect(d, f)
F = Intersect(f, h)
j = OrthogonalLine(D, a)
k = OrthogonalLine(E, c)
l = OrthogonalLine(F, b)
G = Intersect(b, l)
H = Intersect(k, c)
I = Intersect(j, a)
p = Circle(E, H)
q = Circle(F, G)
r = Circle(D, I)

Tool: Tr. Equil. su lato (command Treqlato)
Clicca sugli estremi in verso orario
Input: A, C
Output: poly2, a_1, c_1, D, d_1

d = Circle(C, A)
e = Circle(A, C)
D = Intersect(d, e, 2)
poly2, c_1, a_1, d_1 = Polygon(A, D, C)

Tool: Quadrato su lato (command Quadratosulato)
Clicca su un segmento e sui suoi estremi
Input: F, G, h
Output: poly3, f_1, i_1, h_1

h = Segment(F, G)
i = OrthogonalLine(G, h)
j = OrthogonalLine(F, h)
k = Circle(G, F)
H = Intersect(k, i, 2)
l = OrthogonalLine(H, i)
I = Intersect(j, l)
poly3, i_1, h_1, g_1, f_1 = Polygon(I, H, G, F)

Tool: Rapporto aureo (command Rapportoaureo)
Clicca sugli estremi del segmento
Input: A, B
Output: E

a = Segment(A, B)
b = OrthogonalLine(B, a)
M = Midpoint(a)
c = Circle(B, M)
C = Intersect(c, b, 2)
d = Segment(C, A)
e = Circle(C, B)
D = Intersect(e, d, 1)
f = Circle(A, D)
E = Intersect(f, a, 1)