TData - Type of data used by the BSP treeTBoundary - Type of boundary used by the BSP treeTRay - Ray data typeTCollision - Data type describing the collisions between ray and data in the BSP treepublic abstract class BspRayCaster<TData,TBoundary,TRay,TCollision> extends Object implements Serializable
Performs ray casting in a BSP tree.
Collisions are ordered by distance if the following conditions hold:
#getCollisions(Object, Object) return collision ordered by distance.
| Modifier and Type | Field and Description |
|---|---|
boolean |
doDuplicateCollisionsOccur |
IConstBspTree<TData,TBoundary> |
tree |
| Constructor and Description |
|---|
BspRayCaster(IConstBspTree<TData,TBoundary> tree,
boolean doDuplicateCollisionsOccur)
Constructor
|
| Modifier and Type | Method and Description |
|---|---|
abstract double |
computeSideSignedDistanceSquare(TBoundary boundary,
TRay ray)
Compute signed square of distance of intersection from ray origin
|
TCollision |
getCollision(TRay ray)
Get a collision with the ray
|
Iterator<TCollision> |
getCollisionIterator(TRay ray)
Get iterator over all collision with the ray
|
List<TCollision> |
getCollisions(TRay ray)
Get all collision with the ray
|
abstract List<TCollision> |
getCollisions(TRay ray,
double minDistanceSquare,
double maxDistanceSquare,
TData data)
Get collision list
|
public final IConstBspTree<TData,TBoundary> tree
public final boolean doDuplicateCollisionsOccur
public BspRayCaster(IConstBspTree<TData,TBoundary> tree, boolean doDuplicateCollisionsOccur)
tree - BSP tree to perform ray casting on.doDuplicateCollisionsOccur - Whether collisions are unique.
Some BSP tree implementations can detect the same collision in multiple leaf data.
If this is the case, TCollision should implement suitable Object.hashCode() and Object.equals(Object),
so that duplicates can be removed efficiently.public TCollision getCollision(TRay ray)
ray - ray to castpublic List<TCollision> getCollisions(TRay ray)
ray - ray to castpublic Iterator<TCollision> getCollisionIterator(TRay ray)
ray - ray to castpublic abstract double computeSideSignedDistanceSquare(TBoundary boundary, TRay ray)
boundary - boundary to intersectray - ray to intersectpublic abstract List<TCollision> getCollisions(TRay ray, double minDistanceSquare, double maxDistanceSquare, TData data)
ray - ray to collide withdata - data to search for collisionsminDistanceSquare - square of minimum distance for eligible collisionmaxDistanceSquare - square of maximum distance for eligible collisionCopyright © 2019 AMIS research group, Faculty of Mathematics and Physics, Charles University in Prague, Czech Republic. All rights reserved.