UNPKG

@jscad/modeling

Version:

Constructive Solid Geometry (CSG) Library for JSCAD

39 lines (31 loc) 1.3 kB
const { TAU } = require('../maths/constants') const ellipse = require('./ellipse') const { isGTE } = require('./commonChecks') /** * Construct a circle in two dimensional space where all points are at the same distance from the center. * @see [ellipse]{@link module:modeling/primitives.ellipse} for more options * @param {Object} [options] - options for construction * @param {Array} [options.center=[0,0]] - center of circle * @param {Number} [options.radius=1] - radius of circle * @param {Number} [options.startAngle=0] - start angle of circle, in radians * @param {Number} [options.endAngle=TAU] - end angle of circle, in radians * @param {Number} [options.segments=32] - number of segments to create per full rotation * @returns {geom2} new 2D geometry * @alias module:modeling/primitives.circle * @example * let myshape = circle({radius: 10}) */ const circle = (options) => { const defaults = { center: [0, 0], radius: 1, startAngle: 0, endAngle: TAU, segments: 32 } let { center, radius, startAngle, endAngle, segments } = Object.assign({}, defaults, options) if (!isGTE(radius, 0)) throw new Error('radius must be positive') radius = [radius, radius] return ellipse({ center, radius, startAngle, endAngle, segments }) } module.exports = circle