speed=

A = (1.750482639572527, 2.5776389781524953)
α = 0.9599310885968813 rad (slider from 0 to 6.283185307179586, step 0.017453292519943295)
v_0 = 2
inputBox1 = Textfield(v_0)
g = 2.4 (slider from 0 to 15, step 0.1)
f = If(x ≥ x(A), y(A) + (x - x(A)) * tan(α) - g / 2 * ((x - x(A)) / (v_0 * sin(α)))^(2))
time = 2.9 (slider from 0 to 10, step 0.05)
a = CurveCartesian(x(A) + v_0 * cos(α) * t, y(A) + v_0 * sin(α) * t - g / 2 * t^(2), t, 0, time)
B: (x(A) + v_0 * cos(α) * time, y(A) + v_0 * sin(α) * time - g / 2 * time^(2))
list1 = Sequence((x(A) + v_0 * cos(α) * t, y(A) + v_0 * sin(α) * t - g / 2 * t^(2)), t, 0, time, 0.1)

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])