[Math] How does one interpolate between polar coordinates

interpolationpolar coordinates

I'm finding that when I try to use the standard methods of interpolation in polar space, the result is not what I would expect. For example, when interpolating between the following polar coordinates:

  • $(3, 0)$
  • $(1, \pi/2)$
  • $(3, \pi)$
  • $(1, 3\pi/2)$

one would expect the result to be an ellipse. However, using cosine interpolation, the result looks like this.

Is anyone aware of a different method that would produce the results I am looking for?

Best Answer

In order to preserve the convexity of the shape, one should make sure that the function $r=r(\theta)$ has "flat" minima; in contrast, the maxima can and should be relatively sharp. Applied to your data, the cosine interpolation yields $r=2+\cos 2\theta$ while the ellipse would have equation $r=3/\sqrt{5-4\cos 2\theta}$. While the large-scale behavior of these functions is the same, their extrema look rather different.

You can fix this by preprocessing the $r$-values. Instead of $(r,\theta)$ pairs, interpolate between $(1/r^2,\theta)$ pairs and then apply the inverse function $1/\sqrt{r}$. In your problem, this means interpolating between

$(1/9,0)$, $(1,\pi/2)$, $(1/9,\pi)$, $(1,3\pi /2)$

which yields $(5-4\cos 2\theta)/9$. Hence, the shape is $r=1/\sqrt{(5-4\cos 2\theta)/9}$ which is exactly the ellipse with your four points as vertices.

To show that this works for shapes other than ellipses, I replaced the first point with $(5,0)$. The result is a nice convex egg with equation $r= 15/\sqrt{121-8\cos \theta -104 \cos 2\theta}$