Class PolygonShape


  • public class PolygonShape
    extends Shape
    A convex polygon shape. Polygons have a maximum number of vertices equal to _maxPolygonVertices. In most cases you should not need many vertices for a convex polygon.
    • Field Detail

      • m_debug

        private static final boolean m_debug
        Dump lots of debug information.
        See Also:
        Constant Field Values
      • m_centroid

        public final Vec2 m_centroid
        Local position of the shape centroid in parent body frame.
      • m_vertices

        public final Vec2[] m_vertices
        The vertices of the shape. Note: use getVertexCount(), not m_vertices.length, to get number of active vertices.
      • m_normals

        public final Vec2[] m_normals
        The normals of the shape. Note: use getVertexCount(), not m_normals.length, to get number of active normals.
      • m_count

        public int m_count
        Number of active vertices in the shape.
      • pool1

        private final Vec2 pool1
      • pool2

        private final Vec2 pool2
      • pool3

        private final Vec2 pool3
      • pool4

        private final Vec2 pool4
    • Constructor Detail

      • PolygonShape

        public PolygonShape()
    • Method Detail

      • set

        public final void set​(Vec2[] vertices,
                              int count)
        Create a convex hull from the given array of points. The count must be in the range [3, Settings.maxPolygonVertices].
      • set

        public final void set​(Vec2[] verts,
                              int num,
                              Vec2Array vecPool,
                              IntArray intPool)
        Create a convex hull from the given array of points. The count must be in the range [3, Settings.maxPolygonVertices]. This method takes an arraypool for pooling
      • setAsBox

        public final void setAsBox​(float hx,
                                   float hy)
        Build vertices to represent an axis-aligned box.
        Parameters:
        hx - the half-width.
        hy - the half-height.
      • setAsBox

        public final void setAsBox​(float hx,
                                   float hy,
                                   Vec2 center,
                                   float angle)
        Build vertices to represent an oriented box.
        Parameters:
        hx - the half-width.
        hy - the half-height.
        center - the center of the box in local coordinates.
        angle - the rotation of the box in local coordinates.
      • getChildCount

        public int getChildCount()
        Description copied from class: Shape
        Get the number of child primitives
        Specified by:
        getChildCount in class Shape
        Returns:
      • testPoint

        public final boolean testPoint​(Transform xf,
                                       Vec2 p)
        Description copied from class: Shape
        Test a point for containment in this shape. This only works for convex shapes.
        Specified by:
        testPoint in class Shape
        Parameters:
        xf - the shape world transform.
        p - a point in world coordinates.
      • computeAABB

        public final void computeAABB​(AABB aabb,
                                      Transform xf,
                                      int childIndex)
        Description copied from class: Shape
        Given a transform, compute the associated axis aligned bounding box for a child shape.
        Specified by:
        computeAABB in class Shape
      • getVertexCount

        public final int getVertexCount()
        Get the vertex count.
        Returns:
      • getVertex

        public final Vec2 getVertex​(int index)
        Get a vertex by index.
        Parameters:
        index -
        Returns:
      • computeCentroidToOut

        public final void computeCentroidToOut​(Vec2[] vs,
                                               int count,
                                               Vec2 out)
      • computeMass

        public void computeMass​(MassData massData,
                                float density)
        Description copied from class: Shape
        Compute the mass properties of this shape using its dimensions and density. The inertia tensor is computed about the local origin.
        Specified by:
        computeMass in class Shape
        Parameters:
        massData - returns the mass data for this shape.
        density - the density in kilograms per meter squared.
      • validate

        public boolean validate()
        Validate convexity. This is a very time consuming operation.
        Returns:
      • getVertices

        public Vec2[] getVertices()
        Get the vertices in local coordinates.
      • getNormals

        public Vec2[] getNormals()
        Get the edge normal vectors. There is one for each vertex.
      • centroid

        public Vec2 centroid​(Transform xf)
        Get the centroid and apply the supplied transform.
      • centroidToOut

        public Vec2 centroidToOut​(Transform xf,
                                  Vec2 out)
        Get the centroid and apply the supplied transform.