Class ConvexVolume
java.lang.Object
org.apache.commons.geometry.core.partitioning.AbstractConvexHyperplaneBoundedRegion<Vector3D, PlaneConvexSubset>
org.apache.commons.geometry.euclidean.threed.ConvexVolume
- All Implemented Interfaces:
BoundarySource<PlaneConvexSubset>, HyperplaneBoundedRegion<Vector3D>, Splittable<Vector3D, HyperplaneBoundedRegion<Vector3D>>, Region<Vector3D>, Sized, BoundarySource3D, Linecastable3D
- Direct Known Subclasses:
Parallelepiped
public class ConvexVolume
extends AbstractConvexHyperplaneBoundedRegion<Vector3D, PlaneConvexSubset>
implements BoundarySource3D
Class representing a finite or infinite convex volume in Euclidean 3D space.
The boundaries of this area, if any, are composed of plane convex subsets.
-
Nested Class Summary
Nested classes/interfaces inherited from class AbstractConvexHyperplaneBoundedRegion
AbstractConvexHyperplaneBoundedRegion.ConvexRegionBoundaryBuilder<P,S> -
Field Summary
FieldsModifier and TypeFieldDescriptionprivate static final ConvexVolumeInstance representing the full 3D volume. -
Constructor Summary
ConstructorsModifierConstructorDescriptionprotectedConvexVolume(List<PlaneConvexSubset> boundaries) Simple constructor. -
Method Summary
Modifier and TypeMethodDescriptionReturn a stream containing the boundaries for this instance.static ConvexVolumefromBounds(Iterable<? extends Plane> boundingPlanes) Create a convex volume formed by the intersection of the negative half-spaces of the given bounding planes.static ConvexVolumefromBounds(Plane... planes) Create a convex volume formed by the intersection of the negative half-spaces of the given bounding planes.static ConvexVolumefull()Return an instance representing the full 3D volume.Get the centroid, or geometric center, of the region or null if no centroid exists or one exists but is not unique.doublegetSize()Get the size of the instance.split(Hyperplane<Vector3D> splitter) Split this instance with the given hyperplane.toTree()Return a BSP tree constructed from the boundaries contained in this instance.Return a new instance transformed by the argument.trim(HyperplaneConvexSubset<Vector3D> convexSubset) Trim the given hyperplane subset to the portion contained inside this instance.Methods inherited from class AbstractConvexHyperplaneBoundedRegion
classify, getBoundaries, getBoundarySize, isEmpty, isFull, project, splitInternal, swapsInsideOutside, toString, transformInternalMethods inherited from class Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, waitMethods inherited from interface BoundarySource3D
getBounds, linecast, linecastFirst, toList, toTriangleMesh, triangleStreamMethods inherited from interface Linecastable3D
linecast, linecastFirstMethods inherited from interface Sized
isFinite, isInfinite
-
Field Details
-
FULL
Instance representing the full 3D volume.
-
-
Constructor Details
-
ConvexVolume
Simple constructor. Callers are responsible for ensuring that the given path represents the boundary of a convex area. No validation is performed.- Parameters:
boundaries- the boundaries of the convex area
-
-
Method Details
-
boundaryStream
Return a stream containing the boundaries for this instance.- Specified by:
boundaryStreamin interfaceBoundarySource<PlaneConvexSubset>- Returns:
- a stream containing the boundaries for this instance
-
getSize
-
getCentroid
Get the centroid, or geometric center, of the region or null if no centroid exists or one exists but is not unique. A centroid will not exist for empty or infinite regions.The centroid of a geometric object is defined as the mean position of all points in the object, including interior points, vertices, and other points lying on the boundary. If a physical object has a uniform density, then its center of mass is the same as its geometric centroid.
- Specified by:
getCentroidin interfaceRegion<Vector3D>- Returns:
- the centroid of the region or null if no unique centroid exists
- See Also:
-
split
Split this instance with the given hyperplane.- Specified by:
splitin interfaceSplittable<Vector3D, HyperplaneBoundedRegion<Vector3D>>- Parameters:
splitter- the hyperplane to split this object with.- Returns:
- result of the split operation
-
toTree
Return a BSP tree constructed from the boundaries contained in this instance. This is a convenience method for quickly constructing BSP trees and may produce unbalanced trees with unacceptable performance characteristics when used with large numbers of boundaries. In these cases, alternate tree construction approaches should be used, such asRegionBSPTree3D.PartitionedRegionBuilder3D.- Specified by:
toTreein interfaceBoundarySource3D- Returns:
- a BSP tree constructed from the boundaries in this instance
- See Also:
-
trim
Trim the given hyperplane subset to the portion contained inside this instance.- Overrides:
trimin classAbstractConvexHyperplaneBoundedRegion<Vector3D, PlaneConvexSubset>- Parameters:
convexSubset- hyperplane subset to trim. Null is returned if the subset does not intersect the instance.- Returns:
- portion of the argument that lies entirely inside the region represented by this instance, or null if it does not intersect.
-
transform
Return a new instance transformed by the argument.- Parameters:
transform- transform to apply- Returns:
- a new instance transformed by the argument
-
full
Return an instance representing the full 3D volume.- Returns:
- an instance representing the full 3D volume.
-
fromBounds
Create a convex volume formed by the intersection of the negative half-spaces of the given bounding planes. The returned instance represents the volume that is on the minus side of all of the given plane. Note that this method does not support volumes of zero size (ie, infinitely thin volumes or points.)- Parameters:
planes- planes used to define the convex area- Returns:
- a new convex volume instance representing the volume on the minus side of all of the bounding plane or an instance representing the full space if the collection is empty
- Throws:
IllegalArgumentException- if the given set of bounding planes do not form a convex volume, meaning that there is no region that is on the minus side of all of the bounding planes.
-
fromBounds
Create a convex volume formed by the intersection of the negative half-spaces of the given bounding planes. The returned instance represents the volume that is on the minus side of all of the given plane. Note that this method does not support volumes of zero size (ie, infinitely thin volumes or points.)- Parameters:
boundingPlanes- planes used to define the convex area- Returns:
- a new convex volume instance representing the volume on the minus side of all of the bounding plane or an instance representing the full space if the collection is empty
- Throws:
IllegalArgumentException- if the given set of bounding planes do not form a convex volume, meaning that there is no region that is on the minus side of all of the bounding planes.
-