The function f:(ℝ^2)⟶ℝ, z=f(x,y)=(x^2)+(y^2).  We graph this both as a subset of three-space.

scalemax = 10;
limit = Sqrt[scalemax];
scale = {-scalemax-1.,scalemax+.1};
bowl = Plot3D[x^2+y^2,{x,-limit,limit},{y,-limit,limit},RegionFunction->Function[{x,y,z},x^2+y^2≤scalemax],PlotRange->{scale,scale,{-1,scalemax}},Axes->True,AxesOrigin->{0,0,0},Boxed->False,AspectRatio->1,ImageSize->400]

Here, we create a horizontal section along the z-axis and slide it up and down.  The intersection of this constant z-plane with the graph of the function  z=f(x,y)=(x^2)+(y^2) is what call the section.  Its projection down to the xy-plane (the floor) is a circle given by the equation c=(x^2)+(y^2), ecentered at the origin and of radius (Sqrt[c])is the c-contour, which we graph at right in the domain (ℝ^2).

hplane[t_]:= ParametricPlot3D[{x,y,t},{x,-scalemax,scalemax},{y,-scalemax,scalemax},Mesh->None,PlotStyle->Opacity[.5]]
hcut[t_]:= ParametricPlot3D[{Sqrt[t]*Cos[u],Sqrt[t]*Sin[u],t},{u,-scalemax,scalemax},PlotStyle->{Red,Thick}]
levelsetpoint[t_]:= Graphics3D[{PointSize[Large],Red,Point[{0,0,t}]}]
floorview[t_]:=ParametricPlot3D[{Sqrt[t]*Cos[u],Sqrt[t]*Sin[u],0},{u,-scalemax,scalemax},PlotStyle->{Red,Thick}]
levelsetplot[t_]:=ParametricPlot[{Sqrt[t]*Cos[u],Sqrt[t]*Sin[u]},{u,-scalemax,scalemax},PlotStyle->{Red,Thick},PlotRange->{scale/2,scale/2},Axes->True,AxesOrigin->{0,0},AspectRatio->1,PlotLabel->Style["xy-plane at fixed z-level",FontSize->18],AxesLabel->{x,y},ImageSize->250]
Manipulate[{Show[bowl,hplane[z],levelsetpoint[z],hcut[z],ImageSize->400],levelsetplot[z]},{z,-1,10}]

The vertical slice, along the plane corresponding to a fixed value for the variable  x, is graphed here.  The intersection with the graph gives us information about the graph of the function.  In the slice, for  x=c, the intersection looks the graph of z as a funciton of only y, specifically  z=(y^2)+c.  We show this intersection at right, graphed in the y z-plane corresponding to x=c.

xslice[t_]:= ParametricPlot3D[{t,y,z},{y,-scalemax,scalemax},{z,-scalemax,scalemax},Mesh->None,PlotStyle->Opacity[.8]]
xslicepoint[t_]:=Graphics3D[{PointSize[Large],Red,Point[{t,0,0}]}]
xvcut[t_]:= ParametricPlot3D[{t,y,t^2+y^2},{y,-scalemax,scalemax},PlotStyle->{Red,Thick}]
incutplot[t_]:=Plot[t^2+x^2,{x,-scalemax,scalemax},PlotStyle->{Thick,Red},PlotRange->{{-scalemax/2,scalemax/2},{-1,scalemax}},PlotLabel->Style["yz-plane at fixed x-slice",FontSize->18],AxesLabel->{y,z},ImageSize->250]
Manipulate[{Show[bowl,xslice[x],xslicepoint[x],xvcut[x]],incutplot[x]},{x,-10,10}]

Here, we use the Mathematica function CountourPlot to view the level sets of z=f(x,y)=(x^2)+(y^2).

ContourPlot[x^2+y^2,{x,-scalemax,scalemax},{y,-scalemax,scalemax}]

Consider now the new function of 3 variables w=f(x,y,z)=(x^2)+(y^2)+(z^2).  We cannot actually “see” the graph of this function as it lives in 4-dimensional space.  However, we can “cut” through it with horizontal sections and slices by thinking of the floor of (ℝ^4) as the 3-dimensional  x y z -space and w as the height over it.  So what do the contours (the projections of the sections back into x y z -space) look like?

wcutupper[c_]:= ParametricPlot3D[{t,u,Sqrt[c-t^2-u^2]},{t,-Sqrt[c],Sqrt[c]},{u,-Sqrt[c],Sqrt[c]},Mesh->None,Axes->True, AxesOrigin->{0,0,0},Boxed->False,PlotRange->{-scalemax/3,scalemax/3}]
wcutlower[c_]:= ParametricPlot3D[{t,u,-Sqrt[c-t^2-u^2]},{t,-Sqrt[c],Sqrt[c]},{u,-Sqrt[c],Sqrt[c]},Mesh->None,Axes->True, AxesOrigin->{0,0,0},Boxed->False,PlotRange->{-scalemax/3,scalemax/3}]
xaxispointofcut[c_]:=Graphics3D[{PointSize[Large],Red,Point[{Sqrt[c],0,0}]}]
Manipulate[Show[wcutupper[w],wcutlower[w],xaxispointofcut[w]],{w,.001,4}]

We do the same now for w=f(x,y,z)=(x^2)+(y^2)-(z^2).  Again, we cannot actually “see” the graph of this function as it lives in 4-dimensional space.  However, we can “cut” through it with horizontal sections and slices by thinking of the floor of (ℝ^4) as the 3-dimensional  x y z -space and w as the height over it.  So what do the contours (the projections of the sections back into x y z -space) look like?

wnewcutupper[c_]:= ParametricPlot3D[{t,u,Sqrt[c+t^2+u^2]},{t,-4,4},{u,-4,4},Mesh->None,Axes->True, AxesOrigin->{0,0,0},Boxed->False,PlotRange->{-scalemax/3,scalemax/3}]
wnewcutlower[c_]:= ParametricPlot3D[{t,u,-Sqrt[c+t^2+u^2]},{t,-4,4},{u,-4,4},Mesh->None,Axes->True, AxesOrigin->{0,0,0},Boxed->False,PlotRange->{-scalemax/3,scalemax/3}]
Manipulate[Show[wnewcutupper[t],wnewcutlower[t]],{t,-2,4}]

Here, we play with the 3-dimensional version of the contour plot, CountourPlot3D to view the level sets of w=f(x,y,z)=(x^2)+(y^2)-(z^2).

ContourPlot3D[x^2+y^2-z^2,{x,-scalemax-4,scalemax+4},{y,-scalemax-4,scalemax+4},{z,-scalemax,scalemax},Contours->{-40,0,40},Mesh->None,Axes->True,AxesOrigin->{0,0,0},Boxed->False,ContourStyle->Directive[Opacity[0.6]]]