The code for the animation resides in the button Animation 2. Unfortunately, if you are viewing the example on the web site, you can't access the code. Here's the essence of the code:
q := plot(x^2, x = 0 .. 1, filled = true):
F := transform((x,y)->[x,0,y]):
Q := plots:-display(F(q)):
V := RootedVector(root=[2,0,0],[0,0,1]):
A := PlotVector(V,color=black):
p := display([seq(rotate(Q, (2*Pi*(1/30))*k, [[2, 0, 0], [2, 0, 1]]), k = 0 .. 30)], insequence = true):
spin := display([A, p]):
p4 := translate(animate(plot3d,[[r,t,(r-2)^2],r=1..2,t=-Pi..x,coords=cylindrical,filled],x=-Pi..Pi, paraminfo=false,frames=31),2,0,0):
display([p4,spin],labels=[x,z,y],tickmarks=[4,,2], orientation=[-55,70], axes=frame,scaling=constrained);
The variable q contains a graph of the region to be rotated, but it lies in the xy-plane.
The function F changes the plot data structure q so that the y-height becomes the z-height, and the y-coordinate is set to zero.
Q is then the plot data structure for the transformed region q.
V is the arrow used to represent the axis of rotation.
A is a graph of the arrow V.
The animation of the rotation of Q about V is given the name p. This animation has 31 frames, each of which is obtained by applying the rotate command to the image in Q.
When the animation p is joined to A, the graph of the arrow V, it is called "spin".
The animation p4 uses cylindrical coordinates to draw the ever-expanding surface of the solid of revolution. However, this animation has to be translated so its vertical axis coincides with the vector V. This is done with the translate command.
The final display joins the animation p4 with the animation "spin". The result is the given region rotated about the axis x=2, dragging along the surface of revolution generated as the region rotates.
This is not the most efficient code, and a worksheet containing all these frames is slow to load. The animation generated by Carl Love's code is less resource-intensive.