This demo shows the graph of a function with a collection of level curves, and, in the "2D Projection" window, the corresponding contours, colored in ascending order from purple to red.  A white parametric curve can be moved by changing the position of a hotspot in the domain.  The high and low points of the curve will occur at points of the domain where the curve is tangent to a contour, or where the curve passes through a critical point of the function being graphed.  Selecting "gradient" in the control panel will display the gradient vector field of the function, multiplied by the constant c.  At each point of a contour, the gradient is perpendicular to the contour.