Skip to content

Aethernaut/sparse-octree

 
 

Repository files navigation

Sparse Octree

Build status npm version Dependencies

A sparse octree data structure.

Extensive DemoAPI Reference

Installation

npm install sparse-octree

Usage

Custom Octrees
import { Octree, CubicOctant } from "sparse-octree";

export class CubicOctree extends Octree {

	constructor(min, size) {

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

	}

}
Helper
import { Scene } from "three";
import { Octree, OctreeHelper } from "sparse-octree";

const scene = new Scene();

const octree = new Octree();
const octreeHelper = new OctreeHelper(octree);

scene.add(octreeHelper);
Points
import { Vector3 } from "three";
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);

octree.add(new Vector3(0, 0, 0), {});
octree.fetch(new Vector3(0, 0, 0)); // => {}

A full point octree example can be found here.

Features

  • Base Functionality
    • Pointer-based structure
    • Handles octant splitting
    • Adheres to a common octant layout
    • Supports raycasting
    • Supports culling
    • Supports cubic octrees
    • Can be extended to manage any data
  • Provides a point management implementation
  • Provides a helper that can visualise octrees

Contributing

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

About

A sparse octree data structure.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • JavaScript 99.1%
  • Other 0.9%