This post is pretty much automatically generated + copy-n-paste.

In my last post I more or less assumed everyone is at least passingly familar with polymomial approximations of sine and cosine on a narrow range. And approximating concentric square to disc is only interesting if you don’t have fast hardware sine and cosine.

Example of approximate concentric

A straight forward implementation of concentric with approximations might look like this:

The area distortion of the approximate equal area method from the previous post:

Which almost all outside the plot range here. Now concentric with sine and cosine approximated using 2 terms, minimizing relative error and clamped to correct at end-points (sin2c and cos2c below):

and now using square root instead of cosine:

Which is a nice improvement (the approx sin squared + cos squared != 1 is corrected). Change the sine approximation to 3-terms (still root for cosine):

Using the scale of the previous plots this would be all white.

Spewed out approximations

Here are some low rank approximations of sine and cosine. The non ‘c’ variant are minimax polynomials and the ‘c’ variants are sloppy end-point contrained. These were generated with this (script). All of the approximations are for minimizing relative error, but the error plots below are abs error (my sollya base scripts need some work). The awkward form of the functions is to be bit exact singles.