A = (-0.92, -0.9)
B = (8.911622302799175, -1.9265515721295325)
C = (5.308873637033843, 5.766941199300022)
polígono1, c, a, b = Polygon(A, B, C)
d = OrthogonalLine(B, a)
e = OrthogonalLine(C, a)
f = OrthogonalLine(C, b)
g = OrthogonalLine(A, b)
h = OrthogonalLine(A, c)
i = OrthogonalLine(B, c)
ϕ_a = ConicaPtPtP(A, d, B, e, C)
ϕ_b = ConicaPtPtP(B, f, C, g, A)
ϕ_c = ConicaPtPtP(C, h, A, i, B)
D = PerspectorConica(A, B, C, ϕ_a)
E = PerspectorConica(B, C, A, ϕ_b)
F = PerspectorConica(C, A, B, ϕ_c)
H = cuartopunto(A, B, C, ϕ_a, ϕ_b)
I = cuartopunto(A, B, C, ϕ_a, ϕ_b)
j = Line(D, E)
l = Line(E, F)
m = Line(D, F)
B' = Tripolo1(A, B, C, m)
C' = Tripolo1(A, B, C, j)
A' = Tripolo1(A, B, C, l)
n = Line(E, B)
r = Line(A, D)
s = Line(C, F)
X_4 = TriangleCenter(A, B, C, 4)
t = Line(B', B)
a_1 = Line(C', C)
b_1 = Line(A', A)
X_{20} = TriangleCenter(A, B, C, 20)
c_1 = Line(A, C)
d_1 = Line(A, B)
e_1 = Tangent(A, ϕ_a)
G = Midpoint(A, C)
J = Midpoint(A, B)
B'_1 = Mirror(B, G)
C'_1 = Mirror(C, J)
A_b = SegundoPuntoRectaConica(A, C', B, C, B'_1, e_1)
A_c = SegundoPuntoRectaConica(A, C'_1, B, A', C, e_1)
B_a, B_c = Herramienta12(B, C, A)
C_b, C_a = Herramienta12(C, A, B)
ϕ = Conic(C_a, B_a, A_b, C_b, A_c)
T = Center(ϕ)
i_1 = Line(B_a, C_a)
j_1 = Line(C_b, A_b)
k_1 = Line(A_c, B_c)
f_1 = Tangent(C, ϕ_c)
g_1 = Tangent(B, ϕ_b)
U = Intersect(i_1, j_1)
V = Intersect(i_1, k_1)
W = Intersect(j_1, k_1)
Z = Intersect(f_1, e_1)
A_1 = Intersect(f_1, g_1)
B_1 = Intersect(e_1, g_1)
C_1 = Intersect(g_1, j_1)
D_1 = Intersect(f_1, k_1)
l_1 = Line(B, C)
p_1 = Circle(C, 5)
E_1, F_1 = Intersect(p_1, e)
m_1 = Segment(F_1, E_1)
q_1 = Circle(B, 5)
G_1, H_1 = Intersect(q_1, d)
n_1 = Segment(H_1, G_1)

Tool: Conica Dos Focos Una Tangente (command ConicaDosFocosUnaTangente)
Dar los dos focos y una tangente
Input: F, F', t
Output: c, d, P

S = Mirror(F, t)
a = Line(F', S)
P = Intersect(t, a)
c = Ellipse(F, F', P)
d = Hyperbola(F, F', P)

Tool: Punto en Conica:  P, tangente en Q, tangente en R y punto en QR. (command PuntoenConicaPtPtP)
Dar un punto P, una tangente en Q, una tangente R y un punto en QR.
Input: P, t_1, P_1, t_2, P_2, E
Output: X

P_2 = Point(t_2)
P_1 = Point(t_1)
a = Line(P_2, P_1)
E = Point(a)
b = Line(P, P_1)
c = Line(P, E)
F = Intersect(t_2, b)
RectaPascal = Line(F, E)
G = Intersect(t_1, RectaPascal)
e = Line(G, P_2)
X = Intersect(c, e)

Tool: Conica PtPtP (command ConicaPtPtP)
Dar P, tangente en Q y tangente en R.
Input: P, t_1, P_1, t_2, P_2
Output: d

P_2 = Point(t_2)
P_1 = Point(t_1)
H = Mirror(P_1, P_2)
I = Mirror(P_2, P_1)
J = PuntoenConicaPtPtP(P, t_1, P_1, t_2, P_2, H)
K = PuntoenConicaPtPtP(P, t_1, P_1, t_2, P_2, I)
d = Conic(P_2, P_1, P, K, J)

Tool: Perspector Conica (command PerspectorConica)
Dar ABC y una cónica (no necesariamente circunscrita)
Input: A, B, C, d
Output: L

e = Polar(A, d)
f = Polar(B, d)
g = Polar(C, d)
I = Intersect(e, g)
h = Line(B, I)
J = Intersect(e, f)
i = Line(C, J)
L = Intersect(i, h)

Tool: Perspector Conica (command PerspectorConica1)
Dar ABC y una cónica (no necesariamente circunscrita)
Input: A, B, C, d
Output: L

e = Polar(A, d)
f = Polar(B, d)
g = Polar(C, d)
I = Intersect(e, g)
h = Line(B, I)
J = Intersect(e, f)
i = Line(C, J)
L = Intersect(i, h)

Tool: Tripolo
Dar los vértices de un triángulo y una recta
Input: A, B, C, d
Output: N

e = Line(C, B)
f = Line(A, C)
g = Line(A, B)
F = Intersect(d, e)
G = Intersect(f, d)
h = Line(G, B)
j = Line(A, F)
I = Intersect(h, j)
k = Line(I, C)
J = Intersect(k, g)
l = Line(G, J)
M = Intersect(l, e)
m = Line(A, M)
N = Intersect(m, k)

Tool: cuarto punto (command cuartopunto)
Dar ABC y dos cónicas circunscritas
Input: A, B, C, d, h
Output: J

H = PerspectorConica(A, B, C, d)
I = PerspectorConica(A, B, C, h)
i = Line(I, H)
J = Tripolo(A, B, C, i)

Tool: Tripolo (command Tripolo1)
Dar los vértices de un triángulo y una recta
Input: A, B, C, d
Output: N

e = Line(C, B)
f = Line(A, C)
g = Line(A, B)
F = Intersect(d, e)
G = Intersect(f, d)
h = Line(G, B)
j = Line(A, F)
I = Intersect(h, j)
k = Line(I, C)
J = Intersect(k, g)
l = Line(G, J)
M = Intersect(l, e)
m = Line(A, M)
N = Intersect(m, k)

Tool: Puntos Dobles Involucion (command PuntosDoblesInvolucion)
Dar pares de puntos conjugados sobre una recta
Input: l, A, A', B, B'
Output: G, H

$\ell$

A = Point(l)
A' = Point(l)
B = Point(l)
B' = Point(l)
C = Midpoint(A, A')
c = Circle(C, A)
a = OrthogonalLine(C, l)
D = Intersect(c, a, 2)
e = Line(D, B)
f = Line(D, B')
g = OrthogonalLine(C, e)
h = OrthogonalLine(C, f)
D' = Mirror(D, h)
D'_1 = Mirror(D, g)
i = Line(A, D')
j = Line(A', D'_1)
X = Intersect(i, j)
k = Line(A, D'_1)
m = Line(A', D')
Y = Intersect(m, k)
n = Line(X, Y)
E, F = Intersect(c, n)
p = Line(D, F)
q = Line(E, D)
G = Intersect(l, q)
H = Intersect(l, p)

Tool: Conicas Tres Puntos Dos Tangentes (command ConicasTresPuntosDosTangentes)
Dar tres puntos y dos tangentes
Input: P_1, P_2, P_3, t_1, t_2
Output: d, h, f, k, I, J, K, L, P, Q, N, O

a = Line(P_2, P_3)
X = Intersect(t_1, a)
X' = Intersect(a, t_2)
E, F = PuntosDoblesInvolucion(a, X, X', P_2, P_3)
b = Line(P_1, P_3)
Y = Intersect(b, t_1)
Y' = Intersect(t_2, b)
G, H = PuntosDoblesInvolucion(b, Y, Y', P_3, P_1)
c = Line(F, H)
I = Intersect(t_1, c)
J = Intersect(t_2, c)
d = Conic(P_1, P_3, P_2, I, J)
e = Line(F, G)
K = Intersect(t_1, e)
L = Intersect(t_2, e)
f = Conic(P_1, P_2, P_3, K, L)
g = Line(E, H)
N = Intersect(t_1, g)
O = Intersect(t_2, g)
h = Conic(P_1, P_2, P_3, N, O)
i = Line(E, G)
P = Intersect(t_1, i)
Q = Intersect(i, t_2)
k = Conic(P_1, P_2, P_3, P, Q)

Tool: Segundo Punto Recta Conica (command SegundoPuntoRectaConica)
Dar ABCDE y recta por A
Input: A0, B0, C0, D0, E0, b
Output: A'

e = Line(A0, C0)
f = Line(B0, E0)
P0 = Intersect(e, f)
g = Line(B0, D0)
Q0 = Intersect(b, g)
h = Line(C0, D0)
i = Line(P0, Q0)
R0 = Intersect(h, i)
j = Line(E0, R0)
A' = Intersect(b, j)

Tool: Herramienta12
Input: A, B, C
Output: O, N

polígono1, c, a, b = Polygon(A, B, C)
d = OrthogonalLine(B, a)
e = OrthogonalLine(C, a)
f = OrthogonalLine(C, b)
g = OrthogonalLine(A, b)
h = OrthogonalLine(A, c)
i = OrthogonalLine(B, c)
k = ConicaPtPtP(A, d, B, e, C)
p = ConicaPtPtP(B, f, C, g, A)
q = ConicaPtPtP(C, h, A, i, B)
D = PerspectorConica(A, B, C, k)
E = PerspectorConica(B, C, A, p)
F = PerspectorConica(C, A, B, q)
j = Line(D, E)
l = Line(E, F)
L = Tripolo1(A, B, C, j)
M = Tripolo1(A, B, C, l)
e_1 = Tangent(A, k)
G = Midpoint(A, C)
J = Midpoint(A, B)
B' = Mirror(B, G)
C' = Mirror(C, J)
N = SegundoPuntoRectaConica(A, L, B, C, B', e_1)
O = SegundoPuntoRectaConica(A, C', B, M, C, e_1)

Tool: Conica AbACBcBaCaCb (command ConicaAbACBcBaCaCb)
Dar ABC
Input: A, B, C
Output: C_a, B_a, A_b, C_b, A_c, B_c, ϕ_a, ϕ_b, ϕ_c, ϕ

polígono1, c, a, b = Polygon(A, B, C)
d = OrthogonalLine(B, a)
e = OrthogonalLine(C, a)
f = OrthogonalLine(C, b)
g = OrthogonalLine(A, b)
h = OrthogonalLine(A, c)
i = OrthogonalLine(B, c)
ϕ_a = ConicaPtPtP(A, d, B, e, C)
ϕ_b = ConicaPtPtP(B, f, C, g, A)
ϕ_c = ConicaPtPtP(C, h, A, i, B)
D = PerspectorConica(A, B, C, ϕ_a)
E = PerspectorConica(B, C, A, ϕ_b)
F = PerspectorConica(C, A, B, ϕ_c)
j = Line(D, E)
l = Line(E, F)
C' = Tripolo1(A, B, C, j)
A' = Tripolo1(A, B, C, l)
e_1 = Tangent(A, ϕ_a)
G = Midpoint(A, C)
J = Midpoint(A, B)
B'_1 = Mirror(B, G)
C'_1 = Mirror(C, J)
A_b = SegundoPuntoRectaConica(A, C', B, C, B'_1, e_1)
A_c = SegundoPuntoRectaConica(A, C'_1, B, A', C, e_1)
B_a, B_c = Herramienta12(B, C, A)
C_b, C_a = Herramienta12(C, A, B)
ϕ = Conic(C_a, B_a, A_b, C_b, A_c)