[cairo] cairo-arc: simplify maximum angle for tolerance calculation
Bertram Felgenhauer
bertram.felgenhauer at googlemail.com
Thu Aug 25 06:59:04 PDT 2005
Hi,
I've thought about the error bounds code in cairo-arc.c a bit more
and have come up with a simpler calculation for the maximum angle of
a single segment, _arc_max_angle_for_tolerance_normalized(). See the
attached patch for details.
Notes:
- The bounds of the function are asymptotically slightly worse than
the original function's bounds - by a factor of 0.999422.
- The first two values of the original table have been adjusted to
use the actual error bound instead of the apprixmation.
- The resulting angle will not divide evenly into M_PI; this does not
matter much because the only user is _arc_segments_needed(), which
adjusts the angle to divide evenly into the arc to be drawn.
- The patch results in no differences in make check.
- Wouldn't this function be more appropriately named
_arc_max_angle_for_normalized_tolerance()?
If anyone has access to the original paper quoted in the comment, I'd be
grateful to know how much of the 'new' stuff is already derived there.
Comments, suggestions, and so on are welcome.
With kind regards,
Bertram Felgenhauer
-------------- next part --------------
A non-text attachment was scrubbed...
Name: cairo-arc-to-simplify-error-bound.diff
Type: application/octet-stream
Size: 3209 bytes
Desc: not available
Url : http://lists.freedesktop.org/archives/cairo/attachments/20050825/d55c7951/cairo-arc-to-simplify-error-bound.obj
More information about the cairo
mailing list