Why are manifolds important?

classic Classic list List threaded Threaded
28 messages Options
12
Reply | Threaded
Open this post in threaded view
|

Re: Why are manifolds important?

JordanBrown
On 3/3/2018 11:16 AM, NateTG wrote:
Provided the space is defined in terms of orientable non-intersecting/non-touching triangle meshes "shell counting" isn't appreciably harder than calculating the volume.

What about if they *are* touching?

... was that the normal orientation didn't matter and could be arbitrary
from one triangle to the next, ...
It doesn't.  What matters is that a consistent assignment of normals is
possible and the surface doesn't self-intersect.  If that is the case, it's
not that challenging to work out a proper winding direction of each face
automatically.  (Zero volume surfaces can have multiple valid windings.)

So how possible would it be to build a system (which might consist of a CAD program like OpenSCAD and a slicer) that would not care if you got the winding direction wrong or if you let objects touch one another?


_______________________________________________
OpenSCAD mailing list
[hidden email]
http://lists.openscad.org/mailman/listinfo/discuss_lists.openscad.org
Reply | Threaded
Open this post in threaded view
|

Re: Why are manifolds important?

NateTG
> What about if they *are* touching?

When surfaces are touching, then it's not always clear what's supposed to
happen.

> So how possible would it be to build a system (which might consist of a
> CAD program like OpenSCAD and a slicer) that would not care if you got the
> winding direction wrong or if you let objects touch one another?

Try to and find out.  Honestly, I'm a little surprised that OpenSCAD doesn't
fix winding directions automatically.




--
Sent from: http://forum.openscad.org/

_______________________________________________
OpenSCAD mailing list
[hidden email]
http://lists.openscad.org/mailman/listinfo/discuss_lists.openscad.org
Reply | Threaded
Open this post in threaded view
|

Re: Why are manifolds important?

cacb
In reply to this post by JordanBrown
On 05. mars 2018 09:27, Jordan Brown wrote:
> On 3/3/2018 11:16 AM, NateTG wrote:
>> Provided the space is defined in terms of orientable
>> non-intersecting/non-touching triangle meshes "shell counting" isn't
>> appreciably harder than calculating the volume.
>
> What about if they *are* touching?

Indeed. In a polyhedron, the faces are touching by definition. Otherwise
it isn't a polyhedron.

Carsten Arnholm

_______________________________________________
OpenSCAD mailing list
[hidden email]
http://lists.openscad.org/mailman/listinfo/discuss_lists.openscad.org
Reply | Threaded
Open this post in threaded view
|

Re: Why are manifolds important?

Ronaldo
In reply to this post by JordanBrown
So how possible would it be to build a system (which might consist of a CAD program like OpenSCAD and a slicer) that would not care if you got the winding direction wrong or if you let objects touch one another?

 
If an object is built by boolean operations of any primitives except polyhedron, the winding order will be consistent even if the result is not a manifold.

For polyhedron, a consistent winding order is user responsability. A polyhedron is a soup of (possibly triangulated) facets so it is possible to define non-orientable, non-manifold, self-intersecting freaks with polyhedron. When the polyhedron call defines an *orientable* manifold it is possible to find a consistent winding order to the facets by traversing all the facets. If this traversing is unable to find a consistent winding order than it is possible to conclude that the polyhedron skin is non-orientable or a non-manifold. Self-intersection are harder to detect because it requires comparing all facet pairs.

To illustrate the impossibility of finding a winding order for some cases, consider the following section of the facets of a polyhedron:


where all the facets (except the top and bottom ones) are parallel to the Z axis and have equal heights.​



_______________________________________________
OpenSCAD mailing list
[hidden email]
http://lists.openscad.org/mailman/listinfo/discuss_lists.openscad.org
Reply | Threaded
Open this post in threaded view
|

Re: Why are manifolds important?

JordanBrown
In reply to this post by NateTG
On 3/5/2018 6:02 AM, NateTG wrote:
So how possible would it be to build a system (which might consist of a
CAD program like OpenSCAD and a slicer) that would not care if you got the
winding direction wrong or if you let objects touch one another?
Try to and find out.

I freely admit that I don't have nearly the math knowledge to do it.


_______________________________________________
OpenSCAD mailing list
[hidden email]
http://lists.openscad.org/mailman/listinfo/discuss_lists.openscad.org
Reply | Threaded
Open this post in threaded view
|

Re: Why are manifolds important?

JordanBrown
In reply to this post by Ronaldo
On 3/5/2018 12:08 PM, Ronaldo Persiano wrote:
To illustrate the impossibility of finding a winding order for some cases, consider the following section of the facets of a polyhedron:


where all the facets (except the top and bottom ones) are parallel to the Z axis and have equal heights.​

I'm having a hard time understanding what I'm looking at.  I don't see how it can be a polyhedron, because two of the vertices seem to have only two edges connected to them.


_______________________________________________
OpenSCAD mailing list
[hidden email]
http://lists.openscad.org/mailman/listinfo/discuss_lists.openscad.org
Reply | Threaded
Open this post in threaded view
|

Re: Why are manifolds important?

NateTG
JordanBrown wrote
> ...
> I'm having a hard time understanding what I'm looking at.  I don't see
> how it can be a polyhedron, because two of the vertices seem to have
> only two edges connected to them.
> ...

The traditional examples of a non-orientable surface are Klein bottles and
Moebius strips.  You can't color one of those with blue on one side and red
on the other.


http://forum.openscad.org/file/t2140/kleinbottle.scad



--
Sent from: http://forum.openscad.org/

_______________________________________________
OpenSCAD mailing list
[hidden email]
http://lists.openscad.org/mailman/listinfo/discuss_lists.openscad.org
Reply | Threaded
Open this post in threaded view
|

Re: Why are manifolds important?

JordanBrown
On 3/5/2018 5:16 PM, NateTG wrote:
JordanBrown wrote
...
I'm having a hard time understanding what I'm looking at.  I don't see
how it can be a polyhedron, because two of the vertices seem to have
only two edges connected to them.
...
The traditional examples of a non-orientable surface are Klein bottles and
Moebius strips.  You can't color one of those with blue on one side and red
on the other.


http://forum.openscad.org/file/t2140/kleinbottle.scad

Sure.  I would consider the ability to model impossible figures[*] to be very much secondary to making it easy to model possible figures.  I would not be bothered in the slightest if OpenSCAD rejected a Klein bottle as a self-intersecting polyhedron.
[*] A Möbius strip is an impossible 2-dimensional figure.  As a three-dimensional figure with thickness it is completely possible, but then it also isn't, well, impossible; it has a well-defined inside and outside.

_______________________________________________
OpenSCAD mailing list
[hidden email]
http://lists.openscad.org/mailman/listinfo/discuss_lists.openscad.org
12