0

I have a list of Surfaces defining a 3D Object. Those surfaces have the following constraints:

  • each surface is defined with an array of vertices defining its border
  • no holes are inside of an surface
  • surfaces do not overlap or go through other surfaces
  • each vertex on each edge of the surface is included
  • all surfaces are adjectant to at least two other surfaces
  • objects created by those surfaces may be concave

I want to get the outer hull of the 3D Objects created by those surfaces - there is no empty space inside a 3D Object
Does anyone know an algorithm?

Problems:

.) I already can exclude every surface which has any edge only touching this surface

  • each surfaceedge is part of at least 2 surfaces

However image 4 cubes toching each other in only 1 edge making it possible to create a single surface between them which is not part of any 3D object

  []
[]  []
  []

.) getting 3D objects of surfaces only part of the hull is easy. However if there are surfaces inside an 3D object and connected to the hull, how do I find those?

Any pointers would be great. Thanks in advance

Shiga
  • 11
  • So I'm a little bit confused. Do you mean a convex hull? What will you be doing with the result? What kind of surfaces are these? – tfinniga Sep 10 '13 at 08:36
  • no, I mean concave objects, e.g. a star polyhedron. to specify the surfaces: each surface is defined through an array of vertices which define its edges either clockwise or counterclockwise. I do not know wheter or not this surface is part of an object or not, wheter it is inside an object or part of the hull. – Shiga Sep 16 '13 at 06:38
  • to surfaces do not overlap/ go through other surfaces: e.g.: this is not possible: surface1=[-1;-1;0 1;-1;0 1;1;0 -1;1;0], surface2=[0;-1;-1 0;1;-1 0;1;1 0;-1;1] instead: surface1a=[-1;-1;0 0;-1;0 0;1;0 -1;1;0],surface1b=[0;-1;0 1;-1;0 1;1;0 0;1;0], surface2a=[0;-1;-1 0;1;-1 0;1;0 0;-1;0], surface2a=[0;-1;0 0;1;0 0;1;1 0;-1;1] – Shiga Sep 16 '13 at 07:40
  • to: each vertex on each edge of the surface is included : if a surface with vertices [ .., 0;0;0 10;0;0 ...] and a second surface with vertices [... 0;0;0 5;0;0 ...] exist, the vertex [5;0;0] is included in the first surface ([... 0;0;0 5;0;0 10;0;0 ...]) – Shiga Sep 16 '13 at 07:43
  • to all surfaces are adjectant to at least two other surfaces: since the constraints before exist, surfaces with edges only adjectant to this surface can be deleted. – Shiga Sep 16 '13 at 07:44
  • So the individual surfaces are polygons / bilinear surfaces, and you're trying to build a display mesh? What are you planning to do with the output? – tfinniga Sep 17 '13 at 08:56
  • I have a list of surfaces and want to get objects that are built out of those surfaces. so I want to 1) delete all surfaces which are not part of any object and 2) delete all surfaces which are redundand. So an approach would be to get all smallest possible objects and then add them together while deleting surfaces connecting those objects. – Shiga Sep 20 '13 at 08:47

0 Answers0