This is a question in 2-dimensional computational geometry.
Suppose I have a compact set X in the plane which has no holes (i.e. it is simply connected). Let w be a vector, and consider the intersection of X with X+w (i.e. the translate of X by w). I say that this intersection is complicated if the following is true:
- X intersects X+w
- If we let Y be the simply-connected region obtained from (X union X+w) by filling in the bounded holes, then as we walk around the boundary of Y we can find 4 points in cyclic order a,b,c,d on the boundary so that a and c are in X but not in X+w, while b and d are in X+w but not in X.
Just for the sake of brevity, let's refer to the set of w for which the intersection of X with X+w is complicated as the concave hull of X (note: this has nothing to do with alpha sets; it's just a name).
I would like to know a fast, practical algorithm to compute the concave hull of X where X is (say) a polygonal disk. Beyond this, I would be interested in an elegant characterization of the concave hull perhaps in different terms. Finally, I would be very grateful for pointers to any literature discussing this problem.
Here are some remarks:
- The concave hull of X is empty if and only if X is convex (hence the name); this is because if X is convex, and X intersects X+w, then the boundary of Y falls into exactly two components, one of which is in X, and the other in X+w (the converse follows from point 3 below).
- The concave hull of a polygon should be an open polygon (i.e. with the boundary removed), so the answer could be given (for example) as a finite union of (open) triangles.
- If X is nonconvex, we can find part of the concave hull as follows: let L be a supporting line for X which intersects X in two sets P and Q with a gap I between them. If J is the segment of the boundary of X between P and Q, then the union of I and J bounds an open disk D in the complement of X, and if p+ is the extreme point of P closest to Q, then D-p+ is in the concave hull. Call the union of such regions over all supporting lines the inner concave hull; it seems relatively easy to compute, but I think it should be smaller than the concave hull in general.