Skip to Content.
Sympa Menu

cgal-discuss - Re: [cgal-discuss] Enlarging/Thickening a Polyhedron_3 or Nef_polyhedron_3

Subject: CGAL users discussion list

List archive

Re: [cgal-discuss] Enlarging/Thickening a Polyhedron_3 or Nef_polyhedron_3


Chronological Thread 
  • From: Alexander Teibrich <>
  • To:
  • Subject: Re: [cgal-discuss] Enlarging/Thickening a Polyhedron_3 or Nef_polyhedron_3
  • Date: Tue, 3 Mar 2015 17:38:27 +0100

Hi Alex,

thanks a lot for the suggestion. Unfortunately, the problem is part of a bigger program, so I can't just do it manually. And cgal works great for the other use cases, so if possible I would like to stick with it.

Alex

--
Alexander Teibrich
\\ www.teibrich.de | +49 (0)151 56 11 29 52

2015-03-03 17:23 GMT+01:00 Alex Tsui <>:
Hi,

I have a non-CGAL suggestion. You can use Blender to create an offset mesh (e.g. [1]). The approach would be:

1. Import the mesh into Blender
2. Add a Solidify modifier
3. Uncheck the 'Fill Rim' option so that the inner and outer shells are disconnected
4. Export either the inner or outer shell as you need

The first minute of the video tutorial [2] may get you started. I'm not sure if it asserts non-intersection in all cases, but it might be worth a shot.

--Alex

On Tue, Mar 3, 2015 at 7:58 AM, Alexander Teibrich <> wrote:
Hi,

I'm looking for a way to enlarge/thicken a non-convex Polyhedron_3 or Nef_polyhedron_3 A by a certain distance x to get B. Basically something like the outset function of inkscape [1]. Scaling alone is not an option, since I have to ensure that B is strictly contained in A.

My current approach is to iterate through all vertices and shift each vertices by x along the vertex normal, that is the average of the normals of all adjoining faces. This works with simple geometries, but quickly leads to self-intersecting faces and invalid Polyhedron_3 / Nef_polyhedron_3 with more complex geometries. Intersecting or overlapping geometries are not strictly a problem, but the geometry has to valid and manifold to be used for future CSG operations.

Shifting A into all possible directions (in 90° or 45° steps) and doing a union operation over all translations would work, but is horribly slow.

Is there a better way to do this?

Thanks!

Alex


--
Alexander Teibrich





Archive powered by MHonArc 2.6.18.

Top of Page