
I was thinking of some kind of spline. However, for compensating for curvature using a traditional 3D projection matrix, I think you might just need a simple angle,
where -360 degrees would mean a cylinder display:

and 360 degrees would mean a screen that wraps all the way around:

You might also do the same thing vertically..
But, I know a traditional projection matrix can't handle a field of view of 180 degrees or greater, unless you get into ray tracing, software rasterizing, or stitching multiple renderings together.
But what if you get into more interesting display types:

How do you compensate for that? Bezier surfaces?

I think you might be stuck with ray tracing to compensate for this because you'll have to individually calculate the angle of every pixel. It also depends on what angle the viewer is located that you're trying to compensate for. Try to imagine a cylinder screen displaying a landscape, how would the projection work?
What if your screen is not rectangular?


