In a previous post, I showed how to geometrically construct a sine-like function for a regular polygon.
I also pointed out how the shape of the function’s graph depends on the orientation of the polygon, since it isn’t perfectly symmetric like the circle.
This animation illustrates how the polygonal sine (dark curve) and polygonal cosines (clear curve) change as the generating polygon rotates.
First of all, it is important to point out these functions are not based on the perimeter of the shape, like it is for the unit circle. We’re still sticking to the interior angle here. If we used the perimeter as a substitute for the angle we would just get a deformed linear spline of the sine function, which is rather useless and boring.
In order to find these functions for an arbitrary polygon, we first need to write the polygon in polar form. That is, we want the radius for a given angle. In a circle, this is a constant value.
A general “Polar Polygon” function is:
PPn(x) = sec((2/n)·arcsin(sin((n/2)·x)))
Where n is the number of sides of the polygon. If n is not an integer, the curve is not closed.
Armed with this function, we can quickly find the polygonal sine and polygonal cosine:
Psinn(x) = PPn(x)·sin(x)
Pcosn(x) = PPn(x)·cos(x)
As n grows, the functions approximate the circular ones, as expected. To rotate the polygon, just add an angle offset to the x in PPn.
This technique is general for any polar curve. Here’s a heart’s sine function, for instance
So, what is it good for?
I’ve used this several times when I wanted some smooth interpolation between a circle and a polygon, in such a way that the endpoints of the interpolation are a perfect circle and a perfect, pointy polygon. It’s useful in parametric surfaces, such as in this old avatar of mine:
Now you can also listen to what these waves sound like