editor › Globals › BoundingVolumeHierarchy
Class: BoundingVolumeHierarchy ‹T›
This class represents is a tree that can be used to optimize raycasts on a (large) number of objects. https://en.wikipedia.org/wiki/Bounding_volume_hierarchy
Type parameters
▪ T
Hierarchy
- BoundingVolumeHierarchy
Index
Constructors
Properties
Methods
- _buildTopDown
- _intersectRay
- _intersectSphere
- _splitElementsByAABB
- getDepth
- intersectRay
- intersectSphere
Constructors
constructor
+ new BoundingVolumeHierarchy(elements: readonly T[], aabbs: AABB[]): BoundingVolumeHierarchy
Defined in src/util/BoundingVolumeHierarchy.ts:19
Construct a new BoundingVolumeHierarchy and fill it using a top-down approach.
Parameters:
| Name | Type | Description |
|---|---|---|
elements |
readonly T[] | - |
aabbs |
AABB[] | - |
Returns: BoundingVolumeHierarchy
Properties
Private Readonly rootNode
• rootNode: INode‹T›
Defined in src/util/BoundingVolumeHierarchy.ts:19
Methods
Private _buildTopDown
▸ _buildTopDown(elements: readonly T[], aabbs: AABB[]): INode‹T›
Defined in src/util/BoundingVolumeHierarchy.ts:73
Parameters:
| Name | Type |
|---|---|
elements |
readonly T[] |
aabbs |
AABB[] |
Returns: INode‹T›
Private _intersectRay
▸ _intersectRay(ray: Ray, node: INode‹T›, inverseRayDirection: Vector3, resultArray: readonly T[]): readonly T[]
Defined in src/util/BoundingVolumeHierarchy.ts:52
Parameters:
| Name | Type |
|---|---|
ray |
Ray |
node |
INode‹T› |
inverseRayDirection |
Vector3 |
resultArray |
readonly T[] |
Returns: readonly T[]
Private _intersectSphere
▸ _intersectSphere(point: Vector3, radius: number, node: INode‹T›, resultArray: readonly T[]): readonly T[]
Defined in src/util/BoundingVolumeHierarchy.ts:174
Parameters:
| Name | Type | Default |
|---|---|---|
point |
Vector3 | - |
radius |
number | - |
node |
INode‹T› | - |
resultArray |
readonly T[] | [] |
Returns: readonly T[]
Private _splitElementsByAABB
▸ _splitElementsByAABB(elements: readonly T[], aabbs: AABB[]): object
Defined in src/util/BoundingVolumeHierarchy.ts:100
Parameters:
| Name | Type |
|---|---|
elements |
readonly T[] |
aabbs |
AABB[] |
Returns: object
-
left(): object
-
aabbs: AABB[]
-
elements: readonly T[]
-
middle(): object
-
aabbs: AABB[]
-
elements: readonly T[]
-
right(): object
-
aabbs: AABB[]
-
elements: readonly T[]
getDepth
▸ getDepth(): number
Defined in src/util/BoundingVolumeHierarchy.ts:36
Returns: number
intersectRay
▸ intersectRay(ray: Ray): readonly T[]
Defined in src/util/BoundingVolumeHierarchy.ts:30
Parameters:
| Name | Type |
|---|---|
ray |
Ray |
Returns: readonly T[]
intersectSphere
▸ intersectSphere(point: Vector3, radius: number): ReadonlyArray‹T›
Defined in src/util/BoundingVolumeHierarchy.ts:48
Parameters:
| Name | Type |
|---|---|
point |
Vector3 |
radius |
number |
Returns: ReadonlyArray‹T›