UNPKG

@jscad/modeling

Version:

Constructive Solid Geometry (CSG) Library for JSCAD

36 lines (29 loc) 1.2 kB
const ellipsoid = require('./ellipsoid') const { isGTE } = require('./commonChecks') /** * Construct a sphere in three dimensional space where all points are at the same distance from the center. * @see [ellipsoid]{@link module:modeling/primitives.ellipsoid} for more options * @param {Object} [options] - options for construction * @param {Array} [options.center=[0,0,0]] - center of sphere * @param {Number} [options.radius=1] - radius of sphere * @param {Number} [options.segments=32] - number of segments to create per full rotation * @param {Array} [options.axes] - an array with three vectors for the x, y and z base vectors * @returns {geom3} new 3D geometry * @alias module:modeling/primitives.sphere * * @example * let myshape = sphere({radius: 5}) */ const sphere = (options) => { const defaults = { center: [0, 0, 0], radius: 1, segments: 32, axes: [[1, 0, 0], [0, -1, 0], [0, 0, 1]] } let { center, radius, segments, axes } = Object.assign({}, defaults, options) if (!isGTE(radius, 0)) throw new Error('radius must be positive') radius = [radius, radius, radius] return ellipsoid({ center, radius, segments, axes }) } module.exports = sphere