- Object
-
- AbstractShape
-
- Slice
-
- All Implemented Interfaces:
DataContainer
,Convex
,Rotatable
,Shape
,Transformable
,Translatable
public class Slice extends AbstractShape implements Convex, Shape, Transformable, DataContainer
Implementation of a SliceConvex
Shape
.A slice is a piece of a
Circle
.This shape can represent any slice of a circle up to 180 degrees (half circle).
- Since:
- 3.1.5
- Version:
- 3.4.0
- Author:
- William Bittle
-
-
Constructor Summary
Constructors Constructor Description Slice(double radius, double theta)
Full constructor.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
computeAABB(Transform transform, AABB aabb)
boolean
contains(Vector2 point, Transform transform)
Returns true if the given point is inside thisShape
.Mass
createMass(double density)
Vector2[]
getAxes(Vector2[] foci, Transform transform)
Returns an array of separating axes to test for thisShape
.Vector2
getCircleCenter()
Returns the tip of the pie shape.Feature
getFarthestFeature(Vector2 vector, Transform transform)
Returns theFeature
farthest in the direction of the given vector.Vector2
getFarthestPoint(Vector2 vector, Transform transform)
Returns the point farthest in the direction of the given vector.Vector2[]
getFoci(Transform transform)
Returns an array of world space foci points for circular curved edges.double
getRadius(Vector2 center)
Returns the radius of the shape if the given point was the center for this shape.Rotation
getRotation()
double
getRotationAngle()
Returns the rotation about the local center in radians.double
getSliceRadius()
Returns the slice radius.double
getTheta()
Returns the angular extent of the slice in radians.Interval
project(Vector2 vector, Transform transform)
void
rotate(Rotation rotation, double x, double y)
Rotates the object about the given point.String
toString()
void
translate(double x, double y)
Translates the object the given amounts in the respective directions.-
Methods inherited from class AbstractShape
computeAABB, contains, createAABB, createAABB, getCenter, getRadius, getUserData, project, rotate, rotate, rotate, rotate, rotate, rotateAboutCenter, setUserData, translate
-
Methods inherited from interface DataContainer
getUserData, setUserData
-
Methods inherited from interface Shape
computeAABB, contains, createAABB, createAABB, getCenter, getRadius, project, rotateAboutCenter
-
Methods inherited from interface Translatable
translate
-
-
-
-
Constructor Detail
-
Slice
public Slice(double radius, double theta)
Full constructor.This method creates a slice of a circle with the circle center at the origin and half of theta below the x-axis and half above.
- Parameters:
radius
- the radius of the circular sectiontheta
- the angular extent in radians; must be greater than zero and less than or equal to π- Throws:
IllegalArgumentException
- throw if 1) radius is less than or equal to zero or 2) theta is less than or equal to zero or 3) theta is greater than 180 degrees
-
-
Method Detail
-
toString
public String toString()
- Overrides:
toString
in classAbstractShape
-
getAxes
public Vector2[] getAxes(Vector2[] foci, Transform transform)
Description copied from interface:Convex
Returns an array of separating axes to test for thisShape
.The
foci
parameter is an array of circular focal points of the otherShape
.If foci points are given, this method will return the separating axes for this
Shape
's voronoi regions also. The points in the foci array are assumed to be in world space.The returned axes are normalized and in world space.
-
getFoci
public Vector2[] getFoci(Transform transform)
Returns an array of world space foci points for circular curved edges.This method returns null if the
Shape
has zero curved edges.The returned points are in world space.
Returns a single point, the circle center.
-
getFarthestPoint
public Vector2 getFarthestPoint(Vector2 vector, Transform transform)
Description copied from interface:Convex
Returns the point farthest in the direction of the given vector. If two points are equally distant along the givenVector2
the first one is used.The returned point is in world space.
-
getFarthestFeature
public Feature getFarthestFeature(Vector2 vector, Transform transform)
Description copied from interface:Convex
Returns theFeature
farthest in the direction of the given vector.The returned feature is in world space.
-
project
public Interval project(Vector2 vector, Transform transform)
Description copied from interface:Shape
-
computeAABB
public void computeAABB(Transform transform, AABB aabb)
Description copied from interface:Shape
Computes theAABB
from thisShape
after applying the given transformation and places the result in the givenAABB
.- Specified by:
computeAABB
in interfaceShape
- Parameters:
transform
- theTransform
for thisShape
aabb
- the destinationAABB
-
createMass
public Mass createMass(double density)
Description copied from interface:Shape
- Specified by:
createMass
in interfaceShape
- Parameters:
density
- the density in kg/m2- Returns:
Mass
theMass
of thisShape
-
getRadius
public double getRadius(Vector2 center)
Description copied from interface:Shape
Returns the radius of the shape if the given point was the center for this shape.
-
contains
public boolean contains(Vector2 point, Transform transform)
Description copied from interface:Shape
-
rotate
public void rotate(Rotation rotation, double x, double y)
Description copied from interface:Rotatable
Rotates the object about the given point.- Specified by:
rotate
in interfaceRotatable
- Overrides:
rotate
in classAbstractShape
- Parameters:
rotation
- theRotation
representing the rotation amountx
- the x coordinate to rotate abouty
- the y coordinate to rotate about
-
translate
public void translate(double x, double y)
Description copied from interface:Translatable
Translates the object the given amounts in the respective directions.- Specified by:
translate
in interfaceTranslatable
- Overrides:
translate
in classAbstractShape
- Parameters:
x
- the translation in the x directiony
- the translation in the y direction
-
getRotationAngle
public double getRotationAngle()
Returns the rotation about the local center in radians.- Returns:
- double the rotation in radians
-
getRotation
public Rotation getRotation()
- Returns:
- the
Rotation
object that represents the local rotation
-
getTheta
public double getTheta()
Returns the angular extent of the slice in radians.- Returns:
- double
-
getSliceRadius
public double getSliceRadius()
Returns the slice radius.This is the radius passed in at creation.
- Returns:
- double
-
-