public class AABBf extends Object
| Modifier and Type | Field and Description |
|---|---|
float |
maxX |
float |
maxY |
float |
maxZ |
float |
minX |
float |
minY |
float |
minZ |
| Constructor and Description |
|---|
AABBf()
Create a new
AABBf representing the box with
(minX, minY, minZ)=(+inf, +inf, +inf) and (maxX, maxY, maxZ)=(-inf, -inf, -inf). |
AABBf(AABBf source)
Create a new
AABBf as a copy of the given source. |
AABBf(float minX,
float minY,
float minZ,
float maxX,
float maxY,
float maxZ)
Create a new
AABBf with the given minimum and maximum corner coordinates. |
AABBf(Vector3fc min,
Vector3fc max)
Create a new
AABBf with the given minimum and maximum corner coordinates. |
| Modifier and Type | Method and Description |
|---|---|
AABBf |
correctBounds()
Ensure that the minimum coordinates are strictly less than or equal to the maximum coordinates by swapping
them if necessary.
|
boolean |
equals(Object obj) |
int |
hashCode() |
int |
intersectLineSegment(float p0X,
float p0Y,
float p0Z,
float p1X,
float p1Y,
float p1Z,
Vector2f result)
Determine whether the undirected line segment with the end points
(p0X, p0Y, p0Z) and (p1X, p1Y, p1Z)
intersects this AABB, and return the values of the parameter t in the ray equation
p(t) = origin + p0 * (p1 - p0) of the near and far point of intersection. |
int |
intersectLineSegment(LineSegmentf lineSegment,
Vector2f result)
Determine whether the given undirected line segment intersects this AABB, and return the values of the parameter t in the ray equation
p(t) = origin + p0 * (p1 - p0) of the near and far point of intersection.
|
boolean |
intersectRay(float originX,
float originY,
float originZ,
float dirX,
float dirY,
float dirZ,
Vector2f result)
Determine whether the given ray with the origin
(originX, originY, originZ) and direction (dirX, dirY, dirZ)
intersects this AABB, and return the values of the parameter t in the ray equation
p(t) = origin + t * dir of the near and far point of intersection. |
boolean |
intersectRay(Rayf ray,
Vector2f result)
Determine whether the given ray intersects this AABB, and return the values of the parameter t in the ray equation
p(t) = origin + t * dir of the near and far point of intersection.
|
AABBf |
setMax(float maxX,
float maxY,
float maxZ)
Set the maximum corner coordinates.
|
AABBf |
setMax(Vector3fc max)
Set the maximum corner coordinates.
|
AABBf |
setMin(float minX,
float minY,
float minZ)
Set the minimum corner coordinates.
|
AABBf |
setMin(Vector3fc min)
Set the minimum corner coordinates.
|
boolean |
testAABB(AABBf other)
Test whether
this and other intersect. |
boolean |
testPlane(float a,
float b,
float c,
float d)
Test whether the plane given via its plane equation
a*x + b*y + c*z + d = 0 intersects this AABB. |
boolean |
testPlane(Planef plane)
Test whether the given plane intersects this AABB.
|
boolean |
testPoint(float x,
float y,
float z)
Test whether the point
(x, y, z) lies inside this AABB. |
boolean |
testPoint(Vector3fc point)
Test whether the given point lies inside this AABB.
|
boolean |
testRay(float originX,
float originY,
float originZ,
float dirX,
float dirY,
float dirZ)
Test whether the given ray with the origin
(originX, originY, originZ) and direction (dirX, dirY, dirZ)
intersects this AABB. |
boolean |
testRay(Rayf ray)
Test whether the given ray intersects this AABB.
|
boolean |
testSphere(float centerX,
float centerY,
float centerZ,
float radiusSquared)
Test whether this AABB intersects the given sphere with equation
(x - centerX)^2 + (y - centerY)^2 + (z - centerZ)^2 - radiusSquared = 0. |
boolean |
testSphere(Spheref sphere)
Test whether this AABB intersects the given sphere.
|
String |
toString()
Return a string representation of this AABB.
|
String |
toString(NumberFormat formatter)
Return a string representation of this AABB by formatting the vector components with the given
NumberFormat. |
AABBf |
union(AABBf other)
Set
this to the union of this and other. |
AABBf |
union(AABBf other,
AABBf dest)
Compute the union of
this and other and store the result in dest. |
AABBf |
union(float x,
float y,
float z)
Set
this to the union of this and the given point (x, y, z). |
AABBf |
union(float x,
float y,
float z,
AABBf dest)
Compute the union of
this and the given point (x, y, z) and store the result in dest. |
AABBf |
union(Vector3fc p)
Set
this to the union of this and the given point p. |
AABBf |
union(Vector3fc p,
AABBf dest)
Compute the union of
this and the given point p and store the result in dest. |
public float minX
public float minY
public float minZ
public float maxX
public float maxY
public float maxZ
public AABBf()
AABBf representing the box with
(minX, minY, minZ)=(+inf, +inf, +inf) and (maxX, maxY, maxZ)=(-inf, -inf, -inf).public AABBf(AABBf source)
AABBf as a copy of the given source.source - the AABBf to copy frompublic AABBf(Vector3fc min, Vector3fc max)
AABBf with the given minimum and maximum corner coordinates.min - the minimum coordinatesmax - the maximum coordinatespublic AABBf(float minX,
float minY,
float minZ,
float maxX,
float maxY,
float maxZ)
AABBf with the given minimum and maximum corner coordinates.minX - the x coordinate of the minimum cornerminY - the y coordinate of the minimum cornerminZ - the z coordinate of the minimum cornermaxX - the x coordinate of the maximum cornermaxY - the y coordinate of the maximum cornermaxZ - the z coordinate of the maximum cornerpublic AABBf setMin(float minX, float minY, float minZ)
minX - the x coordinate of the minimum cornerminY - the y coordinate of the minimum cornerminZ - the z coordinate of the minimum cornerpublic AABBf setMax(float maxX, float maxY, float maxZ)
maxX - the x coordinate of the maximum cornermaxY - the y coordinate of the maximum cornermaxZ - the z coordinate of the maximum cornerpublic AABBf setMin(Vector3fc min)
min - the minimum coordinatespublic AABBf setMax(Vector3fc max)
max - the maximum coordinatespublic AABBf union(float x, float y, float z)
this to the union of this and the given point (x, y, z).x - the x coordinate of the pointy - the y coordinate of the pointz - the z coordinate of the pointpublic AABBf union(Vector3fc p)
this to the union of this and the given point p.p - the pointpublic AABBf union(float x, float y, float z, AABBf dest)
this and the given point (x, y, z) and store the result in dest.x - the x coordinate of the pointy - the y coordinate of the pointz - the z coordinate of the pointdest - will hold the resultpublic AABBf union(Vector3fc p, AABBf dest)
this and the given point p and store the result in dest.p - the pointdest - will hold the resultpublic AABBf union(AABBf other)
this to the union of this and other.other - the other AABBfpublic AABBf union(AABBf other, AABBf dest)
this and other and store the result in dest.other - the other AABBfdest - will hold the resultpublic AABBf correctBounds()
public boolean testPoint(float x,
float y,
float z)
(x, y, z) lies inside this AABB.x - the x coordinate of the pointy - the y coordinate of the pointz - the z coordinate of the pointtrue iff the given point lies inside this AABB; false otherwisepublic boolean testPoint(Vector3fc point)
point - the coordinates of the pointtrue iff the given point lies inside this AABB; false otherwisepublic boolean testPlane(float a,
float b,
float c,
float d)
a*x + b*y + c*z + d = 0 intersects this AABB.
Reference: http://www.lighthouse3d.com ("Geometric Approach - Testing Boxes II")
a - the x factor in the plane equationb - the y factor in the plane equationc - the z factor in the plane equationd - the constant in the plane equationtrue iff the plane intersects this AABB; false otherwisepublic boolean testPlane(Planef plane)
Reference: http://www.lighthouse3d.com ("Geometric Approach - Testing Boxes II")
plane - the planetrue iff the plane intersects this AABB; false otherwisepublic boolean testAABB(AABBf other)
this and other intersect.other - the other AABBtrue iff both AABBs intersect; false otherwisepublic boolean testSphere(float centerX,
float centerY,
float centerZ,
float radiusSquared)
(x - centerX)^2 + (y - centerY)^2 + (z - centerZ)^2 - radiusSquared = 0.
Reference: http://stackoverflow.com
centerX - the x coordinate of the center of the spherecenterY - the y coordinate of the center of the spherecenterZ - the z coordinate of the center of the sphereradiusSquared - the square radius of the spheretrue iff this AABB and the sphere intersect; false otherwisepublic boolean testSphere(Spheref sphere)
Reference: http://stackoverflow.com
sphere - the spheretrue iff this AABB and the sphere intersect; false otherwisepublic boolean testRay(float originX,
float originY,
float originZ,
float dirX,
float dirY,
float dirZ)
(originX, originY, originZ) and direction (dirX, dirY, dirZ)
intersects this AABB.
This method returns true for a ray whose origin lies inside this AABB.
Reference: An Efficient and Robust Ray–Box Intersection
originX - the x coordinate of the ray's originoriginY - the y coordinate of the ray's originoriginZ - the z coordinate of the ray's origindirX - the x coordinate of the ray's directiondirY - the y coordinate of the ray's directiondirZ - the z coordinate of the ray's directiontrue if this AABB and the ray intersect; false otherwisepublic boolean testRay(Rayf ray)
This method returns true for a ray whose origin lies inside this AABB.
Reference: An Efficient and Robust Ray–Box Intersection
ray - the raytrue if this AABB and the ray intersect; false otherwisepublic boolean intersectRay(float originX,
float originY,
float originZ,
float dirX,
float dirY,
float dirZ,
Vector2f result)
(originX, originY, originZ) and direction (dirX, dirY, dirZ)
intersects this AABB, and return the values of the parameter t in the ray equation
p(t) = origin + t * dir of the near and far point of intersection.
This method returns true for a ray whose origin lies inside this AABB.
Reference: An Efficient and Robust Ray–Box Intersection
originX - the x coordinate of the ray's originoriginY - the y coordinate of the ray's originoriginZ - the z coordinate of the ray's origindirX - the x coordinate of the ray's directiondirY - the y coordinate of the ray's directiondirZ - the z coordinate of the ray's directionresult - a vector which will hold the resulting values of the parameter
t in the ray equation p(t) = origin + t * dir of the near and far point of intersection
iff the ray intersects this AABBtrue if the given ray intersects this AABB; false otherwisepublic boolean intersectRay(Rayf ray, Vector2f result)
This method returns true for a ray whose origin lies inside this AABB.
Reference: An Efficient and Robust Ray–Box Intersection
ray - the rayresult - a vector which will hold the resulting values of the parameter
t in the ray equation p(t) = origin + t * dir of the near and far point of intersection
iff the ray intersects this AABBtrue if the given ray intersects this AABB; false otherwisepublic int intersectLineSegment(float p0X,
float p0Y,
float p0Z,
float p1X,
float p1Y,
float p1Z,
Vector2f result)
(p0X, p0Y, p0Z) and (p1X, p1Y, p1Z)
intersects this AABB, and return the values of the parameter t in the ray equation
p(t) = origin + p0 * (p1 - p0) of the near and far point of intersection.
This method returns true for a line segment whose either end point lies inside this AABB.
Reference: An Efficient and Robust Ray–Box Intersection
p0X - the x coordinate of the line segment's first end pointp0Y - the y coordinate of the line segment's first end pointp0Z - the z coordinate of the line segment's first end pointp1X - the x coordinate of the line segment's second end pointp1Y - the y coordinate of the line segment's second end pointp1Z - the z coordinate of the line segment's second end pointresult - a vector which will hold the resulting values of the parameter
t in the ray equation p(t) = p0 + t * (p1 - p0) of the near and far point of intersection
iff the line segment intersects this AABBIntersectionf.INSIDE if the line segment lies completely inside of this AABB; or
Intersectionf.OUTSIDE if the line segment lies completely outside of this AABB; or
Intersectionf.ONE_INTERSECTION if one of the end points of the line segment lies inside of this AABB; or
Intersectionf.TWO_INTERSECTION if the line segment intersects two sides of this AABB or lies on an edge or a side of this AABBpublic int intersectLineSegment(LineSegmentf lineSegment, Vector2f result)
This method returns true for a line segment whose either end point lies inside this AABB.
Reference: An Efficient and Robust Ray–Box Intersection
lineSegment - the line segmentresult - a vector which will hold the resulting values of the parameter
t in the ray equation p(t) = p0 + t * (p1 - p0) of the near and far point of intersection
iff the line segment intersects this AABBIntersectionf.INSIDE if the line segment lies completely inside of this AABB; or
Intersectionf.OUTSIDE if the line segment lies completely outside of this AABB; or
Intersectionf.ONE_INTERSECTION if one of the end points of the line segment lies inside of this AABB; or
Intersectionf.TWO_INTERSECTION if the line segment intersects two sides of this AABB or lies on an edge or a side of this AABBpublic String toString()
This method creates a new DecimalFormat on every invocation with the format string "0.000E0;-".
public String toString(NumberFormat formatter)
NumberFormat.formatter - the NumberFormat used to format the vector components withCopyright © 2015–2019 JOML. All rights reserved.