Curvas de Nivel

Una manera de visualizar una función de dos variables es mediante un campo escalar en el que a cada punto (x,y) se le asigna el escalar z = f(x,y). Un campo escalar puede representarse mediante curvas de nivel (o líneas de contorno) a lo largo de las cuales el valor de f(x,y) es constante (Larson, en Cálculo Esencial  2008).
A continuación se presenta la construcción de un paraboloide elíptico. 
La idea es que puedan dar una definición de Curvas de Nivel. Para ello pueden empezar moviendo el deslizador k o rotando el paraboloide.

Preguntas:
1) ¿Qué relación encuentran entre las Vistas Gráficas 3 D y 2 D?
2) ¿Qué implicancia tiene k?
3) ¿Qué relación hay entre las curvas y k?
4) ¿Sucedería lo mismo con otras funciones?

f (x , y) =

g (x , y) =

Corte x

Corte y

Curva de nível

g (x , y)

f(x,y)

k = -0.33774529247177987 (slider from If[cn, -10, If[cx, x(A), If[cy, y(C), -5]]] to If[cn, 10, If[cx, x(B), If[cy, y(D), -5]]], step 0.1)
a: z = k
f(x, y) = ((x^(2) + (3 * y^(2))) * ℯ^((-x^(2)) - y^(2)))
ct1 = Textfield(f)
i = IntersectPath(a, f)
g(x, y) = x^(2) + y^(2)
ct2 = Textfield(g)
c: x = k
b: y = k
d = IntersectPath(a, g)
e = IntersectPath(b, f)
h = IntersectPath(b, g)
j = IntersectPath(c, f)
l = IntersectPath(c, g)
cn = false
fg = false
n = 5 (slider from -5 to 5, step 1)
lista1 = Sequence(z = i, i, -5, n)
m: z = n
lista2 = Sequence(IntersectPath[Element[lista1, j], f], j, 1, n + 6)
lista3 = Sequence(x = i, i, -5, n)
lista5 = Sequence(y = i, i, -5, n)
lista4 = Sequence(IntersectPath[Element[lista1, j], f], j, 1, n + 6)
o = Plane((0, 0), x = 3)
cf = false
A = Point(xAxis)
B = Point(xAxis)
C = Point(yAxis)
D = Point(yAxis)
p = OrthogonalLine(A, xAxis)
q = OrthogonalLine(B, xAxis)
r = OrthogonalLine(D, yAxis)
s = OrthogonalLine(C, yAxis)
E = Intersect(r, p)
F = Intersect(r, q)
G = Intersect(s, q)
H = Intersect(s, p)
pol1, e_1, f_1, g_1, h_1 = Polygon(E, F, G, H)
cx = true
cy = false
k_1 = -0.9 (slider from If[cn, -10, -5] to 10, step 0.1)
t: y = y(C)
u: y = y(D)
v: x = x(A)
w: x = x(B)
a_1 = IntersectPath(t, f)
b_1 = IntersectPath(u, f)
c_1 = IntersectPath(v, f)
d_1 = IntersectPath(w, f)
i_1 = Segment(E, (x(E), y(E), f(x(E), y(E))))
j_1 = Segment(F, (x(F), y(F), f(x(F), y(F))))
l_1 = Segment(G, (x(G), y(G), f(x(G), y(G))))
m_1 = Segment(H, (x(H), y(H), f(x(H), y(H))))
n_1 = Segment((x(A), k), (x(B), k))
p_1 = Segment((k, y(C)), (k, y(D)))