Points mobiles : M, A

O = Intersect(yAxis, zAxis)
S = (0, 0, 7)
C_1 = Point(xAxis)
d = OrthogonalLine(C_1, xOyPlane)
M = Point(d)
e = Plane(M, xOyPlane)
G = Intersect(zAxis, e)
i = Segment(C_1, O)
j = Segment(M, G)
k = Segment(C_1, M)
A = (-3.3334986732365834, -3.409025736124235, -3.552713678800501E-15)
g = Segment(O, S)
C = Mirror(A, O)
a = Segment(A, C)
b = OrthogonalLine(O, a, space)
c = OrthogonalPlane(O, a)
f = Circle(g, A)
h = IntersectPath(c, xOyPlane)
B = Point(f)
D = Point(f)
poly1, b_1, arêteBC, b', d_1 = Polygon(A, B, C, D)
l, faceABS, faceBCS, faceCDS, faceBDS, arêteAS, arêteBS, arêteCS, arêteDS = Pyramid(poly1, S)
m = IntersectPath(e, faceABS)
E, F = Intersect(e, faceABS)
n = IntersectPath(e, faceBCS)
B', C' = Intersect(e, faceBCS)
p = IntersectPath(e, faceCDS)
J, D' = Intersect(e, faceCDS)
q = IntersectPath(e, faceBDS)
L, A' = Intersect(e, faceBDS)
poly2, e_1, f_1, c', l_1 = Polygon(E, F, C', L)
r = Segment(S, G)