var('w', 'x', 'y', 'z')
f(x, y) = x^2 + y^2
t = pi / 3
a = 2
b = 1
fx(x, y) = f(x, y).derivative(x)
fy(x, y) = f(x, y).derivative(y)
S = plot3d(f(x,y), (x, -3, 3), (y, -3, 3), color = 'blue', opacity = 0.5)
P = parametric_plot3d([a + w*cos(t), b + w*sin(t), z], (w, -3, 3), (z, 0, 10), color = 'red', opacity = 0.5)
C = parametric_plot3d([a + w*cos(t), b + w*sin(t), f(a + w*cos(t), b + w*sin(t))], (w, -3, 3), color = 'black')
T = parametric_plot3d([a + w*cos(t), b + w*sin(t), f(a, b) + w*(fx(a, b)*cos(t) + fy(a, b)*sin(t))], (w, -3, 3), color = 'black')
show(S + P + C + T, aspect_ratio = [1, 1, 0.5])