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
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
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/
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
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/
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
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
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
--
Sent from: http://forum.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
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/