UNPKG

@jscad/modeling

Version:

Constructive Solid Geometry (CSG) Library for JSCAD

51 lines (42 loc) 1.26 kB
const Node = require('./Node') const PolygonTreeNode = require('./PolygonTreeNode') // # class Tree // This is the root of a BSP tree. // This separate class for the root of the tree in order to hold the PolygonTreeNode root. // The actual tree is kept in this.rootnode class Tree { constructor (polygons) { this.polygonTree = new PolygonTreeNode() this.rootnode = new Node(null) if (polygons) this.addPolygons(polygons) } invert () { this.polygonTree.invert() this.rootnode.invert() } // Remove all polygons in this BSP tree that are inside the other BSP tree // `tree`. clipTo (tree, alsoRemovecoplanarFront = false) { this.rootnode.clipTo(tree, alsoRemovecoplanarFront) } allPolygons () { const result = [] this.polygonTree.getPolygons(result) return result } addPolygons (polygons) { const polygontreenodes = new Array(polygons.length) for (let i = 0; i < polygons.length; i++) { polygontreenodes[i] = this.polygonTree.addChild(polygons[i]) } this.rootnode.addPolygonTreeNodes(polygontreenodes) } clear () { this.polygonTree.clear() } toString () { const result = 'Tree: ' + this.polygonTree.toString('') return result } } module.exports = Tree