UNPKG

@jscad/modeling

Version:

Constructive Solid Geometry (CSG) Library for JSCAD

36 lines (31 loc) 1.02 kB
const vec3 = require('../../../maths/vec3') const create = require('./create') /** * Create a slice from the given points. * * @param {Array} points - list of points, where each point is either 2D or 3D * @returns {slice} a new slice * @alias module:modeling/extrusions/slice.fromPoints * * @example * const points = [ * [0, 0], * [0, 10], * [0, 10] * ] * const slice = fromPoints(points) */ const fromPoints = (points) => { if (!Array.isArray(points)) throw new Error('the given points must be an array') if (points.length < 3) throw new Error('the given points must contain THREE or more points') // create a list of edges from the points const edges = [] let prevpoint = points[points.length - 1] points.forEach((point) => { if (point.length === 2) edges.push([vec3.fromVec2(vec3.create(), prevpoint), vec3.fromVec2(vec3.create(), point)]) if (point.length === 3) edges.push([prevpoint, point]) prevpoint = point }) return create(edges) } module.exports = fromPoints