diff --git a/Maths/CircularArc.js b/Maths/CircularArc.js new file mode 100644 index 0000000000..27d690bcf4 --- /dev/null +++ b/Maths/CircularArc.js @@ -0,0 +1,31 @@ +import { degreeToRadian } from './DegreeToRadian.js' + +/** + * @function circularArcLength + * @description calculate the length of a circular arc + * @param {Integer} radius + * @param {Integer} degrees + * @returns {Integer} radius * angle_in_radians + * @see https://en.wikipedia.org/wiki/Circular_arc + * @example circularArcLength(3, 45) = 2.356194490192345 + */ +function circularArcLength (radius, degrees) { + return radius * degreeToRadian(degrees) +} +/** + * @function circularArcArea + * @description calculate the area of the sector formed by an arc + * @param {Integer} radius + * @param {Integer} degrees + * @returns {Integer} 0.5 * r * r * angle_in_radians + * @see https://en.wikipedia.org/wiki/Circular_arc + * @example circularArcArea(3,45) = 3.5342917352885173 + */ +function circularArcArea (radius, degrees) { + return Math.pow(radius, 2) * degreeToRadian(degrees) / 2 +} + +export { + circularArcLength, + circularArcArea +} diff --git a/Maths/test/CircularArc.test.js b/Maths/test/CircularArc.test.js new file mode 100644 index 0000000000..1819d30eed --- /dev/null +++ b/Maths/test/CircularArc.test.js @@ -0,0 +1,19 @@ +import { circularArcLength, circularArcArea } from '../CircularArc' + +describe('circularArcLength', () => { + it('with natural number', () => { + const arcLengthOfOneThirty = circularArcLength(1, 30) + const arcLengthOfThreeSixty = circularArcLength(3, 60) + expect(arcLengthOfOneThirty).toBe(0.5235987755982988) + expect(arcLengthOfThreeSixty).toBe(3.141592653589793) + }) +}) + +describe('circularArcArea', () => { + it('with natural number', () => { + const arcAreaOfOneThirty = circularArcArea(1, 30) + const arcAreaOfThreeSixty = circularArcArea(3, 60) + expect(arcAreaOfOneThirty).toBe(0.2617993877991494) + expect(arcAreaOfThreeSixty).toBe(4.71238898038469) + }) +})