
On Thu, Oct 10, 2013 at 10:24:05PM +0200, Markus Engel wrote:
Hi devs,
I changed the code that generates ellipses and arcs to using true elliptical arcs instead of cubic Bezier curves.
Now there's a little problem:
When you create for example a pizza slice and a linked offset, you will see that elliptical arcs are somehow "degenerated", i. e. the number of points decreases with increasing radius.
(https://bugs.launchpad.net/inkscape/+bug/1236830)
Note that the code for offsetting elliptical arcs has been there for quite some time. I'm not sure now whether this is how "offset" is intended to work.
I haven't looked at how it works precisely in recent code, but I can say that offsetting an ellipse does not result in an ellipse (Ask me off line if you want to know why: roughly, only curves whose derivative is a perfect square can be offset), so practically you'll need to use a general purpose offsetting algorithm such as the one in livarot or the incomplete one in lib2geom. Circles can be exactly offset.
The lib2geom one is more accurate at generating offset curves directly from bezier to bezier, but nobody finished writing the caustic removal code. This would be a good project for someone interested in getting into computational geometry/geometric design and I'm happy to mentor them.
The livarot version works by converting to a polygon which has a mostly closed form for offsetting, but it does not adapt precision to the curve in an effective way. I think this would be harder to fix properly.
njh