public class AABBd extends Object implements Externalizable
| Modifier and Type | Field and Description |
|---|---|
double |
maxX
The x coordinate of the maximum corner.
|
double |
maxY
The y coordinate of the maximum corner.
|
double |
maxZ
The z coordinate of the maximum corner.
|
double |
minX
The x coordinate of the minimum corner.
|
double |
minY
The y coordinate of the minimum corner.
|
double |
minZ
The z coordinate of the minimum corner.
|
| Constructor and Description |
|---|
AABBd()
Create a new
AABBd representing the box with
(minX, minY, minZ)=(+inf, +inf, +inf) and (maxX, maxY, maxZ)=(-inf, -inf, -inf). |
AABBd(AABBd source)
Create a new
AABBd as a copy of the given source. |
AABBd(double minX,
double minY,
double minZ,
double maxX,
double maxY,
double maxZ)
Create a new
AABBd with the given minimum and maximum corner coordinates. |
AABBd(Vector3dc min,
Vector3dc max)
Create a new
AABBd with the given minimum and maximum corner coordinates. |
AABBd(Vector3fc min,
Vector3fc max)
Create a new
AABBd with the given minimum and maximum corner coordinates. |
| Modifier and Type | Method and Description |
|---|---|
AABBd |
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) |
double |
getMax(int component)
Get the maximum corner coordinate of the given component.
|
double |
getMin(int component)
Get the minimum corner coordinate of the given component.
|
int |
hashCode() |
int |
intersectLineSegment(double p0X,
double p0Y,
double p0Z,
double p1X,
double p1Y,
double p1Z,
Vector2d 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,
Vector2d 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(double originX,
double originY,
double originZ,
double dirX,
double dirY,
double dirZ,
Vector2d 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(Rayd ray,
Vector2d 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.
|
void |
readExternal(ObjectInput in) |
AABBd |
setMax(double maxX,
double maxY,
double maxZ)
Set the maximum corner coordinates.
|
AABBd |
setMax(Vector3dc max)
Set the maximum corner coordinates.
|
AABBd |
setMin(double minX,
double minY,
double minZ)
Set the minimum corner coordinates.
|
AABBd |
setMin(Vector3dc min)
Set the minimum corner coordinates.
|
boolean |
testAABB(AABBd other)
Test whether
this and other intersect. |
boolean |
testPlane(double a,
double b,
double c,
double d)
Test whether the plane given via its plane equation
a*x + b*y + c*z + d = 0 intersects this AABB. |
boolean |
testPlane(Planed plane)
Test whether the given plane intersects this AABB.
|
boolean |
testPoint(double x,
double y,
double z)
Test whether the point
(x, y, z) lies inside this AABB. |
boolean |
testPoint(Vector3dc point)
Test whether the given point lies inside this AABB.
|
boolean |
testRay(double originX,
double originY,
double originZ,
double dirX,
double dirY,
double dirZ)
Test whether the given ray with the origin
(originX, originY, originZ) and direction (dirX, dirY, dirZ)
intersects this AABB. |
boolean |
testRay(Rayd ray)
Test whether the given ray intersects this AABB.
|
boolean |
testSphere(double centerX,
double centerY,
double centerZ,
double 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. |
AABBd |
translate(double x,
double y,
double z)
Translate
this by the vector (x, y, z). |
AABBd |
translate(double x,
double y,
double z,
AABBd dest)
Translate
this by the vector (x, y, z) and store the result in dest. |
AABBd |
translate(Vector3dc xyz)
Translate
this by the given vector xyz. |
AABBd |
translate(Vector3dc xyz,
AABBd dest)
Translate
this by the given vector xyz and store the result in dest. |
AABBd |
translate(Vector3fc xyz)
Translate
this by the given vector xyz. |
AABBd |
translate(Vector3fc xyz,
AABBd dest)
Translate
this by the given vector xyz and store the result in dest. |
AABBd |
union(AABBd other)
Set
this to the union of this and other. |
AABBd |
union(AABBd other,
AABBd dest)
Compute the union of
this and other and store the result in dest. |
AABBd |
union(double x,
double y,
double z)
Set
this to the union of this and the given point (x, y, z). |
AABBd |
union(double x,
double y,
double z,
AABBd dest)
Compute the union of
this and the given point (x, y, z) and store the result in dest. |
AABBd |
union(Vector3dc p)
Set
this to the union of this and the given point p. |
AABBd |
union(Vector3dc p,
AABBd dest)
Compute the union of
this and the given point p and store the result in dest. |
void |
writeExternal(ObjectOutput out) |
public double minX
public double minY
public double minZ
public double maxX
public double maxY
public double maxZ
public AABBd()
AABBd representing the box with
(minX, minY, minZ)=(+inf, +inf, +inf) and (maxX, maxY, maxZ)=(-inf, -inf, -inf).public AABBd(AABBd source)
AABBd as a copy of the given source.source - the AABBd to copy frompublic AABBd(Vector3fc min, Vector3fc max)
AABBd with the given minimum and maximum corner coordinates.min - the minimum coordinatesmax - the maximum coordinatespublic AABBd(Vector3dc min, Vector3dc max)
AABBd with the given minimum and maximum corner coordinates.min - the minimum coordinatesmax - the maximum coordinatespublic AABBd(double minX,
double minY,
double minZ,
double maxX,
double maxY,
double maxZ)
AABBd 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 AABBd setMin(double minX, double minY, double minZ)
minX - the x coordinate of the minimum cornerminY - the y coordinate of the minimum cornerminZ - the z coordinate of the minimum cornerpublic AABBd setMax(double maxX, double maxY, double maxZ)
maxX - the x coordinate of the maximum cornermaxY - the y coordinate of the maximum cornermaxZ - the z coordinate of the maximum cornerpublic AABBd setMin(Vector3dc min)
min - the minimum coordinatespublic AABBd setMax(Vector3dc max)
max - the maximum coordinatespublic double getMax(int component)
throws IllegalArgumentException
component - the component, within [0..2]IllegalArgumentException - if component is not within [0..2]public double getMin(int component)
throws IllegalArgumentException
component - the component, within [0..2]IllegalArgumentException - if component is not within [0..2]public AABBd union(double x, double y, double 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 AABBd union(Vector3dc p)
this to the union of this and the given point p.p - the pointpublic AABBd union(double x, double y, double z, AABBd 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 AABBd union(Vector3dc p, AABBd dest)
this and the given point p and store the result in dest.p - the pointdest - will hold the resultpublic AABBd union(AABBd other)
this to the union of this and other.other - the other AABBdpublic AABBd union(AABBd other, AABBd dest)
this and other and store the result in dest.other - the other AABBddest - will hold the resultpublic AABBd correctBounds()
public AABBd translate(Vector3dc xyz)
this by the given vector xyz.xyz - the vector to translate bypublic AABBd translate(Vector3dc xyz, AABBd dest)
this by the given vector xyz and store the result in dest.xyz - the vector to translate bydest - will hold the resultpublic AABBd translate(Vector3fc xyz)
this by the given vector xyz.xyz - the vector to translate bypublic AABBd translate(Vector3fc xyz, AABBd dest)
this by the given vector xyz and store the result in dest.xyz - the vector to translate bydest - will hold the resultpublic AABBd translate(double x, double y, double z)
this by the vector (x, y, z).x - the x coordinate to translate byy - the y coordinate to translate byz - the z coordinate to translate bypublic AABBd translate(double x, double y, double z, AABBd dest)
this by the vector (x, y, z) and store the result in dest.x - the x coordinate to translate byy - the y coordinate to translate byz - the z coordinate to translate bydest - will hold the resultpublic boolean testPoint(double x,
double y,
double 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(Vector3dc point)
point - the coordinates of the pointtrue iff the given point lies inside this AABB; false otherwisepublic boolean testPlane(double a,
double b,
double c,
double 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(Planed plane)
Reference: http://www.lighthouse3d.com ("Geometric Approach - Testing Boxes II")
plane - the planetrue iff the plane intersects this AABB; false otherwisepublic boolean testAABB(AABBd other)
this and other intersect.other - the other AABBtrue iff both AABBs intersect; false otherwisepublic boolean testSphere(double centerX,
double centerY,
double centerZ,
double 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(double originX,
double originY,
double originZ,
double dirX,
double dirY,
double 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(Rayd 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(double originX,
double originY,
double originZ,
double dirX,
double dirY,
double dirZ,
Vector2d 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(Rayd ray, Vector2d 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(double p0X,
double p0Y,
double p0Z,
double p1X,
double p1Y,
double p1Z,
Vector2d 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 AABBIntersectiond.INSIDE if the line segment lies completely inside of this AABB; or
Intersectiond.OUTSIDE if the line segment lies completely outside of this AABB; or
Intersectiond.ONE_INTERSECTION if one of the end points of the line segment lies inside of this AABB; or
Intersectiond.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, Vector2d 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 AABBIntersectiond.INSIDE if the line segment lies completely inside of this AABB; or
Intersectiond.OUTSIDE if the line segment lies completely outside of this AABB; or
Intersectiond.ONE_INTERSECTION if one of the end points of the line segment lies inside of this AABB; or
Intersectiond.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 withpublic void writeExternal(ObjectOutput out) throws IOException
writeExternal in interface ExternalizableIOExceptionpublic void readExternal(ObjectInput in) throws IOException, ClassNotFoundException
readExternal in interface ExternalizableIOExceptionClassNotFoundExceptionCopyright © 2015–2019 JOML. All rights reserved.