Interactive Explanation of Schmitz Particle Approximation

We start with a set of intersection points and a normal vector for each. Click and drag to change these. You can add or remove points, one per edge.

A point and a normal vector combined define a plane. Each plane passes through its point and is perpendicular to its normal. Our goal is to find a point inside the cell that is closest to all planes.

For every combination of cell corner and plane, we find the shortest vector that takes the corner to the plane.

For each corner, we add up its vectors. The resulting sum, called a "force", is multiplied by a small constant, such as 0.05.

Our particle starts at the mass center of the cell. This is the average of all intersection points.

We combine the forces in a single force through trilinear interpolation in relation to the particle. Each partial force's contribution is proportional to the opposing volume. This means the closer the particle is to a corner, the greater the effect of that corner's force. The resulting force is added to the particle position.

With a new particle position, we repeat the interpolation. The particle is clamped so it never leaves the cell.

That's it! The final particle is a good approximation of the cell's optimal vertex.

‹ Back

Next ›