These remarks make some interesting observations in reference to a previous post. The intuition here is correct, and the motion displayed in the 2D case can be thought of as a special case of a certain 3D motion when viewed from a particular perspective. Let’s experiment with this idea here.
Its important to note that two properties are at play that make this phenomenon work the way it does. This first of these, as mentioned in the response, is that the white circles do not move back and forth along their respective lines at the same speed. Each white circle actually slows down as it approaches the edge of the black circle, but speeds up as it passes through the center. More specifically, how the velocity of the white circle changes with time can be described as a sine wave. Compare the motion of the white and blue circles in the animation below. The white circle moves back and forth while maintaining the same speed throughout, whereas the blue circle’s motion is sinusoidal.
The other property that the circles must exhibit in order to create the outline of a rolling circle is to reach the edge of the black circle in their respective motions at just the right time. This is accomplished by spacing them out just right. Consider the case where each of the circles all start at the outer edge at the same time. The resulting motion would just look like this:
Here, the circles velocities do not very sinusoidally and each moves with constant speed. By having each circle reach the outer edge at different times, the following motion results:
Notice how in this case the white circles do not form the outline of a perfect circle. Now, by keeping the circles spaced out just right, and also having the speeds vary sinusoidally we arrive at the desired effect that we saw in the original post:
Let’s try to generalize this idea into three dimensions. Instead of circles we’ll use spheres, and instead of circles moving back and forth along a straight line we’ll have the spheres move in a circular orbit. In the animation below, we see a sphere that is orbiting along the outer shell of a larger sphere in a circular path along the outer shell of a larger sphere. Note that the sphere is moving with constant speed. The plane in which the sphere is orbiting is displayed along with a bounding box for a better sense of depth in 3D.
Now we add some more orbiting spheres that also move in circular paths, where each of the paths lies in evenly spaced planes that are all perpendicular to a plane (not shown) that would be parallel to the front-most face of the bounding box.
In the above animation there are 8 spheres that are orbiting, and for each of the 4 planes there is a pair of spheres that orbit within the plane. Let’s now view this same scene looking head-on through the front face of the bounding box:
From this perspective the planes now look like lines since we’re viewing them along their edges. Here, we are taking into account the proper perspective in 3D, and you can tell by noticing that the sizes of the spheres change as they move closer or further away. We can ignore the perspective, and view the scene as projected into 2D via an orthographic projection yielding the following animation:
It can now be seen that this effect results in exactly what we observed in the 2D case! Something interesting happened though. We did start with 8 spheres originally but in this view half of them get obscured by the other half since one is in front of the other. If we really wanted to see 8 spheres moving around, we would actually need to work with 16 spheres in total. The following animations use 16 spheres in the same three perspectives we just experimented with, but this time the planes have been removed:
The relationship here between the linear sinusoidal motion in the 2D case and the circular orbit with constant speed in the 3D case can be seen as a generalization of an analogous relationship between the sin function and the unit circle. We wont invest in the details here, but just take a look at this animation for an idea (taken from Wikipedia):
If you would like to see the Mathematica code for the other animations just ask. : )