Class PolygonShape

java.lang.Object
org.jbox2d.collision.shapes.Shape
org.jbox2d.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
    Local position of the shape centroid in parent body frame.
    int
    Number of active vertices in the shape.
    private static final boolean
    Dump lots of debug information.
    final Vec2[]
    The normals of the shape.
    final Vec2[]
    The vertices of the shape.
    private final Vec2
     
    private final Vec2
     
    private final Vec2
     
    private final Vec2
     
    private Transform
     

    Fields inherited from class org.jbox2d.collision.shapes.Shape

    m_radius, m_type
  • Constructor Summary

    Constructors
    Constructor
    Description
     
  • Method Summary

    Modifier and Type
    Method
    Description
    Get the centroid and apply the supplied transform.
    Get the centroid and apply the supplied transform.
    final Shape
     
    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
    Get the number of child primitives
    Get the edge normal vectors.
    final Vec2
    getVertex(int index)
    Get a vertex by index.
    final int
    Get the vertex count.
    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
    Test a point for containment in this shape.
    boolean
    Validate convexity.

    Methods inherited from class org.jbox2d.collision.shapes.Shape

    getRadius, getType, setRadius

    Methods inherited from class java.lang.Object

    equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Field Details

    • m_debug

      private static final boolean m_debug
      Dump lots of debug information.
      See Also:
    • 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
    • poolt1

      private Transform poolt1
  • 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.