# Class PolygonShape

java.lang.Object
com.codename1.gaming.physics.box2d.collision.shapes.Shape
com.codename1.gaming.physics.box2d.collision.shapes.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 Summary

  Fields
  Modifier and Type
  Field
  Description
  `final Vec2`
  `m_centroid`
  Local position of the shape centroid in parent body frame.
  `int`
  `m_count`
  Number of active vertices in the shape.
  `final Vec2[]`
  `m_normals`
  The normals of the shape.
  `final Vec2[]`
  `m_vertices`
  The vertices of the shape.

  ### Fields inherited from class Shape

  `m_radius, m_type`

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `PolygonShape()`

- ## Method Summary

  Modifier and Type
  Method
  Description
  `Vec2`
  `centroid(Transform xf)`
  Get the centroid and apply the supplied transform.
  `Vec2`
  `centroidToOut(Transform xf, Vec2 out)`
  Get the centroid and apply the supplied transform.
  `final Shape`
  `clone()`
  `final void`
  `computeAABB(AABB aabb, Transform xf, int childIndex)`
  Given a transform, compute the associated axis aligned bounding box for a child shape.
  `final void`
  `computeCentroidToOut(Vec2[] vs, int count, Vec2 out)`
  `void`
  `computeMass(MassData massData, float density)`
  Compute the mass properties of this shape using its dimensions and density.
  `int`
  `getChildCount()`
  Get the number of child primitives
  `Vec2[]`
  `getNormals()`
  Get the edge normal vectors.
  `final Vec2`
  `getVertex(int index)`
  Get a vertex by index.
  `final int`
  `getVertexCount()`
  Get the vertex count.
  `Vec2[]`
  `getVertices()`
  Get the vertices in local coordinates.
  `final boolean`
  `raycast(RayCastOutput output, RayCastInput input, Transform xf, int childIndex)`
  Cast a ray against a child shape.
  `final void`
  `set(Vec2[] vertices, int count)`
  Create a convex hull from the given array of points.
  `final void`
  `set(Vec2[] verts, int num, Vec2Array vecPool, IntArray intPool)`
  Create a convex hull from the given array of points.
  `final void`
  `setAsBox(float hx, float hy)`
  Build vertices to represent an axis-aligned box.
  `final void`
  `setAsBox(float hx, float hy, Vec2 center, float angle)`
  Build vertices to represent an oriented box.
  `final boolean`
  `testPoint(Transform xf, Vec2 p)`
  Test a point for containment in this shape.
  `boolean`
  `validate()`
  Validate convexity.

  ### Methods inherited from class Shape

  `getRadius, getType, setRadius`

  ### Methods inherited from class Object

  `equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- ## Field Details

  - ### 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.

- ## Constructor Details

  - ### PolygonShape

    public PolygonShape()

- ## Method Details

  - ### clone

    public final Shape clone()
    Specified by:
      `clone` in class `Shape`

  - ### 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:

  - ### raycast

    public final boolean raycast(RayCastOutput output, RayCastInput input, Transform xf, int childIndex)
    Description copied from class: `Shape`
    Cast a ray against a child shape.
    Specified by:
      `raycast` in class `Shape`
    Returns:
      if hit

  - ### 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.