How do I make my Eggbot designs look right on an egg? (Or: how to transform projected plane so shapes look good on a spheroid?)

313 Views Asked by At

I think my question, in short, is the following: Imagine an spheroid, so with two diameters, and a plane "wrapped" around the spheroid using equirectangular projection. Let the two diameters be equal (so, a sphere), and then draw a circle on the spheroid. Look at the circle from above - it looks circular. If the two diameters are not equal, how do I need to transform the plane such that the circle looks correct again, as best as possible?

Here is more detail on the situation, so you can tell if I'm actually asking the right question :-) I also may have misused maths (I'm British, so "maths") terminology - please tell me if so.

I have an Eggbot. It prints (or rather, plots) flat designs on spherical objects, and also on eggs - i.e. ellipsoids. If you print a design with a circle in it on a spherical object, it looks like a circle. If you print it on an egg, it looks distorted. (Due to the design of the Eggbot, it assumes ellipsoid objects like eggs are spheroids rather than oblate spheroids, and we can do that for this question.)

To compensate for this, it seems like the Eggbot community has a rule of thumb that you stretch designs horizontally by 150% when printing on eggs. But eggs vary, or at least the ones I have do - some are quite round, some are long and thin. So I'd like a more precise answer to the question: how much do I have to stretch my design to get it to look as right as possible on a particular egg?

Eggbot designs are done in Inkscape, using 3200 px wide x 800 px high canvases, and are plotted at 1px per motor stepping in both directions. See the Eggbot coordinate system for existing documentation. The Eggbot takes designs and plots them using an equirectangular projection - that link has a good picture of what a circle looks like drawn on a sphere and on an egg, and the poor look of the sphere on the egg is the "problem" I want to solve a bit more rigorously.

What I'm hoping for is a formula which takes two inputs - the two diameters of the egg - and outputs a percentage between 100% and 200% which is the y-axis scaling factor that I need to use to make the design look best on that particular egg.

Please let me know if more info is necessary. I'm new here, so apologies for any lapses in etiquette, and thank you for your consideration :-)

Update: Thanks for the initial feedback. Yes, the principal axes of the ellipsoid are the coordinate axes. The Eggbot spins the egg around its long axis, and then moves a pen up and down the length of the same axis, thereby giving access to most points on the egg.

The circle I want to look good is a circle centred in the middle of the long axis, with a radius such that the whole circle is visible from one side. This link has a good picture of what I mean.

I think we could start with "looking like a circle" meaning lying on a plane crossing the ellipsoid, yes.