0
$\begingroup$

Assume that in 3D we have a polytope defined by the intersection of halfspaces.

A half space is the set of all solutions of a linear inequality $P = N \cdot x + c \leq 0$ Where $N$ is the normal to the half space.

The polytope is thus the boundary of $\cap_{i=0} P_i$ $P_i = N_i \cdot x + c_i \leq 0$.

In 3D all vertices must be intersections of at least 3 planes. i.e. all vertices are a subset of all points such that:

$$P_i = P_j = P_k = 0$$

Which is a trivial 3x3 system that can be easily solved.

However, the total number of points that you get out of this is exponentially larger than the actual number of points on the polytope.

For example in this diagram:

enter image description here

The top plane intersects the other 2 at points which are not vertices of the polytope.

$\endgroup$
5
  • $\begingroup$ I am not sure what the figure means here. My understanding is that in this figure, the normals of these planes form linear relationship. Since normal is orthogonal to any given line on that plane, so we know the intersection of two planes defines a line of which the direction can be calculated by the cross product of two normals. Since all three normals are on the same plane (due to linear relationship), the intersection lines will be parallel to each other, so the system has no solution thus no vertex. When these lines are exactly the same, then you will have infinite number of solutions. $\endgroup$
    – Enigmatisms
    Commented Aug 13, 2023 at 2:29
  • $\begingroup$ So If I understand correctly, you can check the determinant of the 3x3 system before solving for the vertex. If the determinant is 0 (or its absolute value is extremely small), there won't be a good solution for you. $\endgroup$
    – Enigmatisms
    Commented Aug 13, 2023 at 2:38
  • $\begingroup$ @Enigmatisms I perhaps was unclear, you have arbitrarily many of these planes, not just 3 and you are looking for the vertices of the underlying polytope. $\endgroup$
    – Makogan
    Commented Aug 13, 2023 at 4:55
  • $\begingroup$ There is no question ! $\endgroup$
    – user1703
    Commented Aug 13, 2023 at 14:57
  • $\begingroup$ "is exponentially larger ": it can very well turn out that all points that are the intersection of $d$ hyperplanes are indeed vertices of the polytope ! $\endgroup$
    – user1703
    Commented Aug 13, 2023 at 15:06

2 Answers 2

1
$\begingroup$

(I'm going to use the word “polyhedron” instead of “polytope” because I haven't considered how to generalize it to more dimensions.)

  1. Being constructed of the intersection of half-spaces, the polyhedron must be convex; the interior volume is a region containing none of the planes.

  2. We can classify the intersection points of 3 unequal planes as follows:

    • There cannot be an intersection point within the polyhedron, because per (1), none of the planes intersect the polyhedron.
    • If it is on the surface, then it must be a vertex; it cannot lie on an edge or face because if it did, that would contradict the 3 planes defining a point.
    • If it is outside the polyhedron, then it must not be a vertex.
  3. If an intersection point lies within the outside half of any one of the half-spaces making up the polyhedron, then it cannot be inside or on the surface of the polyhedron per (1), and therefore cannot be a vertex per (2).

  4. If an intersection point does not lie within the outside half of any half-space, then it cannot be inside per (1), so it must be on the surface of the polyhedron, and therefore per (2) must be a vertex.

Therefore, it suffices to discard all intersections which are outside any one of the half-spaces.

This can be seen as applying the separating axis theorem to the points; every plane defines a potential separating axis.

$\endgroup$
1
$\begingroup$

You can use an incremental approach.

In 3D, it works as follows:

  • Assume that as some point you have constructed the (possibly open) polytope defined by the $k$ first planes.

  • Consider the next plane and change the coordinate system so that the equation simplifies to $z=0$.

  • For every edge of the polytope, check if the endpoints belong to the same half-plane defined by the plane ($z$ sign).

  • If both have $z>0$, keep the edge; if both have $z<0$, discard the edge; otherwise, compute the intersection point of the edge with the plane and trim the edge. Finally, join the intersection points to form a convex section polygon.

  • Repeat with the remaining planes.

This method cannot avoid the $O(n^3)$ behavior in the worst case (no method can) but if you are lucky it can keep the number of useless vertex computations to a low value. (At best, $O(nm)$ intersections for $n$ planes and $m$ vertices in the solution.)

$\endgroup$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.