Class VolumesL
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 TypeMethodDescriptionstatic VolumeL
containing
(VolumeL a, VolumeL b) Construct a volume that will contain botha
andb
.static boolean
Determine whether or not one volume contains another.static boolean
containsPoint
(VolumeL a, long x, long y, long z) Determine whether or not a volume contains a given point.static boolean
couldFitInside
(VolumeL a, VolumeL b) Determine whether or not one volume could fit inside another.static VolumeL
create
(long x, long y, long z, long size_x, long size_y, long size_z) Create a volume of size (size_x
,size_y
,size_z
) placing the minimum corner at(x, y, z)
.static VolumeL
moveAbsolute
(VolumeL volume, long x, long y, long z) Move the given volume to(x, y, z)
.static VolumeL
moveRelative
(VolumeL volume, long x, long y, long z) Move the given volume by(x, y, z)
.static VolumeL
moveRelativeClamped
(VolumeL container, VolumeL volume, long x, long y, long z) Move the given volume by(x, y, z)
, without allowingvolume
to leavecontainer
.static VolumeL
moveRelativeClampedX
(VolumeL container, VolumeL volume, long x) Move the given volume byx
, without allowingvolume
to leavecontainer
.static VolumeL
moveRelativeClampedY
(VolumeL container, VolumeL volume, long y) Move the given volume byy
, without allowingvolume
to leavecontainer
.static VolumeL
moveRelativeClampedZ
(VolumeL container, VolumeL volume, long z) Move the given volume byz
, without allowingvolume
to leavecontainer
.static VolumeL
moveToOrigin
(VolumeL volume) Move the given volume to(0, 0, 0)
.static boolean
Determine whether or not two volumes overlap.static String
static String
showToBuilder
(VolumeL volume, StringBuilder sb) static VolumeSizeL
static VolumeXYZSplitL<VolumeL>
splitAtXYZ
(VolumeL v, long x, long y, long z) Split the given volume at point(x, y, z)
.
-
Method Details
-
create
Create a volume of size (size_x
,size_y
,size_z
) placing the minimum corner at(x, y, z)
.- 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.
- Parameters:
a
- Volume Ab
- Volume B- Returns:
true
iffa
containsb
-
moveRelative
Move the given volume by(x, y, z)
.- 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
Move the given volume byx
, without allowingvolume
to leavecontainer
.- Parameters:
container
- The container volumevolume
- The volumex
- The amount to move on the X axis- Returns:
- A moved volume
- Since:
- 3.0.0
-
moveRelativeClampedY
Move the given volume byy
, without allowingvolume
to leavecontainer
.- Parameters:
container
- The container volumevolume
- The volumey
- The amount to move on the Y axis- Returns:
- A moved volume
- Since:
- 3.0.0
-
moveRelativeClampedZ
Move the given volume byz
, without allowingvolume
to leavecontainer
.- 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 VolumeL moveRelativeClamped(VolumeL container, VolumeL volume, long x, long y, long z) Move the given volume by(x, y, z)
, without allowingvolume
to leavecontainer
.- 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)
.- 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)
.- Parameters:
volume
- The volume- Returns:
- A moved 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.
- Parameters:
a
- A volumeb
- A volume- Returns:
true
iffa
overlapsb
-
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.
- Parameters:
a
- A volumeb
- A volume- Returns:
true
iffa
could fit insideb
-
containing
Construct a volume that will contain botha
andb
.- Parameters:
a
- A volumeb
- A volume- Returns:
- A volume containing
a
andb
-
containsPoint
Determine whether or not a volume contains a given point.
- Parameters:
a
- A volumex
- The X coordinate of the pointy
- The Y coordinate of the pointz
- The Z coordinate of the point- Returns:
true
iffa
contains(x, y, z)
-
splitAtXYZ
Split the given volume at point
(x, y, z)
.- Parameters:
v
- A volumex
- The X coordinate of the pointy
- The Y coordinate of the pointz
- The Z coordinate of the point- Returns:
true
iffa
contains(x, y, z)
-
show
- Parameters:
volume
- The volume- Returns:
- A terse string describing the position and size of the volume
-
size
- Parameters:
volume
- The volume- Returns:
- The size of the volume
-
showToBuilder
- Parameters:
volume
- The volumesb
- A string builder- Returns:
- A terse string describing the position and size of the volume
-