A = Intersect(xAxis, yAxis)
B = Point(xAxis)
C = (-1.5720438102130376, 3.0096604301229046)
C' = Mirror(C, xAxis)
D = Midpoint(B, A)
E = (-3.0360255618694167, 1.2267708860135704)
c = CircleArc(B, C', C)
F: (x(E), 0)
u = Vector(F, E)
a = Line(E, xAxis)
G = Intersect(c, a)
b = Line(G, D)
d = Line(E, D)
H, K = Intersect(c, d)
e = Line(H, xAxis)
I = Intersect(e, b)
J: (x(I), 0)
v = Vector(J, I)
f = Line(K, xAxis)
L = Intersect(b, f)
M: (x(L), 0)
w = Vector(M, L)

Tool: Func-tan-thru-Pt (command FuncTanThruPt)
select function and point
Input: f, F
Output: tangentLines, tangentPoints

f(x) = -2 * x^(3) + 2 * x^(2) - 4 * x + 7
g(x) = (x(F) - x) * f'(x) - (y(F) - f(x))
groots: {Root[g]}
xcoord: x(groots)
ycoord: f(xcoord)
tangentPoints = Sequence((Element[xcoord, j], Element[ycoord, j]), j, 1, Length[xcoord])
tangentLines = Sequence(Line[F, Element[tangentPoints, j]], j, 1, Length[xcoord])