Author: Daniel Mentrard

T1 = (-6.906166759750475, 3.3646700369126297)
m1 = Line(T1, xAxis)
A = (-6.502326297545314, -0.724214642914621)
d = Circle(T1, 0.2)
C = (-8.050381402665096, 3.3310166650621995)
e = Ray(A, C)
E = Point(m1)
distanceAE = Distance(C, E)
ya: y(A)
sintheta: sin(ya)
xa: x(A)
cosphi: cos(xa)
a = OrthogonalLine(A, yAxis)
b = OrthogonalLine(A, xAxis)
sinphi: sin(xa)
c: cos(ya)
costheta: cos(ya)
B = Intersect(xAxis, yAxis)
D: (0.0, distanceAE * costheta)
Y: (distanceAE * cosphi, distanceAE * sinphi * sintheta)
xy: -(distanceAE) * cosphi * sintheta
X: (distanceAE * sinphi, xy)
u = Vector(B, X)
v = Vector(B, Y)
w = Vector(B, D)
TexteAE: "\overline{" + (Name[A]) + (Name[E]) + "} \, = \, " + distanceAE
M = Translate(Y, u)
N = Translate(M, w)
O = Mirror(N, D)
P = Mirror(N, X)
Q = Mirror(N, Y)
p = Segment(N, O)
q = Segment(O, P)
r = Segment(P, Q)
s = Segment(Q, N)
t = Segment(Q, O)
a1 = Segment(N, P)
R, S = Facecachéetriangulaire(Q, N, O)
T, U = Facecachéetriangulaire(Q, P, N)
V, W = Facecachéetriangulaire(N, P, O)
Z, A1 = Facecachéetriangulaire(Q, O, P)
poly4, z, p_1, a1_1 = Polygon(P, A1, Z)
F = Midpoint(s)
H = Midpoint(t)
g = Segment(N, H)
h = Segment(F, O)
I = Intersect(g, h)
J = Mirror(P, I)
G1 = Mirror(N, H)
H1 = Mirror(P, H)
c1 = Conic(P, G1, H1, J, N)
distanceNH1 = Distance(N, H1)
TexteNH1: "\overline{" + (Name[N]) + (Name[H1]) + "} \, = \, " + distanceNH1
G = (0.08650905472666286, -4.983173314074786)
K = (-3.8172820799232223, -4.96634662814957)
i = Segment(G, K)
j = Segment(N, H1)
L = Point(i)
distanceGL = Distance(G, L)
TexteGL: "\overline{" + (Name[G]) + (Name[L]) + "} \, = \, " + distanceGL
k: distanceGL / i
k1: k * distanceNH1
d1 = Circle(N, k1)
B1 = Intersect(d1, j, 1.0)
l = Ray(H, B1)
C1 = Intersect(c1, l, 1.0)
poly5, q_1, c1_1, o_2 = Polygon(C1, O, Q)
D1 = Midpoint(p)
E1 = Midpoint(a1)
m = Segment(P, D1)
n = Segment(O, E1)
F1 = Intersect(m, n)
I1 = Mirror(Q, F1)
J1 = Midpoint(q)
K1 = Mirror(Q, J1)
L1 = Mirror(N, J1)
e1 = Conic(Q, N, I1, K1, L1)
distanceNK1 = Distance(N, K1)
TexteNK1: "\overline{" + (Name[N]) + (Name[K1]) + "} \, = \, " + distanceNK1
k2: distanceNK1 * k
f1 = Circle(N, k2)
b1 = Segment(N, K1)
M1 = Intersect(f1, b1, 1.0)
g1 = Ray(J1, M1)
N1 = Intersect(e1, g1, 1.0)
poly6, o_3, p_2, n1 = Polygon(P, N1, O)
h1 = Segment(F, P)
i1 = Segment(Q, E1)
O1 = Intersect(h1, i1)
P1 = Mirror(O, O1)
Q1 = Midpoint(r)
R1 = Mirror(O, Q1)
S1 = Mirror(N, Q1)
p1 = Conic(N, P1, R1, S1, O)
distanceNR1 = Distance(N, R1)
TexteNR1: "\overline{" + (Name[N]) + (Name[R1]) + "} \, = \, " + distanceNR1
k3: k * distanceNR1
q1 = Circle(N, k3)
j1 = Segment(N, R1)
U1 = Intersect(q1, j1, 1.0)
l1 = Ray(Q1, U1)
V1 = Intersect(p1, l1, 1.0)
poly7, p_3, q_2, v1 = Polygon(Q, V1, P)
poly1, o, p_4, q_3 = Polygon(P, Q, O)
W1 = Intersect(o_3, p_2)
poly2, o_1, p_5, w1 = Polygon(P, W1, O)
Z1 = Intersect(q_1, o_2)
poly3, o_4, q_4, z1 = Polygon(Q, Z1, O)
A2 = Intersect(p_3, q_2)
poly8, a2, p_6, q_5 = Polygon(P, Q, A2)
f = Segment(C, E)
B2 = Point(m1)

Tool: Face cachée triangulaire (command Facecachéetriangulaire)
3 points dans le sens inverses des aiguilles d'une montre pour afficher la face
Input: F, G, H
Output: L, J

g = Ray(F, G)
F' = Rotate(F, 90.0*°, F)
G' = Rotate(G, 90.0*°, F)
h = Ray(F', G')
i = OrthogonalLine(H, h)
I = Intersect(h, i)
j = OrthogonalLine(I, g)
J = Intersect(j, g)
k = Ray(G, H)
G'_1 = Rotate(G, 90.0*°, G)
H' = Rotate(H, 90.0*°, G)
l = Ray(G'_1, H')
m = OrthogonalLine(F, l)
K = Intersect(l, m)
n = OrthogonalLine(K, k)
L = Intersect(n, k)

Tool: ellipse dans parallelogramme (command ellipsedansparallelogramme)
sommet d'une diagonale, sommet, sommet opposéde la diagonale
Input: A, B, C
Output: h

D = Midpoint(A, C)
E = Mirror(B, D)
F = Midpoint(E, A)
G = Midpoint(E, C)
a = Line(F, D)
b = OrthogonalLine(G, a)
c = Circle(G, E)
u = Intersect(c, b, 2.0)
v = Intersect(c, b, 1.0)
d = AngularBisector(v, D, u)
H = Midpoint(A, B)
f = OrthogonalLine(H, d)
g = Line(D, u)
J = Midpoint(B, C)
I = Intersect(f, g)
e = Circle(D, I)
K = Intersect(e, d, 1.0)
h = Conic(F, H, K, J, G)