Skip to content
On this page

module BTree.ts

type BTreeNode

ts
export type BTreeNode = {
    depth: number;
    dataPoint: Point;
    screenPoint: NumericPoint;
    screenValue: number;
    originalIndex: number;
};

a node in the BTree k

  • depth number How many branches down the tree is this leaf? 0 == tree root
  • dataPoint Point value of this node in data-space
  • screenPoint NumericPoint value of this node in screen-space
  • screenValue number single axis value of screenPoint
  • originalIndex number original position of this point in the source data

type BTree

ts
export type BTree = {
  node: BTreeNode;
  left: BTree | null;
  right: BTree | null;
};

A 1-dimensional binary tree, used to index data and screenspace points for fast querying

  • node BTreeNode
  • left BTree
  • right BTree

type BTreeSearchResult

ts
export type BTreeSearchResult = {
  node: BTreeNode;
  screenDistanceSq: number;
};

A search result from a BTree, returns the tree node that is closest as well as the squared distance in screen-space

  • node BTreeNode
  • screenDistanceSq number

interface BTreeSorter

ts
export interface BTreeSorter {
  (a: BTreeNode, b: BTreeNode): number; 
}

Generic interface for sorting nodes in the BTree

  • undefined undefined

function buildBTree

ts
(nodes: BTreeNode[], depth?: number, nodeSorter?: BTreeSorter) =>
BTree

Constructs a new BTree given an array of unsorted nodes. This function is recursive.

Parameters

  • nodes BTreeNode

    usually you'd map datapoints to this structure

  • depth number

    current recursive depth to build. leave this at 0 unless you're doing something "interesting"

  • nodeSorter BTreeSorter

    see sorter docs, a function for ranking nodes

Returns BTree

function searchBTree

ts
(queryValue: number, index: BTree, maxDistance?: number, depth?:
number, bestMatch?: BTreeSearchResult) => BTreeSearchResult

Parameters

Returns BTreeSearchResult

Released under the MIT License.