Skip to content

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

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›