UNPKG

@jscad/modeling

Version:

Constructive Solid Geometry (CSG) Library for JSCAD

27 lines (21 loc) 804 B
const quickhull = require('../../operations/hulls/quickhull') const create = require('./create') const poly3 = require('../poly3') /** * Construct a new convex 3D geometry from a list of unique points. * @param {Array} uniquePoints - list of points to construct convex 3D geometry * @returns {geom3} a new geometry * @alias module:modeling/geometries/geom3.fromPointsConvex */ const fromPointsConvex = (uniquePoints) => { if (!Array.isArray(uniquePoints)) { throw new Error('the given points must be an array') } const faces = quickhull(uniquePoints, { skipTriangulation: true }) const polygons = faces.map((face) => { const vertices = face.map((index) => uniquePoints[index]) return poly3.create(vertices) }) return create(polygons) } module.exports = fromPointsConvex