More precise clipping with implicit functions

david.pont at david.pont at
Fri Jan 21 19:29:00 EST 2000

     I too have wrangled with this problem. I have implemented a 'naive' class
to treat polydata as an implicit function, allowing clipping/cutting with truly
arbitrary geometry. But the relative resolution of the datasets, one to clip or
cut with, versus the other to be clipped or cut, causes the same type of
problems you are having. This is a result of the fact that implicit functions
are only evaluated at each point in the dataset to be operated on. On review
this is entirely logical, but leaves us with behaviour which at face value is
unexpected. The more dense the points in the target dataset, the more faithfully
it can interact with the geometry of the implicit function. In our case we are
sampling an implicit function (which can have 'infinite' resolution) at very low

To date the only (dumb) solution I have thought of is to increase the
resolution/point density of the target dataset. In my case, and yours it seems,
the data set is polygonal. I thought about first passing the dataset through a
triange filter and then a recursive algorithm which takes each triangle and
subdivides it into smaller triangles until a user specified threshhold (maximum
edge length) is reached. In your case your large square polygon would be
fractured into small triangles (maximum edge length something like the radius of
your implicit sphere might be satisfactory?) and these new points would interact
with the small sphere as 'expected'. This is rather pathological behaviour in
the world of geometry, the reverse of decimation, and may make very large
datasets (rather slowly too!). Actually your case suggests one improvement,
restrict activity the a user specified 'bounds', no point making lots of little
triangles outside the region of interest. By the way I do recall an announcement
about 'subdivision surfaces' which sounded like they might be useful for this
type of thing?, probably just wishful thinking on my part?

So this one has had me thinking for quite a while, if you have any insights let
me know.

          Dave Pont

This is the private VTK discussion list.  Please keep messages on-topic.
Check the FAQ at: <>
To UNSUBSCRIBE, send message body containing "unsubscribe vtkusers" to
<majordomo at>.  For help, send message body containing
"info vtkusers" to the same address.     Live long and prosper.

More information about the vtkusers mailing list