JSPM

  • Created
  • Published
  • Downloads 1321
  • Score
    100M100P100Q162733F
  • License Zlib

A sparse octree data structure.

Package Exports

  • sparse-octree

This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (sparse-octree) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.

Readme

Sparse Octree

Build status npm version Peer dependencies

A sparse, pointer-based octree data structure. For a linear implementation see linear-octree.

Demo · Sandbox · Documentation

Installation

This library requires the peer dependencies iterator-result and math-ds.

npm install iterator-result math-ds
npm install sparse-octree

Usage

Points
import { Vector3 } from "math-ds";
import { PointOctree } from "sparse-octree";

const min = new Vector3(-1, -1, -1);
const max = new Vector3(1, 1, 1);

const octree = new PointOctree(min, max);

const myData = {};
const p1 = new Vector3(0, 0, 0);
const p2 = new Vector3(0, 0, 0.5);

octree.insert(p1, myData);
octree.move(p1, p2);
octree.get(p2); // => myData

octree.remove(p2);
octree.get(p2); // => null
Custom Octrees
import { Octree, CubicOctant } from "sparse-octree";

export class CubicOctree extends Octree {

    constructor(min, size) {

        this.root = new CubicOctant(min, size);

    }

}

Features

  • Pointer-based structure
    • Handles octant splitting
    • Supports cubic octrees for reduced memory usage
    • Dynamic depth
  • Adheres to a common octant layout
  • Supports raycasting
  • Supports culling
  • Can be extended to manage any data
  • Provides a point management implementation

Octree Helper

The octree-helper module provides an octree visualization tool for three.js.

Contributing

Maintain the existing coding style. Add unit tests for any new or changed functionality. Lint and test your code.