Suppose that I have before me the net of a geometric solid. All of the angles and edge lengths of this net are known by me to arbitrary precision. I know that the net is valid, and that it folds into a convex solid. Is there any general method I can use to learn the dihedral angles of the resulting solid?
If no general method exists, I can give the particular net I’m interested in, to look for a specific answer, but I’d prefer the general method if possible, since I’m likely to encounter other, similar problems.
And no, this isn’t for homework, work, or anything else a body is obliged to do. It’s just an odd little project I’m working on.
I’m interested in what kind of project you are working on. From time to time over the years of my life, I’ve gotten into various kinds of mathematical/geometrical games that I’ve had fun playing with.
Once upon a time (I think this was 35-some years ago) I worked out the all the edges and angles and the layout for those two famous Escherhedrons and drew them up on construction paper, folded them up, and glued all the relevant tabs and edges together.
ETA: Not that this had anything to do with finding dihedral angles, though.
If not already done you can find all the adjoining sides of each of the polygons making up the net by finding angles of 90degrees or less in the outline of the net then working back out until all adjoining sides are known. So now choosing a primary polygon at random you know which secondary polygons adjoin each of it’s sides. Each pair of adjacent secondary polygons share a side of equal length. When folding up the net the adjacent secondary polygons rotate along the axis of the common side with the primary polygon until the endpoints of the adjacent sides meet. It should be trivial for you to calculate that angle of rotation which is your dihedral. If it’s not trivial then I assume that’s the part you are asking about.
Don’t forget about secondary polygons joining at angle to angle, makes that rotation calculation a little more difficult.
I guess a lot more difficult, between any two of the adjacent secondary polygons sharing a side with the primary there can be any number polygons that meet the intersection of the two sides of the primary with their own intersections.
If the vertices are all trivalent, then I think it’s possible to calculate just from the interior angles of the faces meeting at that vertex. Basically, you could do it via Cartesian geometry: set the vertex at the origin. Set one edge to point along the x-axis, and the second to point in the xy-plane. Unit vectors pointing along each of these edges will be v[sub]1[/sub] = (1, 0, 0) and v[sub]2[/sub] = (cos(alpha), sin(alpha), 0), where alpha is one of the face angles meeting at the vertex. The unit vector v[sub]3[/sub] along the third edge is then constrained to have v[sub]1[/sub]•v[sub]3[/sub] = cos(beta) and v[sub]2[/sub]•v[sub]3[/sub] = cos(gamma). This determines all of the components of v[sub]3[/sub] up to the sign of its z-component. The dihedral angle between the faces opposite gamma will then be cos(theta) = v[sub]3z[/sub]/v[sub]3y[/sub]. So everything’s nice & determined.
However, if the vertices are of higher valence than three, then you’re stuck needing non-local information about the polyhedron, and the problem is much harder. For example, a net consisting of four equilateral triangles, all joined at a common point, isn’t rigid; you would need to know what the shape of the polygons that “close” the polyhedron are to determine the polyhedron’s exact shape.
You might try asking this question over at Mathematics StackExchange. They’d love it there.
So working from adjacent sides of a polygon doesn’t help, then it has to be solved from the vertices. And I’m not even finding a guess for how to do that. The angles have to add up to something less than 360 but I don’t see how that relates to the dihedral between any pair of adjoining polygons. I can’t wait to find out what else I don’t understand about this problem.
No, because there is no guarantee that a given net must fold into a unique convex solid.
I don’t really have an answer beyond that, but if I were trying to solve it I’d model the thing as a damped spring system. Start it in whatever stressed configuration you want and slowly let it relax until the edges are all the right length and the faces are planar.
So probably not what you’re looking for but since I can’t do maths it’s the only thing I could do. At each vertex there are a set of polygons that meet. The angles of each polygon at that vertex add up to less than 360 degrees. I’d take the difference between the sum of the angles and 360 and divide it by the number of polygons and assume that is the correct angle between all of the polygons initially. Then start going around the vertex and seeing if you apply that angle will make all the adjacent polygons meet all the way around, reducing or increasing the angle between them until they do. Basically let the electronic abacus do all the work. I’ll bet you can find something similar which will actually calculate the proper angles instead of just adjusting them until it works.
I think that every adjoining polygon should join on an equal length side for a convex solid for the simplest net for that shape, but I’m not positive. And if it’s not the simplest representation of the solid, i.e. two polygons adjoin with no dihedral angle I don’t know how to determine that.
That requires a constraint that Chronos didn’t specify: specifically, gluing instructions for the edges. Chronos only knows that it folds into a convex solid, and didn’t say that he knows the connectivity information for the faces on that solid.
Yep, though as I mentioned this is only true as long as you don’t have the face connectivity information. If your net has numbered edges that you can match up, then there is just (at most) one unique resulting solid.
Ok, so I am assuming that you have a 2D description of the net and from it’s outline you can find determine the gluing instructions, but maybe that isn’t so for all nets.
I think what I was talking about in my first post would work with some simple solids like the soccer ball pattern where the polygons only join side to side and never at a point. In that case rotating along a common side defines a circle at the end point of a side. Do that with two adjacent side and you can find the intersection of the circles to see where they’d meet in 3D space and then figure out the dihedral from that. But if you have polygons meeting at a point I don’t know what to use as an axis to rotate them. Your damped spring suggestion is a lot like what’s not in some constraints based 3D animation, but that usually is limited to a few point connections. The parts of a net can fold freely all over the place until you have to glue them together in the end.
Huh, I didn’t realize that a given net can lead to multiple polyhedra, but apparently there are examples of this, at least if you allow for concave polyhedra.
Do you know of any specific examples in which inequivalent convex polyhedra can be generated from a given net? I’ve found a paper online that discusses folding a given polygon into multiple polyhedra, but as far as I can tell, these examples usually involve shifting the “vertex points” on the polygon (unlike the octahedron/boat example.)
OK, no general method without more information. I should have just given more detail right from the start.
First off, the project: I would like to make a complete set of dice of various numbers of sides, but with all of them being in some way nonstandard (but still face-transitive and thus fair). My d4 is dreidle-shaped, my d12 is rhombic, and so on. Well, for the d8, there are two different infinite families of generalizations of the octohedron which maintain face-transitivity. One of them allows for faces that are any acute triangle, and the other allows for faces that are any triangle at all. I’m going with the latter, and just for the heck of it, using 3-4-5 triangles as my faces.
where all the vertical segments are of length 4, and all of the horizontal segments are of length 3. I’ve already tried cutting it out of paper and folding it, but that didn’t really give me any useful insights (beyond unhelpful ones like “opposite faces are not parallel”). I’d like to get the angles because my current methods for sculpting these things in TinkerCad are based on knowing the angles.
So, to sum up, all of my vertices are of order 4, I do know the edge correspondences, and it is a unique convex figure.
Sorry, I don’t know of one. Well, I can think of an esoteric example: an infinite strip of alternating equilateral triangles. This can be rolled into a spiral, making an infinitely long cylinder-like solid. You can have any diameter cylinder you want by changing the initial edge matching.
I dunno if there’s a way to make the thing finite by doing something with the end caps. Or maybe it could be made into a torus? Hmm…
This is a total cheat, but obviously the net of any chiral solid can be folded into its mirror image by folding in the opposite direction.
Neat. Seems to me that you’re just going to have to extract as many symmetries from it as you can. For instance, you can see that the midpoints of the 3-length edges form a square (though I don’t know the size of the square). From that, it may be possible to decompose the solid into tetrahedra with known edge lengths. Once you have that, it’s easy to extract the angles you need.