<table cellspacing="0" cellpadding="0" border="0" ><tr><td valign="top" style="font: inherit;"><DIV>It seems to me that the methods being proposed are all somewhat heuiristic. I don't think it's very difficult to do this "rigorously".</DIV>
<DIV> </DIV>
<DIV>How about this ...</DIV>
<DIV> </DIV>
<DIV>The curvature of a Bezier cubic curve R(t) is a continuous function. We are looking for "tight" regions where it's value is less than the pen radius (P). So, first we find the points where R(t) = P . This involves finding all the zeros t1, ..., tn of the real-valued function R(t) - P. Numerical methods will be required, but these are well-known, readily available, reliable, fast. I can't prove it, but my intuition says there won't be more than 4 of these points on any given cubic. Maybe. Then we divide the original curve at t1, ..., tn. Then we cycle through the resulting segments, keeping the ones where R>P, and discarding the ones with R<P. There will be nasty numerical problems if R(t) is roughly equal to P over the entire length of the original curve, but that's not very likely.</DIV>
<DIV> </DIV>
<DIV>People in CAD/CAM do this sort of computation all the time. It's called "removing loops from offset curves" or something like that. The problem of moving an NC milling cutter around a tight corner is exactly the same as moving a pen. I'll find some references, if anyone is interested.</DIV>
<DIV> </DIV>
<DIV>I have similar thoughts on the problem of detecting inflexions. Again, it's just a problem of finding the zeros of a real-valued function. I think there can be no more than 2 inflexions on a Bezier cubic. Again, CAD systems frequently do this computation, so code exists.</DIV></td></tr></table>