org.jbox2d.collision.shapes
Class PolygonShape

java.lang.Object
  extended by org.jbox2d.collision.shapes.Shape
      extended by 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
 Vec2 m_centroid
          Local position of the shape centroid in parent body frame.
 int m_count
          Number of active vertices in the shape.
 Vec2[] m_normals
          The normals of the shape.
 Vec2[] m_vertices
          The vertices of the shape.
 
Fields inherited from class org.jbox2d.collision.shapes.Shape
m_radius, m_type
 
Constructor Summary
PolygonShape()
           
 
Method Summary
 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.
 Shape clone()
           
 void computeAABB(AABB aabb, Transform xf, int childIndex)
          Given a transform, compute the associated axis aligned bounding box for a child shape.
 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.
 Vec2 getVertex(int index)
          Get a vertex by index.
 int getVertexCount()
          Get the vertex count.
 Vec2[] getVertices()
          Get the vertices in local coordinates.
 boolean raycast(RayCastOutput output, RayCastInput input, Transform xf, int childIndex)
          Cast a ray against a child shape.
 void set(Vec2[] vertices, int count)
          Create a convex hull from the given array of points.
 void set(Vec2[] verts, int num, Vec2Array vecPool, IntArray intPool)
          Create a convex hull from the given array of points.
 void setAsBox(float hx, float hy)
          Build vertices to represent an axis-aligned box.
 void setAsBox(float hx, float hy, Vec2 center, float angle)
          Build vertices to represent an oriented box.
 boolean testPoint(Transform xf, Vec2 p)
          Test a point for containment in this shape.
 boolean validate()
          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 Detail

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 Detail

PolygonShape

public PolygonShape()
Method Detail

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.



Copyright © 2013. All Rights Reserved.