Module org.dyn4j

Class EarClipping

  • All Implemented Interfaces:
    Decomposer, Triangulator

    public class EarClipping
    extends AbstractDecomposer
    implements Decomposer, Triangulator
    Implementation of the Ear Clipping convex decomposition algorithm for simple polygons.

    This algorithm operates only on simple polygons. A simple polygon is a polygon that has vertices that are connected by edges where:

    • Edges can only intersect at vertices
    • Vertices have at most two edge connections

    This implementation does not handle polygons with holes, but accepts both counter-clockwise and clockwise polygons.

    The polygon to decompose must be 4 or more vertices.

    This algorithm creates a valid triangulation (N - 2) triangles, then employs the Hertel-Mehlhorn algorithm to reduce the number of convex pieces.

    This algorithm is O(n2).

    Since:
    2.2.0
    Version:
    5.0.0
    Author:
    William Bittle
    • Constructor Detail

      • EarClipping

        public EarClipping()
    • Method Detail

      • decompose

        public List<Convex> decompose​(Vector2... points)
        Description copied from interface: Decomposer
        Performs the decomposition on the given polygon returning a list of Convex shapes.
        Specified by:
        decompose in interface Decomposer
        Parameters:
        points - the polygon vertices
        Returns:
        List<Convex>
      • contains

        protected boolean contains​(Vector2 a,
                                   Vector2 b,
                                   Vector2 c,
                                   Vector2 p)
        Returns true if the given point, p, is contained in the triangle created by a, b, and c.
        Parameters:
        a - the first point of the triangle
        b - the second point of the triangle
        c - the third point of the triangle
        p - the point to test for containment
        Returns:
        boolean true if the given point is contained in the given triangle