Casting is a widely-used manufacturing process, where liquid material is poured into a cavity inside a mold, which has the shape of a desired product. After the material solidifies, the product is taken out of the mold. Typically a mold is used to manufacture numerous copies of a product, in which case we need to ensure that the solidified product can be separated from its mold without breaking it.
The problems that we study here belong to the larger topic termed Movable Separability of Sets; see Toussaint . Problems in this area are often exceedingly challenging from a combinatorial- and computational-geometry point of view (see, e.g., ). At the same time solutions to these problems are needed in mold design , assembly planning , and 3D printing to mention a few application areas.
We focus in this paper on a fairly basic movable-separability question. We are given a polyhedron in with facets. We do not make any particular assumptions about the polyhedron beyond that it is a closed regular set, namely it does not have dangling edges or facets. The mold is box-shaped and the cavity has the shape of such that one of ’s facets is the top facet of the cavity. See Fig. 1 for an illustration in 2D. Once the top facet has been determined, we detect whether there is a direction in which the solidified object can be pulled out of the mold without colliding with the mold. Such a direction is a valid pull-out direction, the corresponding top facet is valid, and the polyhedron is castable. When we restrict the pull-out direction to be the outer normal of the top facet, this problem is known to be solvable in linear time .
We address two problems: .
- All Facets Single Direction (AllFSD):
Determine which facets of can serve as a valid top facet and for each such facet indicate one valid pull-out direction.
- All Facets All Directions (AllFAD):
Same as above but for each valid facet indicate all the valid pull-out directions.
Why would anyone bother to solve AllFAD and not be satisfied with AllFSD? First, a solution is more stable if there is a continuum of directions rather than a single direction of separation. Second, we use the availability of many possible directions to optimize other criteria.
Previous results The best previous algorithms that we are aware of [6, Chapter 4] solve the AllFAD and AllFSD problems by solving the following two easier problems times — handling each candidate facet to be a top facet separately:
- Single Facets Single Direction (SingleFSD):
Determine whether a specific given facet of a polyhedron can serve as a valid top facet and if so, indicate one direction in which can be pulled out of the mold with as its top facet.
- Single Facets All Directions (SingleFAD):
Same as above but indicate all the directions in which can be pulled out of the mold with as its top facet.
The existing algorithm for SingleFSD takes time and the existing algorithm for SingleFAD takes time.
This means that it takes time to solve AllFSD and time to solve AllFAD.
Both algorithms, as well as the algorithms that we present below use linear storage space.
Contribution Our contribution in this paper is an -time algorithm for the AllFSD problem and an -time algorithm for the AllFAD problem. We also present an -time solution to the AllFAD problem when the input polyhedron is restricted to be convex. Additionally, we prove that for any polyhedron there can be up to six valid top facets.
The efficiency of our solution makes it a good candidate for implementation, which will enable product designers and engineers to quickly verify the castability of their design. Indeed we are currently developing a robust implementation of our solution. Although some of the components that our algorithms use are non-trivial, most of them are available in the CGAL library111cgal.org.
We presented a preliminary and partial version of this paper at the informal EUROCG meeting222eurocg2016.usi.ch, which does not publish proceedings. Here we extend our original work by presenting an -time algorithm for the AllFSD problem and showing that the maximum number of valid orientations for a polyhedron is six.
Ii Preliminary Analysis
Instead of considering all of the top facets as possible candidates and running a separate algorithm for each of them, as in [6, Chapter 4], we start by finding a small set of candidate top facets (up to 12 facets). Then we solve SingleFSD/singleFAD [6, Chapter 4] for each of the candidates.
In order to find the possible top facets we will consider an arrangement of great circles on the unit sphere . An arrangement of curves on the sphere is a subdivision of the sphere into vertices, edges, and faces as induced by the given curves: Vertices are intersection points of curves, edges are maximal portions of a curve not intersected by any other curve, and faces are maximal portions of the sphere not intersected by any curve; see, e.g., [7, 8]. Each point on represents a direction in
—the direction of the vector from the center ofto . We will use the terms points and directions on interchangeably.
Let be the facets of the given polyhedron . Let be the normal to the facet pointing into the polyhedron.
We will describe a mold by the pair , which should be interpreted as follows. The top facet of the mold is . To achieve this, the polyhedron needs to be rotated by a rotation matrix such that becomes the top facet. We apply the same rotation matrix to to obtain a pull-out direction . (In other words, for convenience during our analysis, we use the vector is relative to the given, original orientation of the polyhedron. Once we determine that the pair is valid we still need to rotate both such that becomes the top facet and is a valid pull out direction in the new orientation.)
The pair represents a valid mold and pull-out direction if and only if for each point in the polyhedron, the ray that starts at with direction :
(i) intersects , and
(ii) does not intersects . (It may partialy overlap333This corresponds to allowing to be moved out while sliding in contact with . .)
The pair represents a valid mold and pull-out direction if and only if
For the case where is the top facet of , this fact is proved in Lemma 4.1 in . It remains to notice that the Conditions (i) and (ii) are invariant under rotation. They hold in ’s given orientation if and only if they hold when is rotated such that becomes the top facet. ∎
A valid pair is a pair that obeys the conditions of Lemma 1.
A facet will be called a valid top facet if there exists a vector for which the pair is a valid pair.
Let be the set of all valid top facets. Notice that the actual pull-out direction is , where is the matrix that rotates such that becomes the top facet, or equivalently such that points vertically downwards.
Denote by := the closed hemisphere of directions on for which , and by or the open complement hemisphere. For a set of facets X we denote by the set . Let . Let denote the boundary great circle of , and let . Consider the arrangement on , namely the subdivision of induced by the great circles in . See Fig. 2 for an illustration.
The depth of a point on is the number of hemispheres in in which is contained.
All the points in any fixed cell of the arrangement have the same depth.
In our setting there cannot be a face of zero depth in . Similarly, in Lemma 1, Condition (i) follows from Condition (ii).
Assume, for the sake of contradiction that there exists a face of zero depth in the arrangement . let be a direction in this face. We assumed that for each facet , , or equivalently, for each facet , the direction is pointing into the polyhedron. If we choose an arbitrary point inside the polyhedron (not on its boundary) and go from it in the direction we will eventually leave the polyhedron through some facet , meaning that must be pointing out of the polyhedron from . Contradiction.
Notice that in order to avoid special degenerate cases, like crossing the polyhedron in an edge, we choose the arbitrary point such that it does not lie on any of the planes spanned by the direction and an edge of the polyhedron. ∎
The polyhedron is castable with a single-part mold if and only if the arrangement contains a point of depth . A cell of depth in , which is covered by the hemisphere , represents a mold whose top facet is and each point in represents the valid pull-out direction , where is the orthonormal matrix that rotates to point vertically down (in the negative direction).
Let be a cell of depth in covered by , and let be a point in . We establish that the pair is a valid pair by verifying that the conditions of Lemma 1 above hold for it.
It remains to show that no point in any cell of different depth can represent a valid pull-out direction for any top facet. Consider a cell of depth greater than and a point in it. Let be the index set of the hemispheres that cover : . One of the facets must serve as the top facet for Condition (i) of Lemma 1 to hold. But then for each of the remaining facets Condition (ii) of the lemma is violated. Finally, as shown in Theorem 2, no cell can have depth zero. ∎
Our goal is to find all the facets in (for which covers a depth cell in ). In Section III we give an algorithm that finds a set of up to 12 facets in which is contained and show that .
A covering-set is a set of open hemispheres such that the union of all the hemispheres in covers the entire unit sphere.
For each covering-set , .
Let be a covering-set. Assume, for the sake of contradiction that there exists some facet for which . By Theorem 3, a facet is a valid top facet if and only if there exists a depth cell in which is covered by (and only by ). We know that each point in the unit sphere is covered by some hemisphere , therefore some hemisphere covers a point in this cell. By the definition of a cell, if some point in the cell is contained in then the entire cell is contained in . We also assumed that covers this cell, this means that this cell is of depth 2, at least. Contradiction. ∎
Our next step is to give an algorithm that finds, in linear time, a set of open hemispheres in whose union covers the entire unit sphere and whose size is bounded by a constant (specifically, 12).
Iii Finding A Covering-Set
In order to find a covering-set, we handle each of the upper open hemisphere, the equator, and the lower open hemisphere separately. We find a covering set for each of them, and merge the three sets. We start by finding a covering set for the upper open hemisphere. In order to do so, we will define and prove the following claims.
Remark. The “half-plane” of the lower hemisphere with respect to the upper hemisphere is empty and the “half-plane” of the upper hemisphere with respect to the upper hemisphere is the entire plane .
If the union of a set of half-planes, , is the entire plane then there exists a set such that the union of the half-planes in is the entire plane and .
Helly’s theorem  states that given a collection of convex subsets of where , if the intersection of any objects in this collection is nonempty, then the entire collection has a nonempty intersection.
The contrapositive of this theorem is that if the intersection of the entire collection is empty then there exists a subset of size such that its intersection is empty.
In our case ,
By Helly’s theorem there exist in . By that we learn that . ∎
This subset can be computed in linear time with linear space using a version  of Megiddo’s LP algorithm , or in linear expected time and constant space using Seidel’s randomized incremental algorithm .
We can now find a covering set of size three for the upper open hemisphere in linear time, as follows. If some hemisphere in is the upper open hemisphere return it and stop; we are done. Otherwise, transform each hemisphere in into a half-plane on , as described earlier. Use the procedure we have just described to find three half-planes that cover the entire plane in linear time. A covering set for the lower open hemisphere can be found analogously.
Any open hemisphere on is covered by up to three hemispheres in .
Now we also need to find a covering set for the equator. We can run a similar algorithm for the 2D case—splitting the equator into a left circle, a right circle and two points, then finding a covering set of size six at most. Finally, we merge the three covering sets and get a covering-set of size 12 for .
A simpler way of finding a covering-set for , is to choose four open hemispheres (any four hemispheres, not necessarily from ) that cover . Now we find a covering set of size three for each of these hemispheres, as above, Now we find a covering set of size three for each of these hemispheres. Putting all together, we obtain a covering-set for of total size 12.
We continue by proving the existence of a covering-set for of size six.
There exists a covering-set of size six for .
Let be some great circle on that does not contain a vertex of and is not contained in . is composed of parts of cells in that are partially contained in the two open hemispheres defined by . This means that any covering-set of an open hemisphere defined by , covers as well.
By that and by Observation 3, the covering-set of is of size six at most. ∎
Remark. This is only proof of existence. This version of the paper will not provide an algorithm to compute a covering-set of size six. However, a linear time algorithm will be provided in the full version of the paper that will be uploaded to the arXiv444arxiv.org.
The number of valid top facets for any polyhedron is at most, six.
As we showed in Theorem 6, there exists a covering-set of size six, and by Theorem 4, we know that the number of valid top facets in a polyhedron is bounded by the size of any covering-set. Thus, the number of valid top facets is bounded by six.
Notice that this is tight—all the six facets of a parallelepiped are valid top facets. ∎
The algorithms for both the AllFAD and AllFSD problems, are very similar. Find a covering-set of constant size, as discussed before. For each facet in the covering-set solve SingleFSD/SingleFAD [6, Chapter 4]. Now return all the pull-out directions for each valid top facet in the covering-set and stop.
We end up with a linear time algorithm for AllFSD and an time algorithm for AllFAD.
Remark. When solving the AllFAD variant, one may wish to run the AllFSD algorithm first in order to end up with a linear-time algorithm in case that the polyhedron is not castable.
Remark. AllFAD for a polygon can be found in linear time and constant space using similar technics. The details will be given in the full version of the paper.
V Casting Convex Polyhedra
In this section we show how to determine the castability of a convex polyhedron more efficiently, still solving the AllFAD problem for this case. We start with a couple of simple observations, which will be needed later.
Let be a convex polygon in the plane whose edges are given in cyclic order , say clockwise. Given a direction in the plane, all the edges of whose inner-facing normals have a non-negative scalar product with form a consecutive subchain of .
Let be a plane in that is parallel to the direction , intersects some convex polyhedron, , but does not intersect any of its vertices. Let be the convex polygon, which is the non-empty intersection of the convex polyhedron with . For each that intersects with we denote by the edge of . Let denote the inner facing normal of in .
If , then .
Let be a vector in direction and length for some small . indicates whether the direction points into or out of when it starts from a point on [6, Chapter 4], i.e, if () for each point , then is inside (outside of) the polyhedron.
After the intersection with , each point on must still fulfill these conditions, since for each point , is in and therefore it is in the polygon if and only if it is in the original polyhedron.
We say that two facets of the input polyhedron are neighbors if their closures intersect at an edge. Denote by the set of neighbors of the facet , by the cardinality of this set, and by the index set of the facets in . The efficient AllFAD algorithm for convex polyhedra stems from the following observation.
For a convex polyhedron, the pair represents a valid mold and pull-out direction if and only if
The only difference between Lemma 1 and the current lemma is the set of facets on which Condition (ii) is tested: here it is only on the neighboring facets of . We argue that if the condition holds for the neighboring facets it will hold for all facets other than . Assume, for a contradiction that it holds for all neighboring facets, and there is a non-neighboring facet for which it does not hold. Let be a segment connecting a point inside and a point inside . Let be a plane containing and parallel to . If intersects a vertex of then we move s (and ) slightly parallel to itself such that it does not cross any vertex of . Let , and as above let for every facet of that intersects . Let and be the two neighboring edges to in — notice that and are the intersection of with two neighboring facets of . By Lemma 8 the scalar product of with both and is non-negative and with both and is negative. However, these form an intertwining cyclic subsequence of edges of : , in contradiction with Observation 4. This means that the inner-facing normal of has non-negative scalar product with and the same holds for the inner-facing normal of . ∎
Given a convex polyhedron and a specific top facet , it is possible to find all the pull-out directions in time.
Without loss of generality let’s assume that is horizontal (parallel to the -plane) and points vertically downwards. We wish to find all the pull-out directions for which the conditions of Lemma 9 hold. This can be done in time by centrally projecting the inner closed hemisphere for each facet in onto the plane (as in555Each facet is represented by a half-plane on containing all the directions with a positive component such that Definition 5), obtaining a set of half-planes and intersecting the half-planes created (see [6, Chapter 4]). We wish to reduce the running time of this procedure to time. Luckily, these half-planes are sorted by their slope since the slope of the half-plane created by on is equal to the slope of the edge on created by (again, and are parallel). The edges of a convex polygon are ordered by their slope. The intersection of a given set of half-planes which are sorted according to the slope of their bounding lines, can be computed in time . ∎
The algorithm proceeds by fixing a facet , computing its edge-neighboring facets and computing the set of allowable directions using Theorem 10. We repeat the procedure for each facet of . Notice that is in fact the number of edges on the boundary of . The overall cost of time over all candidate top facets is time by Euler’s formula [14, Chapter 13], In summary,
Given a convex polyhedron with facets, we can solve the AllFAD problem for in time .
Vi Conclusion and Further Work
We have described efficient solutions to determine the castability of a polyhedron with a single-part mold. Our algorithms are an order of magnitude faster than the best previously known algorithms for these problems.
We outline several directions for further research:
(i) Our focus here was on separability with a single translation. Can one devise efficient algorithms in case we are allowed to pull out the polyhedron from its cast using arbitrary motion? This problem is already interesting for separating a planar polygon from its planar cast. The latter can be resolved by considering the motion planning problem for a robot (the polygon) among obstacles (the mold). This approach however would yield a near-quartic time solution . Thus, the goal here is to take advantage of the special structure of the problem to obtain a more efficient solution.
(ii) There are many interesting problems when the mold is made of two or more parts, and we hope that our novel observations here may open the door to more efficient algorithms for these more complicated casting problems.
As mentioned, we are also developing a robust implementation of our algorithms, based on tools from the CGAL library.
-  G. Toussaint, Movable separability of sets, in: Computational Geometry, North-Holland Publishing Company, 1985.
J. Snoeyink, J. Stolfi, Objects
that cannot be taken apart with two hands, Discrete & Computational
Geometry 12 (1994) 367–384.
H. Ahn, M. de Berg, P. Bose, S. Cheng, D. Halperin, J. Matoušek,
Separating an object
from its cast, Computer-Aided Design 34 (8) (2002) 547–559.
D. Halperin, J. Latombe, R. H. Wilson,
A general framework for
assembly planning: The motion space approach, Algorithmica 26 (3-4) (2000)
-  B. Asberg, G. Blanco, P. Bose, J. Garcia-Lopez, M. H. Overmars, G. T. Toussaint, G. T. Wilfong, B. Zhu, Feasibility of design in stereolithography, Algorithmica 19 (1/2) (1997) 61–83.
-  M. d. Berg, O. Cheong, M. v. Kreveld, M. Overmars, Computational Geometry: Algorithms and Applications, 3rd Edition, Springer-Verlag TELOS, 2008.
E. Berberich, E. Fogel, D. Halperin, M. Kerber, O. Setter,
Arrangements on parametric
surfaces II: concretizations and applications, Mathematics in Computer
Science 4 (1) (2010) 67–91.
E. Berberich, E. Fogel, D. Halperin, K. Mehlhorn, R. Wein,
Arrangements on parametric
surfaces I: general framework and infrastructure, Mathematics in Computer
Science 4 (1) (2010) 45–66.
-  L. Danzer, B. Grunbaum, V. Klee, Helly’s theorem and its relatives1, Monatsh. Math 31 (1921) 60–97.
-  C. H. Norton, S. A. Plotkin, É. Tardos, Using separation algorithms in fixed dimension, Journal of Algorithms 13 (1) (1992) 79–98.
N. Megiddo, Linear programming in
linear time when the dimension is fixed, J. ACM 31 (1) (1984) 114–127.
R. Seidel, Small-dimensional linear
programming and convex hulls made easy, Discrete & Computational Geometry
6 (3) (1991) 423–434.
simple algorithm for determining the envelope of a set of lines, Information
Processing Letters 39 (3) (1991) 121 – 124.
-  M. Aigner, G. M. Ziegler, A. Quarteroni, Proofs from the Book, Vol. 274, Springer, 2010.
D. Halperin, M. Sharir, A
near-quadratic algorithm for planning the motion of a polygon in a polygonal
environment, Discrete & Computational Geometry 16 (2) (1996) 121–134.
P. K. Agarwal, E. Flato, D. Halperin,
for efficient construction of minkowski sums, Comput. Geom. 21 (1-2) (2002)
-  D. W. Barnette, On steinitz’s theorem concerning convex 3-polytopes and on some properties of planar graphs, in: The many facets of graph theory, Springer, 1969, pp. 27–40.
Appendix A Maximum Number Of Orientations
We present one more result concerning the relation between the castability of a polyhedron and the castability of its convex hull (Theorem 12). We show that every valid pair (see Definition 1) of , induces a corresponding valid pair for . This means that the set of valid pairs of the convex hull of is a super-set of the valid pairs of . We use Theorem 12 to give an alternative proof (See Theorem 7 for the original proof) that a polyhedron has at most six valid top facets.
Given a polyhedron , one of its valid top facets, and a pull-out direction , ’s convex hull , can be pulled out through (the convex hull of ) with direction .
Assume, for the sake of contradiction, that is not castable in direction through . This means that for some point one of the conditions of Observation 1 does not hold. is convex, and therefore a ray that starts in cannot intersect two facets of . This means that any point in that fulfills the first condition must fulfill the second condition as well. Thus, the first condition must not hold for . Let be a ray in direction , and be the locus of all the points (not necessarily in ) for which the first condition holds. (when represents Minkowski sums ). Every point in holds the first condition of Observation 1, therefore and since is convex, . Contradiction. ∎
Given a polyhedron and a top facet , there can be at most one other top facet that does not share an edge with .
We omit the proof for lack of space.
A polyhedron can have up to six valid top facets.
By Theorem 12, it is sufficient to show this theorem for a convex polyhedron .
It is known that the dual graph of a convex polyhedron
is a planar graph .
We wish to consider a subgraph of ’s dual graph, which will include only vertices that represent a valid top facet and all of the edges between these vertices; we donate this graph by .
Of course must be planar, by Euler’s formula [14, Chapter 13], (as long as ).
By Theorem 13, each vertex is must be connected to all the other vertices in except maybe one, .
Merging the two inequalities gives us , solving this will result in ∎