Package com.badlogic.gdx.math
Class GeometryUtils
- java.lang.Object
-
- com.badlogic.gdx.math.GeometryUtils
-
public final class GeometryUtils extends java.lang.Object
-
-
Method Summary
All Methods Static Methods Concrete Methods Modifier and Type Method Description static booleanbarycoordInsideTriangle(Vector2 barycentric)Returns true if the barycentric coordinates are inside the triangle.static booleancolinear(float x1, float y1, float x2, float y2, float x3, float y3)static voidensureCCW(float[] polygon)static voidensureCCW(float[] polygon, int offset, int count)static voidensureClockwise(float[] polygon)static voidensureClockwise(float[] polygon, int offset, int count)static floatfromBarycoord(Vector2 barycentric, float a, float b, float c)Returns an interpolated value given the barycentric coordinates of a point in a triangle and the values at each vertex.static Vector2fromBarycoord(Vector2 barycentric, Vector2 a, Vector2 b, Vector2 c, Vector2 interpolatedOut)Returns interpolated values given the barycentric coordinates of a point in a triangle and the values at each vertex.static booleanisCCW(float[] polygon, int offset, int count)static booleanisClockwise(float[] polygon, int offset, int count)static floatlowestPositiveRoot(float a, float b, float c)Returns the lowest positive root of the quadric equation given by a * x * x + b * x + c = 0.static floatpolygonArea(float[] polygon, int offset, int count)Computes the area for a convex polygon.static Vector2polygonCentroid(float[] polygon, int offset, int count, Vector2 centroid)Returns the centroid for the specified non-self-intersecting polygon.static Vector2quadrilateralCentroid(float x1, float y1, float x2, float y2, float x3, float y3, float x4, float y4, Vector2 centroid)static voidreverseVertices(float[] polygon, int offset, int count)static Vector2toBarycoord(Vector2 p, Vector2 a, Vector2 b, Vector2 c, Vector2 barycentricOut)Computes the barycentric coordinates v,w for the specified point in the triangle.static floattriangleArea(float x1, float y1, float x2, float y2, float x3, float y3)static Vector2triangleCentroid(float x1, float y1, float x2, float y2, float x3, float y3, Vector2 centroid)static Vector2triangleCircumcenter(float x1, float y1, float x2, float y2, float x3, float y3, Vector2 circumcenter)Returns the circumcenter of the triangle.static floattriangleCircumradius(float x1, float y1, float x2, float y2, float x3, float y3)static floattriangleQuality(float x1, float y1, float x2, float y2, float x3, float y3)Ratio of circumradius to shortest edge as a measure of triangle quality.
-
-
-
Method Detail
-
toBarycoord
public static Vector2 toBarycoord(Vector2 p, Vector2 a, Vector2 b, Vector2 c, Vector2 barycentricOut)
Computes the barycentric coordinates v,w for the specified point in the triangle.If barycentric.x >= 0 && barycentric.y >= 0 && barycentric.x + barycentric.y <= 1 then the point is inside the triangle.
If vertices a,b,c have values aa,bb,cc then to get an interpolated value at point p:
GeometryUtils.toBarycoord(p, a, b, c, barycentric); // THEN: float u = 1f - barycentric.x - barycentric.y; float x = u * aa.x + barycentric.x * bb.x + barycentric.y * cc.x; float y = u * aa.y + barycentric.x * bb.y + barycentric.y * cc.y; // OR: GeometryUtils.fromBarycoord(barycentric, aa, bb, cc, out);
- Returns:
- barycentricOut
-
barycoordInsideTriangle
public static boolean barycoordInsideTriangle(Vector2 barycentric)
Returns true if the barycentric coordinates are inside the triangle.
-
fromBarycoord
public static Vector2 fromBarycoord(Vector2 barycentric, Vector2 a, Vector2 b, Vector2 c, Vector2 interpolatedOut)
Returns interpolated values given the barycentric coordinates of a point in a triangle and the values at each vertex.- Returns:
- interpolatedOut
-
fromBarycoord
public static float fromBarycoord(Vector2 barycentric, float a, float b, float c)
Returns an interpolated value given the barycentric coordinates of a point in a triangle and the values at each vertex.- Returns:
- interpolatedOut
-
lowestPositiveRoot
public static float lowestPositiveRoot(float a, float b, float c)Returns the lowest positive root of the quadric equation given by a * x * x + b * x + c = 0. If no solution is given, Float.NaN is returned.- Parameters:
a- the first coefficient of the quadric equationb- the second coefficient of the quadric equationc- the third coefficient of the quadric equation- Returns:
- the lowest positive root or Float.Nan
-
colinear
public static boolean colinear(float x1, float y1, float x2, float y2, float x3, float y3)
-
triangleCentroid
public static Vector2 triangleCentroid(float x1, float y1, float x2, float y2, float x3, float y3, Vector2 centroid)
-
triangleCircumcenter
public static Vector2 triangleCircumcenter(float x1, float y1, float x2, float y2, float x3, float y3, Vector2 circumcenter)
Returns the circumcenter of the triangle. The input points must not be colinear.
-
triangleCircumradius
public static float triangleCircumradius(float x1, float y1, float x2, float y2, float x3, float y3)
-
triangleQuality
public static float triangleQuality(float x1, float y1, float x2, float y2, float x3, float y3)Ratio of circumradius to shortest edge as a measure of triangle quality.Gary L. Miller, Dafna Talmor, Shang-Hua Teng, and Noel Walkington. A Delaunay Based Numerical Method for Three Dimensions: Generation, Formulation, and Partition.
-
triangleArea
public static float triangleArea(float x1, float y1, float x2, float y2, float x3, float y3)
-
quadrilateralCentroid
public static Vector2 quadrilateralCentroid(float x1, float y1, float x2, float y2, float x3, float y3, float x4, float y4, Vector2 centroid)
-
polygonCentroid
public static Vector2 polygonCentroid(float[] polygon, int offset, int count, Vector2 centroid)
Returns the centroid for the specified non-self-intersecting polygon.
-
polygonArea
public static float polygonArea(float[] polygon, int offset, int count)Computes the area for a convex polygon.
-
ensureCCW
public static void ensureCCW(float[] polygon)
-
ensureCCW
public static void ensureCCW(float[] polygon, int offset, int count)
-
ensureClockwise
public static void ensureClockwise(float[] polygon)
-
ensureClockwise
public static void ensureClockwise(float[] polygon, int offset, int count)
-
reverseVertices
public static void reverseVertices(float[] polygon, int offset, int count)
-
isClockwise
public static boolean isClockwise(float[] polygon, int offset, int count)
-
isCCW
public static boolean isCCW(float[] polygon, int offset, int count)
-
-