discuss@lists.openscad.org

OpenSCAD general discussion Mailing-list

View all threads

Discuss manifoldness, co-incident faces edges etc

CA
Carsten Arnholm
Sun, Nov 17, 2019 12:55 PM

Discussing 2 cubes sharing an edge:

On 17.11.2019 04:19, Michael Marx wrote:

So the problem is still there. A slicer would still need to figure out
whether to do a left or right turn in the middle.

No it does not have such a dilemma.

I would say it is a misunderstanding to present this as a problem. There
is nothing wrong with this model, it is just not 2-manifold everywhere.
1-manifold edges are a problem, but this 4-manifold edge is not.

The 2 subvolumes are well defined, and that is all that is required by a
slicer. A slicer works by slicing (surprise!) the model into horizontal
cuts with a constant thickness equal to the plastic extrusion height.
The software needs to determine the polygons to be filled with plastic
and do it using plastic extrusion paths. There is no problem with this
case whether the edge is shared or duplicated, the slicer task is
equally well defined in both cases.

To me (not someone who studies this topic mathematically) it boils down
to: is it two objects or one?

That question is purely philosophical. It does not matter from a slicer
point of view. Topologically, if there is a shared edge, it is one mesh.

What says that the surface of one cube is a continuation of the surface
of the other? Or not?

That is of no interest to a slicer or the question of sharing models
between applications.

When you drive down a road and the road splits in two like a Y, does it
matter whether one or the other arms of the Y is considered a
continuation of the road you were driving on?

Isn't it inherently ambiguous?

The answer is no.

So something has to be done to consider it one way or the other.

No, that is not necessary.

I'm suggesting that OpenSCAD remove the ambiguity of touching
non-manifolds too, by adding the smallest amount of solid to the edge.

It is not required and it is not solving anything. Certainly it would
create new problems if you tried.

Carsten Arnholm

Discussing 2 cubes sharing an edge: On 17.11.2019 04:19, Michael Marx wrote: > So the problem is still there. A slicer would still need to figure out > whether to do a left or right turn in the middle. No it does not have such a dilemma. I would say it is a misunderstanding to present this as a problem. There is nothing wrong with this model, it is just not 2-manifold everywhere. 1-manifold edges are a problem, but this 4-manifold edge is not. The 2 subvolumes are well defined, and that is all that is required by a slicer. A slicer works by slicing (surprise!) the model into horizontal cuts with a constant thickness equal to the plastic extrusion height. The software needs to determine the polygons to be filled with plastic and do it using plastic extrusion paths. There is no problem with this case whether the edge is shared or duplicated, the slicer task is equally well defined in both cases. > To me (not someone who studies this topic mathematically) it boils down > to: is it two objects or one? That question is purely philosophical. It does not matter from a slicer point of view. Topologically, if there is a shared edge, it is one mesh. > What says that the surface of one cube is a continuation of the surface > of the other? Or not? That is of no interest to a slicer or the question of sharing models between applications. When you drive down a road and the road splits in two like a Y, does it matter whether one or the other arms of the Y is considered a continuation of the road you were driving on? > Isn't it inherently ambiguous? The answer is no. > So something has to be done to consider it one way or the other. No, that is not necessary. > I'm suggesting that OpenSCAD remove the ambiguity of touching > non-manifolds too, by adding the smallest amount of solid to the edge. It is not required and it is not solving anything. Certainly it would create new problems if you tried. Carsten Arnholm
MM
Michael Marx
Sun, Nov 17, 2019 1:40 PM

When you drive down a road and the road splits in two like a Y, does it
matter whether one or the other arms of the Y is considered a
continuation of the road you were driving on?

If it results in driving in-between the left & the right, yes it matters. Air-bags!

But it does go to intent.
So you say it doesn't matter?
What did the creator want?
One of the choices will be wrong.
UNLESS the behaviour is deterministic.

There is no problem with this
case whether the edge is shared or duplicated, the slicer task is
equally well defined in both cases.

So, which slicers make an outside corner, making them one object, or otherwise?

Topologically, if there is a shared edge, it is one mesh.

So how thick is this joint? One (each side) perimeter of printer-nozzle dependent thickness?

Sorry, I retreated to - physical implementation stereotypes. Which printers make a solid, v's two
cubes? Or two-cubes with a crusty fragile edge?

Again, indeterminate. I'm suggesting jumping off the fence, to a predetermined side.

I'm suggesting that OpenSCAD remove the ambiguity of touching
non-manifolds too, by adding the smallest amount of solid to the edge.

It is not required and it is not solving anything.

Well it would save me lots of debugging & let me load it to commercial printing agencies and print
it without non-manifold objections.

-----Original Message-----
From: Discuss [mailto:discuss-bounces@lists.openscad.org] On Behalf Of Carsten Arnholm
Sent: Sun, 17 Nov 2019 23:55
To: discuss@lists.openscad.org
Subject: Re: [OpenSCAD] Discuss manifoldness, co-incident faces edges etc

Discussing 2 cubes sharing an edge:

On 17.11.2019 04:19, Michael Marx wrote:

So the problem is still there. A slicer would still need to figure out
whether to do a left or right turn in the middle.

No it does not have such a dilemma.

I would say it is a misunderstanding to present this as a problem. There
is nothing wrong with this model, it is just not 2-manifold everywhere.
1-manifold edges are a problem, but this 4-manifold edge is not.

The 2 subvolumes are well defined, and that is all that is required by a
slicer. A slicer works by slicing (surprise!) the model into horizontal
cuts with a constant thickness equal to the plastic extrusion height.
The software needs to determine the polygons to be filled with plastic
and do it using plastic extrusion paths. There is no problem with this
case whether the edge is shared or duplicated, the slicer task is
equally well defined in both cases.

To me (not someone who studies this topic mathematically) it boils down
to: is it two objects or one?

That question is purely philosophical. It does not matter from a slicer
point of view. Topologically, if there is a shared edge, it is one mesh.

What says that the surface of one cube is a continuation of the surface
of the other? Or not?

That is of no interest to a slicer or the question of sharing models
between applications.

When you drive down a road and the road splits in two like a Y, does it
matter whether one or the other arms of the Y is considered a
continuation of the road you were driving on?

Isn't it inherently ambiguous?

The answer is no.

So something has to be done to consider it one way or the other.

No, that is not necessary.

I'm suggesting that OpenSCAD remove the ambiguity of touching
non-manifolds too, by adding the smallest amount of solid to the edge.

It is not required and it is not solving anything. Certainly it would
create new problems if you tried.

Carsten Arnholm


OpenSCAD mailing list
Discuss@lists.openscad.org
http://lists.openscad.org/mailman/listinfo/discuss_lists.openscad.org

> When you drive down a road and the road splits in two like a Y, does it > matter whether one or the other arms of the Y is considered a > continuation of the road you were driving on? If it results in driving in-between the left & the right, yes it matters. Air-bags! But it does go to intent. So you say it doesn't matter? What did the creator want? One of the choices will be wrong. UNLESS the behaviour is deterministic. > There is no problem with this > case whether the edge is shared or duplicated, the slicer task is > equally well defined in both cases. So, which slicers make an outside corner, making them one object, or otherwise? > Topologically, if there is a shared edge, it is one mesh. So how thick is this joint? One (each side) perimeter of printer-nozzle dependent thickness? Sorry, I retreated to - physical implementation stereotypes. Which printers make a solid, v's two cubes? Or two-cubes with a crusty fragile edge? Again, indeterminate. I'm suggesting jumping off the fence, to a predetermined side. > > I'm suggesting that OpenSCAD remove the ambiguity of touching > > non-manifolds too, by adding the smallest amount of solid to the edge. > > It is not required and it is not solving anything. Well it would save me lots of debugging & let me load it to commercial printing agencies and print it without non-manifold objections. > -----Original Message----- > From: Discuss [mailto:discuss-bounces@lists.openscad.org] On Behalf Of Carsten Arnholm > Sent: Sun, 17 Nov 2019 23:55 > To: discuss@lists.openscad.org > Subject: Re: [OpenSCAD] Discuss manifoldness, co-incident faces edges etc > > Discussing 2 cubes sharing an edge: > > On 17.11.2019 04:19, Michael Marx wrote: > > So the problem is still there. A slicer would still need to figure out > > whether to do a left or right turn in the middle. > > No it does not have such a dilemma. > > I would say it is a misunderstanding to present this as a problem. There > is nothing wrong with this model, it is just not 2-manifold everywhere. > 1-manifold edges are a problem, but this 4-manifold edge is not. > > The 2 subvolumes are well defined, and that is all that is required by a > slicer. A slicer works by slicing (surprise!) the model into horizontal > cuts with a constant thickness equal to the plastic extrusion height. > The software needs to determine the polygons to be filled with plastic > and do it using plastic extrusion paths. There is no problem with this > case whether the edge is shared or duplicated, the slicer task is > equally well defined in both cases. > > > To me (not someone who studies this topic mathematically) it boils down > > to: is it two objects or one? > > That question is purely philosophical. It does not matter from a slicer > point of view. Topologically, if there is a shared edge, it is one mesh. > > > What says that the surface of one cube is a continuation of the surface > > of the other? Or not? > > That is of no interest to a slicer or the question of sharing models > between applications. > > When you drive down a road and the road splits in two like a Y, does it > matter whether one or the other arms of the Y is considered a > continuation of the road you were driving on? > > > Isn't it inherently ambiguous? > > The answer is no. > > > So something has to be done to consider it one way or the other. > > No, that is not necessary. > > > I'm suggesting that OpenSCAD remove the ambiguity of touching > > non-manifolds too, by adding the smallest amount of solid to the edge. > > It is not required and it is not solving anything. Certainly it would > create new problems if you tried. > > Carsten Arnholm > > _______________________________________________ > OpenSCAD mailing list > Discuss@lists.openscad.org > http://lists.openscad.org/mailman/listinfo/discuss_lists.openscad.org
A
adrianv
Sun, Nov 17, 2019 2:00 PM

Standard mathematical terminology is that a 2-manifold is an object that is
locally equivalent to 2-dimensional Euclidean space, meaning that if you
take any point of a 2-manifold, it has a neighborhood that can be
continuously mapped to the plane.

A 1-manifold is an object where every point has a neighborhood that can be
continuously mapped to a line.  A 4-manifold, on the other hand, is an
object where every point has a neighborhood that can be continuously mapped
to Euclidean four-dimensional space.  It does not make sense to talk about a
"4-manifold edge", and 4-manifolds have no relevance to OpenSCAD.  Edges are
1-dimensional objects.  They can't be a 4-manifold, only a 1-manifold.  I
don't know a name for the points of an object that fail the test of being
locally Euclidean, but "1-manifold" or "4-manifold" does not describe those
points.  It means something completely different.

https://en.wikipedia.org/wiki/Manifold

cacb wrote

I would say it is a misunderstanding to present this as a problem. There
is nothing wrong with this model, it is just not 2-manifold everywhere.
1-manifold edges are a problem, but this 4-manifold edge is not.

Standard mathematical terminology is that a 2-manifold is an object that is locally equivalent to 2-dimensional Euclidean space, meaning that if you take any point of a 2-manifold, it has a neighborhood that can be continuously mapped to the plane. A 1-manifold is an object where every point has a neighborhood that can be continuously mapped to a line. A 4-manifold, on the other hand, is an object where every point has a neighborhood that can be continuously mapped to Euclidean four-dimensional space. It does not make sense to talk about a "4-manifold edge", and 4-manifolds have no relevance to OpenSCAD. Edges are 1-dimensional objects. They can't be a 4-manifold, only a 1-manifold. I don't know a name for the points of an object that fail the test of being locally Euclidean, but "1-manifold" or "4-manifold" does not describe those points. It means something completely different. https://en.wikipedia.org/wiki/Manifold cacb wrote > I would say it is a misunderstanding to present this as a problem. There > is nothing wrong with this model, it is just not 2-manifold everywhere. > 1-manifold edges are a problem, but this 4-manifold edge is not. -- Sent from: http://forum.openscad.org/
CA
Carsten Arnholm
Sun, Nov 17, 2019 7:23 PM

On 17.11.2019 15:00, adrianv wrote:

Standard mathematical terminology is that a 2-manifold is an object that is
locally equivalent to 2-dimensional Euclidean space, meaning that if you
take any point of a 2-manifold, it has a neighborhood that can be
continuously mapped to the plane.

A 1-manifold is an object where every point has a neighborhood that can be
continuously mapped to a line.  A 4-manifold, on the other hand, is an
object where every point has a neighborhood that can be continuously mapped
to Euclidean four-dimensional space.  It does not make sense to talk about a
"4-manifold edge", and 4-manifolds have no relevance to OpenSCAD.  Edges are
1-dimensional objects.  They can't be a 4-manifold, only a 1-manifold.  I
don't know a name for the points of an object that fail the test of being
locally Euclidean, but "1-manifold" or "4-manifold" does not describe those
points.  It means something completely different.

Ok, but in practice we determine manifoldness for an edge by counting
how many faces refer to it. That's what we are talking about, and in
this case having 4 faces referring to an edge is not a problem.

Carsten Arnholm

On 17.11.2019 15:00, adrianv wrote: > Standard mathematical terminology is that a 2-manifold is an object that is > locally equivalent to 2-dimensional Euclidean space, meaning that if you > take any point of a 2-manifold, it has a neighborhood that can be > continuously mapped to the plane. > > A 1-manifold is an object where every point has a neighborhood that can be > continuously mapped to a line. A 4-manifold, on the other hand, is an > object where every point has a neighborhood that can be continuously mapped > to Euclidean four-dimensional space. It does not make sense to talk about a > "4-manifold edge", and 4-manifolds have no relevance to OpenSCAD. Edges are > 1-dimensional objects. They can't be a 4-manifold, only a 1-manifold. I > don't know a name for the points of an object that fail the test of being > locally Euclidean, but "1-manifold" or "4-manifold" does not describe those > points. It means something completely different. Ok, but in practice we determine manifoldness for an edge by counting how many faces refer to it. That's what we are talking about, and in this case having 4 faces referring to an edge is not a problem. Carsten Arnholm
A
adrianv
Sun, Nov 17, 2019 8:11 PM

cacb wrote

Ok, but in practice we determine manifoldness for an edge by counting
how many faces refer to it. That's what we are talking about, and in
this case having 4 faces referring to an edge is not a problem.

"Manifoldness of an edge"?  All edges are 1-manifolds...unless they have end
points.  A given object either is a 2-manifold or is not.  If somewhere on
the object, N faces meet at an edge where N is not 2 then the object is not
a 2 manifold.  Note that if you construct 3-manifolds by sticking together
tetrahedra then the condition is the same: if two tetrahedra meet at a face
then everything is good and you have a valid 3-manifold.  But if the number
of tetrahedra that meet at a face is not two then the resulting object is
not a 3-manifold.  The magic of the number 2 (as the number of faces that
meet at an edge) is not that we are trying to make 2-manifolds, but that
dividing an object in half creates two halves.  Similarly if you go to the
1-d case then the non-manifold figure 8 has four segments meeting at a point
whereas a valid 1-manifold will always have two segments meet at a point.

I suggest that using terminology correctly, or devising and clearly laying
out new terminology as needed, is better than abusing existing terminology
to mean something completely different than what it actually customarily
means.  If people are confused about what a 2-manifold is already, using the
terminology incorrectly isn't going to help.  It could really confuse
somebody who doesn't know what a 2-manifold is and thinks your use has
something to do with the customary meaning of the term.  It sounds like you
want to talk about the face count of an edge, perhaps, the number of faces
meeting at an edge.

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

cacb wrote > Ok, but in practice we determine manifoldness for an edge by counting > how many faces refer to it. That's what we are talking about, and in > this case having 4 faces referring to an edge is not a problem. "Manifoldness of an edge"? All edges are 1-manifolds...unless they have end points. A given object either is a 2-manifold or is not. If somewhere on the object, N faces meet at an edge where N is not 2 then the object is not a 2 manifold. Note that if you construct 3-manifolds by sticking together tetrahedra then the condition is the same: if two tetrahedra meet at a face then everything is good and you have a valid 3-manifold. But if the number of tetrahedra that meet at a face is not two then the resulting object is not a 3-manifold. The magic of the number 2 (as the number of faces that meet at an edge) is not that we are trying to make 2-manifolds, but that dividing an object in half creates two halves. Similarly if you go to the 1-d case then the non-manifold figure 8 has four segments meeting at a point whereas a valid 1-manifold will always have two segments meet at a point. I suggest that using terminology correctly, or devising and clearly laying out new terminology as needed, is better than abusing existing terminology to mean something completely different than what it actually customarily means. If people are confused about what a 2-manifold is already, using the terminology incorrectly isn't going to help. It could really confuse somebody who doesn't know what a 2-manifold is and thinks your use has something to do with the customary meaning of the term. It sounds like you want to talk about the face count of an edge, perhaps, the number of faces meeting at an edge. -- Sent from: http://forum.openscad.org/
NH
nop head
Sun, Nov 17, 2019 8:15 PM

So are two cubes meeting at an edge a 2-manifold?

Before this discussion I thought definitely not. People seem to imply it is
but only in file representations that keep two separate edges that are
actually coincident.

I have always thought that self intersections made an object not
2-manifold. People seem to imply that is only if the representation is a
polygon soup. Is a mesh with self intersections 2-manifold if it comes with
edge connection info but the same geometric shape without edge connection
info not? I am confused because I thought a manifold referred to a
geometric object not how it is represented on a computer.

If OpenSCAD used a PolySet representation with edges would it not matter if
the vertices where truncated and physically in the wrong place?

On Sun, 17 Nov 2019 at 19:58, adrianv avm4@cornell.edu wrote:

cacb wrote

Ok, but in practice we determine manifoldness for an edge by counting
how many faces refer to it. That's what we are talking about, and in
this case having 4 faces referring to an edge is not a problem.

"Manifoldness of an edge"?  All edges are 1-manifolds...unless they have
end
points.  A given object either is a 2-manifold or is not.  If somewhere on
the object, N faces meet at an edge where N is not 2 then the object is not
a 2 manifold.  Note that if you construct 3-manifolds by sticking together
tetrahedra then the condition is the same: if two tetrahedra meet at a face
then everything is good and you have a valid 3-manifold.  But if the number
of tetrahedra that meet at a face is not two then the resulting object is
not a 3-manifold.  The magic of the number 2 (as the number of faces that
meet at an edge) is not that we are trying to make 2-manifolds, but that
dividing an object in half creates two halves.  Similarly if you go to the
1-d case then the non-manifold figure 8 has four segments meeting at a
point
whereas a valid 1-manifold will always have two segments meet at a point.

I suggest that using terminology correctly, or devising and clearly laying
out new terminology as needed, is better than abusing existing terminology
to mean something completely different than what it actually customarily
means.  If people are confused about what a 2-manifold is already, using
the
terminology incorrectly isn't going to help.  It could really confuse
somebody who doesn't know what a 2-manifold is and thinks your use has
something to do with the customary meaning of the term.  It sounds like you
want to talk about the face count of an edge, perhaps, the number of faces
meeting at an edge.

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


OpenSCAD mailing list
Discuss@lists.openscad.org
http://lists.openscad.org/mailman/listinfo/discuss_lists.openscad.org

So are two cubes meeting at an edge a 2-manifold? Before this discussion I thought definitely not. People seem to imply it is but only in file representations that keep two separate edges that are actually coincident. I have always thought that self intersections made an object not 2-manifold. People seem to imply that is only if the representation is a polygon soup. Is a mesh with self intersections 2-manifold if it comes with edge connection info but the same geometric shape without edge connection info not? I am confused because I thought a manifold referred to a geometric object not how it is represented on a computer. If OpenSCAD used a PolySet representation with edges would it not matter if the vertices where truncated and physically in the wrong place? On Sun, 17 Nov 2019 at 19:58, adrianv <avm4@cornell.edu> wrote: > cacb wrote > > Ok, but in practice we determine manifoldness for an edge by counting > > how many faces refer to it. That's what we are talking about, and in > > this case having 4 faces referring to an edge is not a problem. > > "Manifoldness of an edge"? All edges are 1-manifolds...unless they have > end > points. A given object either is a 2-manifold or is not. If somewhere on > the object, N faces meet at an edge where N is not 2 then the object is not > a 2 manifold. Note that if you construct 3-manifolds by sticking together > tetrahedra then the condition is the same: if two tetrahedra meet at a face > then everything is good and you have a valid 3-manifold. But if the number > of tetrahedra that meet at a face is not two then the resulting object is > not a 3-manifold. The magic of the number 2 (as the number of faces that > meet at an edge) is not that we are trying to make 2-manifolds, but that > dividing an object in half creates two halves. Similarly if you go to the > 1-d case then the non-manifold figure 8 has four segments meeting at a > point > whereas a valid 1-manifold will always have two segments meet at a point. > > I suggest that using terminology correctly, or devising and clearly laying > out new terminology as needed, is better than abusing existing terminology > to mean something completely different than what it actually customarily > means. If people are confused about what a 2-manifold is already, using > the > terminology incorrectly isn't going to help. It could really confuse > somebody who doesn't know what a 2-manifold is and thinks your use has > something to do with the customary meaning of the term. It sounds like you > want to talk about the face count of an edge, perhaps, the number of faces > meeting at an edge. > > > > > -- > Sent from: http://forum.openscad.org/ > > _______________________________________________ > OpenSCAD mailing list > Discuss@lists.openscad.org > http://lists.openscad.org/mailman/listinfo/discuss_lists.openscad.org >
CA
Carsten Arnholm
Sun, Nov 17, 2019 9:20 PM

On 17.11.2019 21:11, adrianv wrote:

It sounds like you
want to talk about the face count of an edge, perhaps, the number of faces
meeting at an edge.

That's how you check for it, so yes.

The main point is that it is not necessarily wrong or ambiguous to have
an edge referred to from more than two faces.

Carsten Arnholm

On 17.11.2019 21:11, adrianv wrote: > It sounds like you > want to talk about the face count of an edge, perhaps, the number of faces > meeting at an edge. That's how you check for it, so yes. The main point is that it is not necessarily wrong or ambiguous to have an edge referred to from more than two faces. Carsten Arnholm
A
adrianv
Sun, Nov 17, 2019 9:28 PM

Speaking mathematically (not having to do with computer representations):

A manifold is a surface that looks like a plane everywhere, so if you zoom
in close enough to any point of the manifold, it looks like a flat plane.
Classic examples include the sphere, and the torus.  Note that the manifold
just includes the points on the surface.  So when I say the 2-sphere, the
points on the inside of the sphere are NOT included.  An orientable manifold
(the only kind we care about) will divide 3-dimensional space into two
regions, which we can call the interior and exterior

If a surface intersects itself then at the points of intersection, it will
not look like a plane.  It will be impossible to find a continuous mapping
(homeomorphism) between a neighborhood of the self-intersection and a part
of the Euclidean 2-dimensional plane.  No matter how much you zoom in,
you'll still have a more complicated structure.  Such a surface is therefore
not a manifold.  A non-manifold surface may not define an interior and
exterior in a simple fashion.  Consider what happens if you draw a
self-intersecting curve on the page and try to decide what is interior and
exterior defined by this 1-manifold you have drawn.

Note that being or not being a manifold is a global property, characteristic
of the whole object.  If EVERY point of the surface meets the condition of
"looking like" a plane locally then it is a manifold.  Otherwise (if there
exists somewhere, even just a single point failing the test) then it is not
a manifold.  It makes no sense to talk of a surface "not being a manifold at
this edge".

The case of two cubes sharing an edge is not a manifold because at points on
the edge where they meet, you cannot map the object to a plane.  Now
considering a question of representation, I could imagine a representation
in which the four faces that meet at the intersecting edge are not all
connected to each other by the topological information.  If the topological
connection data only says that the two pairs of outside faces are connected
and doesn't indicate any other connections, then this representation will
describe something which is a manifold, even though it wouldn't be a
manifold if you embedded it as an unstructured set in 3-space.  (Imagine
drawing an 8 where you don't cross in the middle, but bounce off the center
point.)  I don't know if this case is relevant to the discussion (which I
have not been following) but it's an example of how representation could
play a role in deciding whether you consider something a manifold or not.
Note that mathematically, manifolds need not have anything to do with
3-dimensional space, they don't have to be embedded in it.  The Klein Bottle
is a famous example of an object that is a 2-manifold but cannot exist in
3-space.

If you cut out a square from a sphere and then reverse its edge order (a
common polyhedron() error) and glue the reversed square back in the
resulting object IS mathematically a manifold, even though it is invalid
in OpenSCAD (and probably all CAD programs).  It is a manifold that cannot
be embedded in 3-space---it is a nonorientable manifold. So actually the
requirements for CAD are more strict than simply the objects must be
2-manifolds.

nophead wrote

So are two cubes meeting at an edge a 2-manifold?

Before this discussion I thought definitely not. People seem to imply it
is
but only in file representations that keep two separate edges that are
actually coincident.

I have always thought that self intersections made an object not
2-manifold. People seem to imply that is only if the representation is a
polygon soup. Is a mesh with self intersections 2-manifold if it comes
with
edge connection info but the same geometric shape without edge connection
info not? I am confused because I thought a manifold referred to a
geometric object not how it is represented on a computer.

If OpenSCAD used a PolySet representation with edges would it not matter
if
the vertices where truncated and physically in the wrong place?

On Sun, 17 Nov 2019 at 19:58, adrianv <

avm4@

> wrote:

cacb wrote

Ok, but in practice we determine manifoldness for an edge by counting
how many faces refer to it. That's what we are talking about, and in
this case having 4 faces referring to an edge is not a problem.

"Manifoldness of an edge"?  All edges are 1-manifolds...unless they have
end
points.  A given object either is a 2-manifold or is not.  If somewhere
on
the object, N faces meet at an edge where N is not 2 then the object is
not
a 2 manifold.  Note that if you construct 3-manifolds by sticking
together
tetrahedra then the condition is the same: if two tetrahedra meet at a
face
then everything is good and you have a valid 3-manifold.  But if the
number
of tetrahedra that meet at a face is not two then the resulting object is
not a 3-manifold.  The magic of the number 2 (as the number of faces that
meet at an edge) is not that we are trying to make 2-manifolds, but that
dividing an object in half creates two halves.  Similarly if you go to
the
1-d case then the non-manifold figure 8 has four segments meeting at a
point
whereas a valid 1-manifold will always have two segments meet at a point.

I suggest that using terminology correctly, or devising and clearly
laying
out new terminology as needed, is better than abusing existing
terminology
to mean something completely different than what it actually customarily
means.  If people are confused about what a 2-manifold is already, using
the
terminology incorrectly isn't going to help.  It could really confuse
somebody who doesn't know what a 2-manifold is and thinks your use has
something to do with the customary meaning of the term.  It sounds like
you
want to talk about the face count of an edge, perhaps, the number of
faces
meeting at an edge.

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


OpenSCAD mailing list

Discuss@.openscad

Discuss@.openscad

Speaking mathematically (not having to do with computer representations): A manifold is a surface that looks like a plane everywhere, so if you zoom in close enough to any point of the manifold, it looks like a flat plane. Classic examples include the sphere, and the torus. Note that the manifold just includes the points on the surface. So when I say the 2-sphere, the points on the inside of the sphere are NOT included. An orientable manifold (the only kind we care about) will divide 3-dimensional space into two regions, which we can call the interior and exterior If a surface intersects itself then at the points of intersection, it will not look like a plane. It will be impossible to find a continuous mapping (homeomorphism) between a neighborhood of the self-intersection and a part of the Euclidean 2-dimensional plane. No matter how much you zoom in, you'll still have a more complicated structure. Such a surface is therefore not a manifold. A non-manifold surface may not define an interior and exterior in a simple fashion. Consider what happens if you draw a self-intersecting curve on the page and try to decide what is interior and exterior defined by this 1-manifold you have drawn. Note that being or not being a manifold is a global property, characteristic of the whole object. If EVERY point of the surface meets the condition of "looking like" a plane locally then it is a manifold. Otherwise (if there exists somewhere, even just a single point failing the test) then it is not a manifold. It makes no sense to talk of a surface "not being a manifold at this edge". The case of two cubes sharing an edge is not a manifold because at points on the edge where they meet, you cannot map the object to a plane. Now considering a question of representation, I could imagine a representation in which the four faces that meet at the intersecting edge are not all connected to each other by the topological information. If the topological connection data only says that the two pairs of outside faces are connected and doesn't indicate any other connections, then this representation will describe something which is a manifold, even though it wouldn't be a manifold if you embedded it as an unstructured set in 3-space. (Imagine drawing an 8 where you don't cross in the middle, but bounce off the center point.) I don't know if this case is relevant to the discussion (which I have not been following) but it's an example of how representation could play a role in deciding whether you consider something a manifold or not. Note that mathematically, manifolds need not have anything to do with 3-dimensional space, they don't have to be embedded in it. The Klein Bottle is a famous example of an object that is a 2-manifold but cannot exist in 3-space. If you cut out a square from a sphere and then reverse its edge order (a common polyhedron() error) and glue the reversed square back in the resulting object *IS* mathematically a manifold, even though it is invalid in OpenSCAD (and probably all CAD programs). It is a manifold that cannot be embedded in 3-space---it is a nonorientable manifold. So actually the requirements for CAD are more strict than simply the objects must be 2-manifolds. nophead wrote > So are two cubes meeting at an edge a 2-manifold? > > Before this discussion I thought definitely not. People seem to imply it > is > but only in file representations that keep two separate edges that are > actually coincident. > > I have always thought that self intersections made an object not > 2-manifold. People seem to imply that is only if the representation is a > polygon soup. Is a mesh with self intersections 2-manifold if it comes > with > edge connection info but the same geometric shape without edge connection > info not? I am confused because I thought a manifold referred to a > geometric object not how it is represented on a computer. > > If OpenSCAD used a PolySet representation with edges would it not matter > if > the vertices where truncated and physically in the wrong place? > > > > On Sun, 17 Nov 2019 at 19:58, adrianv &lt; > avm4@ > &gt; wrote: > >> cacb wrote >> > Ok, but in practice we determine manifoldness for an edge by counting >> > how many faces refer to it. That's what we are talking about, and in >> > this case having 4 faces referring to an edge is not a problem. >> >> "Manifoldness of an edge"? All edges are 1-manifolds...unless they have >> end >> points. A given object either is a 2-manifold or is not. If somewhere >> on >> the object, N faces meet at an edge where N is not 2 then the object is >> not >> a 2 manifold. Note that if you construct 3-manifolds by sticking >> together >> tetrahedra then the condition is the same: if two tetrahedra meet at a >> face >> then everything is good and you have a valid 3-manifold. But if the >> number >> of tetrahedra that meet at a face is not two then the resulting object is >> not a 3-manifold. The magic of the number 2 (as the number of faces that >> meet at an edge) is not that we are trying to make 2-manifolds, but that >> dividing an object in half creates two halves. Similarly if you go to >> the >> 1-d case then the non-manifold figure 8 has four segments meeting at a >> point >> whereas a valid 1-manifold will always have two segments meet at a point. >> >> I suggest that using terminology correctly, or devising and clearly >> laying >> out new terminology as needed, is better than abusing existing >> terminology >> to mean something completely different than what it actually customarily >> means. If people are confused about what a 2-manifold is already, using >> the >> terminology incorrectly isn't going to help. It could really confuse >> somebody who doesn't know what a 2-manifold is and thinks your use has >> something to do with the customary meaning of the term. It sounds like >> you >> want to talk about the face count of an edge, perhaps, the number of >> faces >> meeting at an edge. >> >> >> >> >> -- >> Sent from: http://forum.openscad.org/ >> >> _______________________________________________ >> OpenSCAD mailing list >> > Discuss@.openscad >> http://lists.openscad.org/mailman/listinfo/discuss_lists.openscad.org >> > > _______________________________________________ > OpenSCAD mailing list > Discuss@.openscad > http://lists.openscad.org/mailman/listinfo/discuss_lists.openscad.org -- Sent from: http://forum.openscad.org/
NH
nop head
Sun, Nov 17, 2019 10:33 PM

So with 2 cubes sharing an edge, at a point on that edge you can't
decide if it is inside or outside, so it can't be an orientable 2-manifold
regardless of how it is represented on a computer. So it should just be an
error when modelling 3D objects, not something that should be catered for
by rewriting OpenSCAD.

Is is it correct to say polygons soups are fine for representing orientable
2-manifolds and all physical objects are orientable 2-manifolds?

Having edge connection data that contradicts vertex coordinates seems wrong
to me. You can have logically distinct points that are physically
coincident and self intersections which go unnoticed. This seems to be what
3MF encourages as a solution to the hard problem of actually
outputting topologically correct meshes after coordinate truncation.

On Sun, 17 Nov 2019 at 21:21, Carsten Arnholm arnholm@arnholm.org wrote:

On 17.11.2019 21:11, adrianv wrote:

It sounds like you
want to talk about the face count of an edge, perhaps, the number of

faces

meeting at an edge.

That's how you check for it, so yes.

The main point is that it is not necessarily wrong or ambiguous to have
an edge referred to from more than two faces.

Carsten Arnholm


OpenSCAD mailing list
Discuss@lists.openscad.org
http://lists.openscad.org/mailman/listinfo/discuss_lists.openscad.org

So with 2 cubes sharing an edge, at a point on that edge you can't decide if it is inside or outside, so it can't be an orientable 2-manifold regardless of how it is represented on a computer. So it should just be an error when modelling 3D objects, not something that should be catered for by rewriting OpenSCAD. Is is it correct to say polygons soups are fine for representing orientable 2-manifolds and all physical objects are orientable 2-manifolds? Having edge connection data that contradicts vertex coordinates seems wrong to me. You can have logically distinct points that are physically coincident and self intersections which go unnoticed. This seems to be what 3MF encourages as a solution to the hard problem of actually outputting topologically correct meshes after coordinate truncation. On Sun, 17 Nov 2019 at 21:21, Carsten Arnholm <arnholm@arnholm.org> wrote: > On 17.11.2019 21:11, adrianv wrote: > > It sounds like you > > want to talk about the face count of an edge, perhaps, the number of > faces > > meeting at an edge. > > That's how you check for it, so yes. > > The main point is that it is not necessarily wrong or ambiguous to have > an edge referred to from more than two faces. > > Carsten Arnholm > > _______________________________________________ > OpenSCAD mailing list > Discuss@lists.openscad.org > http://lists.openscad.org/mailman/listinfo/discuss_lists.openscad.org >
P
Parkinbot
Mon, Nov 18, 2019 1:27 AM

This is an interesting, but endless discussion. In my eyes the cause (and the
possible solution) of the problem is somewhere else, and language
immediately makes it clear:

nophead wrote

So with 2 cubes sharing an edge,

You speak about two cubes, but you want to get a single physical object in
order to have a 2-manifold. And indeed, the union of two cubes which don't
have any region, edge, or vertex in common are treated as a single
2-manifold - and not as a list of 2-manifolds describing physical objects
that have nothing in common. This is for logical (and representational)
reasons of course, but it is also the source of all evil. Having the union
operation returning a list of continuous objects would solve the problem.
Also if two cubes are sharing an edge, because you can just put them both
into the list as individual continuous objects.

It would be easy to represent such a list, if STL format allowed multiple
solid/endsolid sections, but the file format never grew out from from its
being a provisional solution. Of course this only mirrors the common
implementations of libraries and programs, like the ones used by OpenSCAD.

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

This is an interesting, but endless discussion. In my eyes the cause (and the possible solution) of the problem is somewhere else, and language immediately makes it clear: nophead wrote > So with 2 cubes sharing an edge, > You speak about *two* cubes, but you want to get a single physical object in order to have a 2-manifold. And indeed, the union of two cubes which don't have any region, edge, or vertex in common are treated as a *single* 2-manifold - and not as a list of 2-manifolds describing physical objects that have nothing in common. This is for logical (and representational) reasons of course, but it is also the source of all evil. Having the union operation returning a list of continuous objects would solve the problem. Also if two cubes are sharing an edge, because you can just put them both into the list as individual continuous objects. It would be easy to represent such a list, if STL format allowed multiple solid/endsolid sections, but the file format never grew out from from its being a provisional solution. Of course this only mirrors the common implementations of libraries and programs, like the ones used by OpenSCAD. -- Sent from: http://forum.openscad.org/
loading...