cilindro = Point(xAxis)
D = Mirror(cilindro, (0, 0, 0))
centro = Point(Segment[cilindro, D])
a = OrthogonalPlane(centro, xAxis)
radiocircunferencia = PointIn(a)
c = Circle(xAxis, radiocircunferencia)
b, d, e, f = Cylinder(cilindro, D, Distance[centro, radiocircunferencia])
A = PointIn(a)
g, h = Tangent(A, c)
F_1, G = Intersect(h, c)
H, I = Intersect(g, c)
k = CircleArc(centro, F_1, H)
F' = Point(k)
i = Line(centro, F')
A' = Mirror(A, i)
j = Plane(A, cilindro, D)
p = IntersectPath(j, b)
K, L, M, N = Corner(p)
F = Point(Segment[L, M])
l = Plane(F, a)
m = IntersectPath(j, l)
A'_1 = Mirror(A, m)
n = Ray(F, A'_1)
q = Ray(F', A')
B' = Point(q)
B = Point(n)
r = Segment(B', F')
s = Segment(F', A)
t = Segment(A, F)
f_1 = Segment(F, B)