Re: Adaptive slicing problems.

From: Peter de Jager (
Date: Fri Mar 07 1997 - 17:27:22 EET

Raymond Hope wrote:
> Hi Peter, I wondered when you would comment on this.
> On Tue, 4 Mar 1997, Peter de Jager wrote:
> > Hello Ray and others interested in this thread,
> >
> > I have done research in the area of adaptive slicing and generating
> > layers with ruled edges from BREP geometry. I also calculate the
> > error from the radius of curvature and angle of the surface normal.
> >
> I think I followed what you wrote about identifing vertices, but I don't
> think you answered my problem of how to estimate the error for cases when
> they are not in the layer plane. For example a bolt with a triangular
> thread, no matter how thin you slice it there will always be two or more
> vertices in the layer. The circular approximation does not work here, and
> I have come up with no alternative but to calculate the intersection curve
> between the surface and the vertical normal plane, and determine the error
> exactly. However this is a very expensive solution.

But from a bolt with triangular thread,
a geometry like this (crude ascii art...)

    \_______ /
   B/ ^ / angle theta
   / | x /_____
  A\ |

it stil is possible to 'estimate' a
'radius of curvature' R
using points A, B and C.
Suppose the estimated R is 2mm.
The equation
  layer thickness d = 2 cos theta * sqrt(2*delta*R-delta^2)
only holds for delta << R.
Suppose we choose delta=0.2mm
Suppose also theta is approx. 60 degrees
Then d = 0.88 mm.

Of course, in such a situation it is always better
to recognize that we are dealing with a specialized
geometry and treat it as such:
  you know the thread diameter (?, I don't know if that's
  the correct term, but I mean the distance between 2
  successive treads, x in the above picture)
  and then you will have to use a layer thickness <=0.5*x
  at least if you want to reproduce the thread.

Determining the error exactly is a computationally
expensive operation, but as computers are becoming
faster everyday I don't think that a lot of
computations represent a real problem.

> > > Problem 2.
> > >
> > > The method mentioned above to predict the error, produces a predicted
> > > error much less than the true value near inflection points. This is
> > > because at an inflection point the curvature becomes zero, and is also very
> > > small nearby. So how should we predict error near inflection points?
> >
> > You can perform a curvature analysis to find these problem areas.
> > (another excerpt:)
> > An other approach is to use a two-way approach to ensure that regions
> > of higher curvature are not missed. First in the upward direction a
> > new layer thickness is calculated. Secondly in the downward direction
> > at the new proposed
> > sliceheight a check-calculation is made. This check-calculation is made
> > to
> > ensure that the proposed layer thickness does not result in exceeding
> > the
> > user-specified $\delta$ in the approximation. This
> > check is necessary because of a possible changing curvature in
> > the upward direction of the CAD model.
> This does work, except near inflection points you are dealing with areas of
> very low curvature. One of the solutions I came up with was to recalculate
> the curvature at the top and bottom of layers where inflection points
> occur. This does ensure the user specified tolerance is not exceeded,
> but tends to select a thickness smaller than could have been used.
> Regards
> Ray Hope

As you mentioned above, you could calculate the intersection
curve between the surface and the vertical normal plane,
and determine the error exactly to come up with the
'best' layer thickness. Otherwise you may want to check not
the curvature itself, but the derivative of the curvature.
This will indicate areas with more or lesss rapidly changing
curvature and will have a maximum at inflection points
(at least I think that's the case, you might want to
check that).

Peter de Jager
Delft University - Industrial Design Engineering

This archive was generated by hypermail 2.1.2 : Tue Jun 05 2001 - 22:39:24 EEST