Hi, just a few conclusions:
1. The so-called "Constant Diameter" is wrong, because it does not fit the definition of diameter, better to call it "Constant Height (H)" or "Turning Radius (see considerations below)";
2. Reuleax Polygon (RP) when used to roll overlapping objects does not rotate around an axis contained within the RP;
3. It makes a set of rotations of (Pi / N) each having the vertices as axis, thus, the radius of each rotation will be the height defined in (1);
4. These rotations will alternate either with an upper vertex as an axis or with a lower vertex as an axis, starting when a vertex touches the surface;
5. To exemplify, we will use the polygon with an upper vertex (as you drew), the vertex will remain fixed on the upper surface until the rotation of (Pi / (2N) is completed), when this rotation is finished, a vertex will touch the lower surface , inverting the mechanism, now this vertex will remain fixed on the lower surface until the rotation of (Pi / N) is completed and when this rotation is finished a vertex will touch the upper surface, inverting the mechanism again and so on.
6. Note above that in this example only the first rotation is (Pi / (2N)), the others will be (Pi / N), because the initial position considers the base supported in the middle of the arc;
7. Successive rotations have their "Constant Diameter" as radius, so it is not a diameter but a Radius (1).
8. Each of the "alternating rotations" will provide a horizontal displacement of H*(Pi/N);
9. An algorithm to animate this movement does not seem complex now that I understand the mechanism, but it would take more time.
10. I didn't have time to review what I wrote, so consider the existence of some errors on my part, I would appreciate corrections.
Well, I hope I'm not wrong in my conclusions.