Class PVolumesD
public final class PVolumesD
extends java.lang.Object
Functions over volumes.
These functions operate using the concepts of minimum-x, maximum-x, minimum-y, maximum-y, minimum-z, maximum-z, edges. It is up to individual applications to assign meaning to these edges such as "left" for minimum-x, "top" for minimum-y, or "far" for minimum-z.
-
Method Summary
Modifier and Type Method Description static <S, T> PVolumeD<T>cast(PVolumeD<S> volume)Brand a given volume as belonging to a different coordinate space.static <S> PVolumeD<S>containing(PVolumeD<S> a, PVolumeD<S> b)Construct a volume that will contain bothaandb.static <S> booleancontains(PVolumeD<S> a, PVolumeD<S> b)Determine whether or not one volume contains another.static <S> booleancontainsPoint(PVolumeD<S> a, double x, double y, double z)Determine whether or not a volume contains a given point.static <S> booleancouldFitInside(PVolumeD<S> a, PVolumeD<S> b)Determine whether or not one volume could fit inside another.static <S> PVolumeD<S>create(double x, double y, double z, double size_x, double size_y, double size_z)Create a volume of size (size_x,size_y,size_z) placing the minimum corner at(x, y, z).static <S> PVolumeD<S>moveAbsolute(PVolumeD<S> volume, double x, double y, double z)Move the given volume to(x, y, z).static <S> PVolumeD<S>moveRelative(PVolumeD<S> volume, double x, double y, double z)Move the given volume by(x, y, z).static <S> PVolumeD<S>moveRelativeClamped(PVolumeD<S> container, PVolumeD<S> volume, double x, double y, double z)Move the given volume by(x, y, z), without allowingvolumeto leavecontainer.static <S> PVolumeD<S>moveRelativeClampedX(PVolumeD<S> container, PVolumeD<S> volume, double x)Move the given volume byx, without allowingvolumeto leavecontainer.static <S> PVolumeD<S>moveRelativeClampedY(PVolumeD<S> container, PVolumeD<S> volume, double y)Move the given volume byy, without allowingvolumeto leavecontainer.static <S> PVolumeD<S>moveRelativeClampedZ(PVolumeD<S> container, PVolumeD<S> volume, double z)Move the given volume byz, without allowingvolumeto leavecontainer.static <S> PVolumeD<S>moveToOrigin(PVolumeD<S> volume)Move the given volume to(0, 0, 0).static <S> booleanoverlaps(PVolumeD<S> a, PVolumeD<S> b)Determine whether or not two volumes overlap.static <S> java.lang.Stringshow(PVolumeD<S> volume)static <S> java.lang.StringshowToBuilder(PVolumeD<S> volume, java.lang.StringBuilder sb)static <S> PVolumeSizeD<S>size(PVolumeD<S> volume)static <S> PVolumeXYZSplitD<S,PVolumeD<S>>splitAtXYZ(PVolumeD<S> v, double x, double y, double z)Split the given volume at point(x, y, z).
-
Method Details
-
create
public static <S> PVolumeD<S> create(double x, double y, double z, double size_x, double size_y, double size_z)Create a volume of size (size_x,size_y,size_z) placing the minimum corner at(x, y, z).- Type Parameters:
S- The coordinate space of the volume- Parameters:
x- The X value of the minimum cornery- The Y value of the minimum cornerz- The Z value of the minimum cornersize_x- The size of the volume on the X axissize_y- The size of the volume on the Y axissize_z- The size of the volume on the Z axis- Returns:
- A volume
-
contains
Determine whether or not one volume contains another.
Containing is reflexive:
contains(a, a) == true.Containing is transitive:
contains(a, b) → contains(b, c) → contains(a, c).Containing is not necessarily symmetric.
- Type Parameters:
S- The coordinate space of the volumes- Parameters:
a- Volume Ab- Volume B- Returns:
trueiffacontainsb
-
moveRelative
Move the given volume by(x, y, z).- Type Parameters:
S- The coordinate space of the volume- Parameters:
volume- The volumex- The amount to move on the X axisy- The amount to move on the Y axisz- The amount to move on the Z axis- Returns:
- A moved volume
-
moveRelativeClampedX
public static <S> PVolumeD<S> moveRelativeClampedX(PVolumeD<S> container, PVolumeD<S> volume, double x)Move the given volume byx, without allowingvolumeto leavecontainer.- Type Parameters:
S- The coordinate space of the volume- Parameters:
container- The container volumevolume- The volumex- The amount to move on the X axis- Returns:
- A moved volume
- Since:
- 3.0.0
-
moveRelativeClampedY
public static <S> PVolumeD<S> moveRelativeClampedY(PVolumeD<S> container, PVolumeD<S> volume, double y)Move the given volume byy, without allowingvolumeto leavecontainer.- Type Parameters:
S- The coordinate space of the volume- Parameters:
container- The container volumevolume- The volumey- The amount to move on the Y axis- Returns:
- A moved volume
- Since:
- 3.0.0
-
moveRelativeClampedZ
public static <S> PVolumeD<S> moveRelativeClampedZ(PVolumeD<S> container, PVolumeD<S> volume, double z)Move the given volume byz, without allowingvolumeto leavecontainer.- Type Parameters:
S- The coordinate space of the volume- Parameters:
container- The container volumevolume- The volumez- The amount to move on the Z axis- Returns:
- A moved volume
- Since:
- 3.0.0
-
moveRelativeClamped
public static <S> PVolumeD<S> moveRelativeClamped(PVolumeD<S> container, PVolumeD<S> volume, double x, double y, double z)Move the given volume by(x, y, z), without allowingvolumeto leavecontainer.- Type Parameters:
S- The coordinate space of the volume- Parameters:
container- The container volumevolume- The volumex- The amount to move on the X axisy- The amount to move on the Y axisz- The amount to move on the Z axis- Returns:
- A moved volume
- Since:
- 3.0.0
-
moveAbsolute
Move the given volume to(x, y, z).- Type Parameters:
S- The coordinate space of the volume- Parameters:
volume- The volumex- The position to which to move on the X axisy- The position to which to move on the Y axisz- The position to which to move on the Z axis- Returns:
- A moved volume
-
moveToOrigin
Move the given volume to(0, 0, 0).- Type Parameters:
S- The coordinate space of the volume- Parameters:
volume- The volume- Returns:
- A moved volume
-
cast
Brand a given volume as belonging to a different coordinate space. Mixing up coordinate spaces is a common source of difficult-to-locate bugs. Use at your own risk.- Type Parameters:
S- The starting coordinate spaceT- The resulting coordinate space- Parameters:
volume- A volume- Returns:
volume
-
overlaps
Determine whether or not two volumes overlap.
Overlapping is reflexive:
overlaps(a, a) == true.Overlapping is symmetric:
overlaps(a, b) == overlaps(b, a).Overlapping is not necessarily transitive.
- Type Parameters:
S- The coordinate space of the volumes- Parameters:
a- A volumeb- A volume- Returns:
trueiffaoverlapsb
-
couldFitInside
Determine whether or not one volume could fit inside another.
Fitting is reflexive:
couldFitInside(a, a) == true.Fitting is transitive:
couldFitInside(a, b) → couldFitInside(b, c) → couldFitInside(a, c).Fitting is not necessarily symmetric.
- Type Parameters:
S- The coordinate space of the volumes- Parameters:
a- A volumeb- A volume- Returns:
trueiffacould fit insideb
-
containing
Construct a volume that will contain bothaandb.- Type Parameters:
S- The coordinate space of the volumes- Parameters:
a- A volumeb- A volume- Returns:
- A volume containing
aandb
-
containsPoint
Determine whether or not a volume contains a given point.
- Type Parameters:
S- The coordinate space of the volume- Parameters:
a- A volumex- The X coordinate of the pointy- The Y coordinate of the pointz- The Z coordinate of the point- Returns:
trueiffacontains(x, y, z)
-
splitAtXYZ
public static <S> PVolumeXYZSplitD<S,PVolumeD<S>> splitAtXYZ(PVolumeD<S> v, double x, double y, double z)Split the given volume at point
(x, y, z).- Type Parameters:
S- The coordinate space of the volume- Parameters:
v- A volumex- The X coordinate of the pointy- The Y coordinate of the pointz- The Z coordinate of the point- Returns:
trueiffacontains(x, y, z)
-
show
- Type Parameters:
S- The coordinate space of the volume- Parameters:
volume- The volume- Returns:
- A terse string describing the position and size of the volume
-
size
- Type Parameters:
S- The coordinate space of the volume- Parameters:
volume- The volume- Returns:
- The size of the volume
-
showToBuilder
- Type Parameters:
S- The coordinate space of the volume- Parameters:
volume- The volumesb- A string builder- Returns:
- A terse string describing the position and size of the volume
-